机器学习基石(林轩田)第十五章 笔记与感悟总结

15.1 Validation - Model Selection Problem

我们为了解决过拟合的问题,我们提出了regularization。

我们不只关注Ein,而是在Ein上面加上一个regularizer,一起做minimize。

这样可以有效的减小model complexity


我们面临着很多的选择,之间的组合会产生组合爆炸的。


输入:各种g和演算法。

输出:最好的那个模型,能让Eout变小。

表示选择了最好的那个模型。

显然,不能使用视觉的方法。



如果只考虑Ein的话,认为Ein越小越好,是不对的。

因为高维的hypothesis肯定要比低维的好; =0(忽视regularizer项)一定要比!=0要好

而且,我们知道Hypothesis的大小决定了模型的复杂度。


然后我们想,干脆直接用一些测试数据上跑一遍模型,哪个模型好久选哪个。

根据公式可以保障。

但是提前用测试资料来验证自己的模型。属于提前偷看试卷,然后再答题。属于自欺欺人的一种做法,因此不适宜。



入手的数据要分成训练集和测试集。能够使表现介于Ein 和 Etest。




15.2 Validation - Validation

随机地从样本种抽出K个样本,那么validation set种的分布也是P(x, y)

原来的有两个角色,一个是算Ein,另一个是丢到演算法里得到g。这两种角色会相互“污染”。

而通过将数据分成两个角色,可以避免“污染”。



很直观,将两种角色分开了。

因为我们将数据分成了两个部分,因此,当我们找到最好的g时,

最后再用全部的数据再训练一下。

上面的- 表示用的训练集(数据量少)。




表示只考虑Ein,表示cheating,表示用训练集,表示用训练集,但是最后再用全部的数据再训练一次。

为什么?因为用的数据少了。





15.3 Validation - Leave-one-out cross validation

我们上一节既要k大,又要k小。我们就先假设k=1

因为k=1,表示只留下了一笔资料,因此我们用(n)表示第n笔资料。

表示在第n笔资料上的错误。

我们能不能用来告诉我们Eout有多好呢?一笔可能不够,我们就一笔一笔的算,然后取平均值。


当我们用线性的模型,和用常数的模型。

原本是用validation error,现在就可以用错误来表示。


表示期望。

注意结论:能够用来衡量



横轴表示多项式的维数,纵轴表示错误。

结论是表现(更平滑,且避免了Overfitting)的比要好。



15.4 Validation - V-Fold cross validation

现在来讨论的可能的错误是什么。

Eout每一轮都要用到N-1,计算量太大。除非有些特殊的场合,例如linear regression有closed-form形式,能很快算出来。

其次,的曲线跳动很大。我们想要的是稳定的曲线。


我们想通过分组,分成4组。这样就不用做1000次的力气。


V-Fold 可以使曲线比较平滑一些。


 






猜你喜欢

转载自blog.csdn.net/jason__liang/article/details/80491287