统计学习的方法是基于数据构建统计模型,即已知数据,反推生成数据的模型,从而对数据进行预测与分析。根据训练数据是否有标记信息将学习任务分为:监督学习和无监督学习。分类和回归都是监督学习的范畴。无监督学习常见的有聚类和关联规则。
监督学习,这种情况下统计学习的方法可以概括如下:从给定的训练数据出发,假设数据是独立同分布产生的;并 且假设要学习的模型属于某个函数的集合,称为假设空间(hypothesis space);应用某个 评价准则(evaluation criterion),从假设空间中选取一个最优的模型,使它对已知训练数 据及未知测试数据(test data)在给定的评价准则下有最优的预测;
这样,统计学习方法包括模型的假设空间、模型选择的准则以及模型学习的算 法,称其为统计学习方法的三要素,——模型、策略、算法。
模型可以是概率模型或非概率模型,由条件概率分布P(Y|X)或决策函数Y=f(X)表示,随具体学习方法而定。对具体的输入进行相应的输出预测时,写作P(y|x)或Y=f(x)。
我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error)。定义:
显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新样本时才能做出正确的判别。然而,当学习器把训练集学得“太好”的时候,即把一些训练样本的自身特点当做了普遍特征;同时也有学习能力不足的情况,即训练集的基本特征都没有学习出来。我们定义:
可以得知:在过拟合问题中,训练误差十分小,但测试误差教大;在欠拟合问题中,训练误差和测试误差都比较大。目前,欠拟合问题比较容易克服,例如增加迭代次数等,但过拟合问题还没有十分好的解决方案,过拟合是机器学习面临的关键障碍。
如上所述,我们希望得到的是泛化误差小的学习器,理想的解决方案是对模型的泛化误差进行评估,然后选择泛化误差最小的那个学习器。通常我们以“测试集”上的“测试误差”作为“泛化误差”的近似。
如上所述,我们希望得到的是泛化误差小的学习器,用一个“测试集”的“测试误差”来作为“泛化误差”的近似,因此我们需要对初始数据集进行有效划分,划分出互斥的“训练集”和“测试集”。下面介绍几种常用的划分方法:
1.留出法
将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T。需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入额外的偏差,常见的做法是采取分层抽样。同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法。
2.交叉验证法
将数据集D划分为k个大小相同的互斥子集,满足D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j),同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。
与留出法类似,将数据集D划分为K个子集的过程具有随机性,因此K折交叉验证通常也要重复p次,称为p次k折交叉验证,常见的是10次10折交叉验证,即进行了100次训练/测试。特殊地,当划分的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。
3.自助法
我们希望评估的是用整个D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。“自助法”正是解决了这样的问题。
自助法的基本思想是:给定包含m个样本的数据集D,每次随机从D 中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到。重复执行m 次,就可以得到了包含m个样本的数据集D’。可以得知在m次采样中,样本始终不被采到的概率取极限为:
这样,通过自助采样,初始样本集D中大约有36.8%的样本没有出现在D’中,于是可以将D’作为训练集,D-D’作为测试集。自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。
大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。
最后需要注意的是:当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。
经验风险最小化的公式定义为:
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{e m p}(f)=\frac{1}{N} \sum_{i=1}^{N} L\left(y_{i}, f\left(x_{i}\right)\right) Remp(f)=N1i=1∑NL(yi,f(xi))
结构风险最小化的公式定义为:
R s r m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{s r m}(f)=\frac{1}{N} \sum_{i=1}^{N} L\left(y_{i}, f\left(x_{i}\right)\right)+\lambda J(f) Rsrm(f)=N1i=1∑NL(yi,f(xi))+λJ(f)
可以看到,结构风险在经验风险的基础上加上了表示模型复杂度的正则项或惩罚项, 防止在数据样本小或者模型能力强的情况下出现过拟合。 J ( f ) J(f) J(f) 为模型的复杂 度, 模型 f f f 越复杂, J ( f ) J(f) J(f) 越大。 λ > = 0 \lambda>=0 λ>=0 是权衡经验风险和模型复杂度的系数。