首页 > 代码库 > 加州理工学院公开课:机器学习与数据挖掘_Validation(第十三课)

加州理工学院公开课:机器学习与数据挖掘_Validation(第十三课)

课程简介

主要介绍如何通过验证来评估模型的性能及如何通过验证选取模型的问题。介绍的方法有:模型选择、交叉验证。

课程提纲:

1、The Validation Set

2、Model Selection

3、Cross Validation

1、  The Validation Set

我们的目的就是要找到使得Eout 最小的参数。由于无法直接知道Eout 的值,因此需要通过间接的方法。

通过前面的课程我们知道:Eout = Ein + Overfit Penalty (过拟化的代价)

通过Regulation 可以降低Overfit Penalty 的影响。

上面的方法是通过样本数据进行求解的。下面看看利用样本外的数据如何近似Eout。

首先我们需要样本外的数据。首先我们假设只有一个样本外的数据:(x,y)

则 e(h(x),y) 就是我们对Eout的近似。e 是度量距离的函数。可以用方差或任何适当的方法。

e 的数学期望:

E(e(h(x,y))) = Eout(h)

         e的近似能力用方差表示:var(e(h(x),y)) = (e – Eout(h))^2 = a ^2

由于只有一个点,因此近似能力无法保证。但是如果我们有很多个点,则情况就会有所改善:比如现在我们拥有一个样本外的数据集(K 个数据),则 Eval(h) = 1/K(e1+e2+…+ek)

用Eval 近似 Eout。

同样有:


对于上面的第二行的,本来应该加上交叉项的,但是由于我们的数据点都是随机的,所以交叉项的期望是 0,因此没有写下来。

显然,当 K 增大的时候,Eval 就能更好的近似 Eout ,但问题是我们的 样本外数据是如何得到的?

一般情况下,我们的数据是有限的,样本外数据其实是通过减少训练数据样本得到的。因此当我们增大K 的同时,Eout 也在增加(因为样本内数据减少了),所以虽然我们能够很好地近似Eout ,但是由于Eout地增加,这个近似已经失去了意义了。

那么问题来了,我们该如何选择 K ?

K small –> 近似能力差

K-Big  --> Eout 增大

经验法则:

K = N/5

为了更好地利用有限的数据集,可以通过上述方法评估 h 的性能,如果好,则用所有的数据重新进行训练,这样就可以利用所有的数据了。如果将此方法进行扩展,则得到了下面的方法。

2、Model Selection

主要思想:通过从样本数据中抽取出部分数据作为样本外的数据,利用剩下的数据训练多个候选模型。然后通过样本外的数据进行检验,取性能最好的(Evalhi())最小的模型作为最终模型,然后用所有的样本数据对该模型进行重新训练。得到最终结果。

但是由于采集到的数据无可避免的存在噪声。因此上述得到的最好的模型不一定是最好的(类比过拟化里的内容)。为了能够更好地找到最好的模型。我们希望首先:K 越小越好(K 越小,训练的数据就会增加,得到的Eout就会小,过拟化程度也会降低),同时我们希望K 越大越好。K 越大,Eval(h)就能更好地近似Eout。然而这个如此矛盾的问题能否被很好地解决?该如何解决?

答案是肯定的。通过交叉验证能够很好地解决该矛盾。但是必须牺牲训练时间。

3、Cross Validation

主要思想:通过某种策略每次从训练中抽取不同的小部分(比如1个数据)数据作为样本外数据,剩下的数据作为训练数据进行训练。进行上述过程多次(比如N 次,N为样本数据大小)。然后对每次得到的结果进行求平均,从而得出每个模型的Eval(h)。由于每次只是抽取掉一小部分(K small),对模型的训练影响很小。通过多次重复,可以使得计算Eval(h)能够利用样本的多个数据(K big)。

从而能够达到很好地预测性能。跟第二讲相似。最后我们找到表现最好的一个模型,利用全部数据再次进行训练,得到最终结果。

每次训练的时候,样本外的数据给如何选择?应该进行多少次的训练才可以结束?

一般来说,训练的次数= 样本的总大小/样本外数据.大小

每次应该选择多少个数据作为样本外数据呢?

这个不同的需求有不同选择,但是一个经验法则是:

样本外数据大小 = 样本的总大小/10.

至于样本外数据应该如何选择的问题,可以参考的方法有:

1、  每次选择不一样的数据作为样本外数据,数据不重复选择。

2、  每次随机选择一定数量的样本外数据。

加州理工学院公开课:机器学习与数据挖掘_Validation(第十三课)