本文是笔者学习李航老师的经典教材《统计学习方法》第一章的学习笔记,分享在此,作为机器学习系列的开篇文章,在本系列中,将会逐一总结介绍主要的机器学习算法的基本原理、基于Python的具体实现、使用sklearn等第三方库的调用实践。
1.统计学习的基本概念
1-1.统计学习的定义
统计学习是关于计算机基于数据构建概率统计模型,并运用模型对数据进行预测与分析的一门科学,又称统计机器学习。
1-2.统计学习的特点
1)建立在计算机及网络上;
2)以数据为研究对象;
3)用于对数据进行预测与分析;
4)应用统计方法构建模型并应用模型进行预测与分析;
5)是概率论、统计学、信息论、计算理论、最优化理论及计算机科学等多个领域的交叉学科。
1-3.统计学习的对象
对象就是数据。
数据的形式是多样的:结构化数据,非结构化的文字、图像、音频、视频等等。
1-4.统计学习的目的
用于对数据进行预测与分析,特别是对未知的新数据进行预测与分析。
1-5.统计学习的方法
主要分为四种:监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi-supervised learning)、强化学习(reinforcement learning)。
1-6.统计学习的步骤
1)得到一个有限的训练数据集合;
2)确定包含所有可能的额模型的假设空间,即学习模型的集合;
3)确定模型选择的准则,即学习的策略;
4)实现求解最优模型的算法,即学习的算法;
5)通过学习方法选择最优模型;
6)利用学习的最优模型对新数据进行预测或分析。
2.监督学习
2-1.定义
监督学习利用训练数据集学习一个模型,再用这个模型对测试样本集进行预测。
监督学习分为学习和预测两个阶段。
2-2.假设
监督学习中,假设训练数据与测试数据是独立同分布的。
2-3.过程
学习的过程就是找到一个从输入到输出的映射,这个映射就是模型。
模型可以表示概率模型和非概率模型,概率模型可表示为条件概率分布\(P(Y|X)\),非概率模型可表示为决策函数\(Y=f(X)\)。
所有的模型的集合称为假设空间,由于模型是输入到输出的映射,因此假设空间就是从输入空间到输出空间的映射。
2-4.目的
学习的目的就是找到最好的模型。
3.统计学习的三要素
统计学习具有三要素: 方法=模型+策略+算法
3-1.模型
模型就是要学习的条件概率分布或者决策函数。
3-2.策略
策略就是选取最优模型的准则和方法。
(1)损失函数
损失函数(loss function)度量模型一次预测的好坏。
以非概率模型为例,模型\(f\)会针对输入\(X\)给定输出\(f(X)\),这个输出值与实际值Y之间可能有差异,用损失函数(或称代价函数)来度量这种差异的程度,记作\(L(Y,f(X))\)。
常用的损失函数:
1)0-1损失函数:
2)平方损失函数:
3)绝对损失函数:
4)对数损失函数:
损失函数取值越小,模型就越好。
(2)风险函数
风险函数度量平均意义下模型预测的好坏。
风险函数(risk function),其实就是损失函数的期望,也称为期望风险(expected risk)、期望损失(expected loss)。
学习的目的不是选择损失函数最小的模型,而是选择风险函数最小的模型。
(3)经验风险
经验风险(empirical risk)是指模型关于训练集的平均损失,也称为经验损失(empirical loss)。
根据大数定理,当样本容量n趋于无穷时,经验风险就趋近于期望风险。因此,就用经验风险去估计期望风险。
但是,实际情况下,由于样本容量有限,使用经验风险估计期望风险的效果并不好,这时就需要做一些校正。
因此就形成了两种选择模型的策略:经验风险最小化、结构风险最小化。
(4)经验风险最小化
经验风险最小化(empirical risk minimization, ERM)策略认为,经验损失最小的模型就是最优的模型。
当样本容量足够大,经验风险最小化策略可以保证有很好的学习效果。
最大似然估计就是经验风险最小化的例子。
(5)结构风险最小化
当样本容量很小时,经验风险最小化的学习效果并不是很好,就会产生过拟合。
结构风险最小化(structural risk minimization, SRM)就是为了防止过拟合提出的策略,其实质就是正则化(regularization)。
结构风险就是在经验风险上增加表示模型复杂度的正则化项(regularization),或称为惩罚项(penalty term)。
其中\(J(f)\)为模型的复杂度,模型\(f\)越复杂,复杂度就越大;反之,模型\(f\)越简单,复杂度就越小。复杂度\(J(f)\)表示了对复杂模型的惩罚。\(\lambda \geq0\)是系数,用以权衡经验风险和模型复杂度。结构风险小需要经验风险与模型复杂度同时小。结构风险小的模型一般对训练数据和未知的测试数据都具有较好的预测效果。
结构风险最小化策略认为,结构风险最小的模型就是最优的模型。
最大后验概率估计就是结构风险最小化的例子。
(6)小结
监督学习问题就是经验风险函数或结构风险函数的最优化问题。
3-3.算法
算法就是求解上述最优化问题的计算方法。
4.模型评估与选择
4-1.训练误差与测试误差
假设学习到的模型是\(Y=\hat{f}(X)\)。
训练误差(training error)就是模型\(Y=\hat{f}(X)\)关于训练数据集的平均损失:
同理,测试误差(test error)就是模型\(Y=/hat{f}(X)\)关于测试数据集的平均损失:
训练误差本质上并不重要,测试误差则是一个非常重要的概念,反映了模型对未知的测试数据集的预测能力。
两个模型,测试误差小的就是更好的模型。
4-2.泛化能力与泛化误差
模型对未知数据的预测能力,就称为泛化能力,因此,模型对未知数据预测的误差即为泛化误差(generalization error)。
泛化误差反映了模型的泛化能力,如果一个模型比另一个模型具有更小的泛化误差,那么这个模型就更有效,本质上泛化误差是模型的期望风险,一般使用测试误差来估计。
4-3.过拟合与模型复杂度
过拟合(over-fitting)是指学习的模型复杂度过高,导致对已知的训练数据预测的很好,但对未知的测试数据预测很差的现象。
与过拟合相对的就是欠拟合(under-fitting),它是指学习的模型过于简单,导致连已知的训练数据都不能预测的很好。
本质上来说,过拟合就是模型的学习能力过于强大,把训练数据中不太一般性的特征都学习到了,而欠拟合就是模型的学习能力低下。
当模型的复杂度增大时,训练误差会主键减少并趋向于0,而测试误差会先减小而后又增大;当选择的模型复杂度过大时,过拟合的现象就会发生。所以,为了防止模型的过拟合,就要选择复杂度适当的模型,以达到测试误差最小的学习目的。有两种常用的模型选择方法:正则化和交叉验证。
4-4.正则化
正则化(regularization)就是结构风险最小化策略的具体实现。
正则项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。
正则化的一般形式:
第一部分是经验风险,第二部分是正则化项,\(\lambda\geq0\)为调整二者关系的系数。
正则化项可以取不同的形式。
在回归问题中,正则化项可以是参数向量的\(L_1\)范数:
也可以是参数向量的\(L_2\)范数:
正则化的目的是选择经验风险与模型复杂度同时较小的模型。
4-5.交叉验证
当样本数据充足时,进行模型选择的一种简单方法是随机地将数据集切分成三部分,分别为训练集(training set)、验证集(validation set)和测试集(test set),其中训练集用来训练模型,验证集用于模型的比较选择,测试集则用来对模型进行最终的评估。
但是,大多数实际应用中,数据并不是充足的,这时候可以采用交叉验证的方法。
交叉验证的基本思想是重复的使用数据,将给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此进出上反复进行训练、测试以及模型选择。
(1)简单交叉验证
方法:随机地将数据按照7:3或者6:4划分成两部分,一部分作为训练集,另一部分作为测试集,然后用训练集对各个模型进行训练,再使用测试集评估各个模型的测试误差,选出其中测试误差最小的模型。
(2)K折交叉验证
方法:随机地将数据切分成K等份互不相交的自己,然后使用其中的K-1份作为训练集,使用剩下的1份作为测试集测试模型,重复这一过程K次,最后选出K次平均测试误差最小的模型。
(3)留一交叉验证
方法:留一交叉验证是一种特殊的K折交叉验证,K=样本容量,往往是在数据缺乏的情况下使用。