AI从零开始之预测效果评估

我们知道统计学有各种各样的方法可以用来处理数据,那么对一个数据集,各种统计学方法预测的精确度如何来评估呢?这就是本文重点讨论的内容。

一般来说,对回归(regression)问题,最常见的测量方法就是均方差(mean square error, MSE),它可以用下面的公式来表示:

MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{f}(x_{i}))^{2}

这个公式中, \hat{f}(x_{i})就是第i个观察数据的预测值,这样来看,当我们的预测值越接近真实的y,那么MSE就越小,反之则越大。当然,我们知道上述公式其实是利用training数据来进行计算的,所以,我们更准确地应该称之为training MSE。

这个时候,让我们静心想一想,其实我们并不关注这个model对我们training 数据表现的有多好,我们更关注地的应该是他对我们真实想预测的数据的表现。因此,一般来说,我们会通过一系列测试的数据集来验证我们的model最终的效果,也就是测试数据的MSE,而不是training data来进行验证。那假如我们没有测试数据集怎么办呢,我们简单地使用training MSE是否可行呢?

我们来看一个例子,如下图一所示:

图一 X和Y分布图

假如我们已经知道了真实的f是如图一种的黑色线所示,然后我们通过不同的统计学方法来预估f,这些方法的flexibility不同,其中橙色的线是我们通过线性回归,蓝色和绿色的线是通过光顺样条(smoothing splines)来预估的,当然蓝色和绿色的线的smooth level不同,我们可以看到绿色的线其实flexibility其实更大,当然他和我们的观察点的符合度也更好。但是,相比蓝色的线,他和真实的f之间的误差其实是更大的。

我们来看下面的图二:

图二 flexibility和均方差之间的关系图

这个图中的灰色的线其实是针对training 数据的MSE的情况,我们可以看到随着flexibility的提高,针对training data的MSE是会逐步减少的,慢慢的可以逐步达到一个很小的值。而红色的线是表示真正的测试数据的MSE的情况,因为我们例子中真实的f是一个非线性的情况,所以在flexibility比较小也就是线性回归的情况下,MSE是比较大的,随着flexibility的增大,这个MSE会逐步减小,到了一个最小点之后,flexibility增大反而会使得MSE变得更大。图中水平的虚线其实就是我们之前提到过的不可避免的误差(irreducible error),这一误差在任何方法中都会存在的。

一般来说,当training MSE非常小,但是测试MSE非常大的时候,我们称之为overfitting,一般来说这就是我们太想去train一个model来适配training data,甚至过度去满足那些random的数据特性了。

上面的例子我们看到的是一个f是非线性的情况,现在我们来看另外一个例子,这个例子中真实的f是一个接近线性的情况:

图三 真实f是接近线性的情况

图三中仍然黑色的线是我们的真实的f的情况,橙色是我们的线性回归的情况,绿色和蓝色仍然是不同的smoothness的光顺样条来预估。我们可以如下图四所示,我们的training MSE并没有什么变化,但是test的MSE因为本身真实的f就比较接近线性,因此在开始的线性回归中他的test MSE其实误差并不大,这样只是有一个很小的下降就可以到最低点了,而随着flexibility的增加,可以看到后面的test MSE的情况也会变得越来越不好。

图四 接近线性的f的情况下的flexibility和MSE的关系

另外一种极端的情况如下图五所示,真实的f是非常非线性的,这种情况下请示线性回归的开始他的test MSE就会特别大,而随着flexibility的增加后面的test的MSE的也只是小幅度的增加。

图五 特别非线性的f

其实从我们上面的几种情况来看,我们最理想的状况就是找到那个测试MSE最低点,而事实上,大多数情况我们都没有测试数据,如何来找到测试MSE最低点呢,一个很重要的方法就是交叉验证(cross-validation),这个我们会在后面的章节中详细介绍。

至此,本文所想和大家探讨的关于预测质量的内容就全部结束了,希望对大家有用。

转载请注明出处:http://www.softlifelogging.com/2018/06/05/ai从零开始之预测效果评估/

更多精彩内容,敬请关注公众号: 随手记生活

No Comments

Leave a Reply

Your email address will not be published.