写在前面
本系列笔记主要记录《统计学习方法》中7种常用的机器学习分类算法,包括感知机,KNN,朴素贝叶斯,决策树,逻辑斯谛回归与最大熵模型,SVM,boosting。
课本还涉及到3种算法是关于概率模型估计和标注问题的,暂未列入学习计划,所以笔记中没有涉及,包括EM算法,隐马尔可夫模型,条件随机场(CRF)。
所以本系列笔记总共包括9篇笔记:
1篇概论(对应书本第1章)
7篇算法(对应书本第2-8章)
1篇总结(对应书本第12章)
统计学习
学习:Herber A. Simon曾对“学习”给出以下定义:“如果一个系统能够通过执行某个过程改进它的性能,这就是学习”。
统计学习:统计学习就是计算机系统通过运用数据及统计方法提高系统性能的机器学习。现在人们提及的机器学习,往往就是指统计机器学习。
统计学习的前提:统计学习关于数据的基本假设是同类数据具有一定的统计规律性。由于它们具有统计规律性,所以可以用概率统计方法来加以处理。比如,可用随机变量描述数据中的特征,用概率分布描述数据的统计规律。
统计学习包括:监督学习,非监督学习,半监督学习,强化学习,本书主要讨论监督学习。
监督学习
三种任务:输入输出均为连续变量的预测问题称为回归问题,输出变量为有限个离散变量的预测问题称为分类问题,输入输出均为变量序列的预测问题称为标注问题。
监督学习的假设:假设输入与输出的随机变量(X)和(Y)遵循联合概率分布(P(X, Y))。在学习的过程中,假定这一联合概率分布存在,训练数据与测试数据被看作是依联合概率分布(P(X, Y))独立同分布产生的。
独立同分布:随机过程中任何时刻的取值都为随机变量,如果这些随机变量服从同一分布,并且相互独立(X1的取值不影响X2的取值,X2的取值不影响X1的取值),那么这些随机变量是独立同分布的。
统计学习三要素之一:模型
模型和假设空间:统计学习首要考虑的问题是学习什么样的模型。监督学习中,模型就是所要学习的条件概率分布或决策函数,模型的假设空间包含所有可能的条件概率分布或决策函数。
决策函数族:假设空间可以定义为决策函数的集合,(mathcal{F} = {f | Y = f_ heta(X), heta in R^n})。
条件概率分布族:假设空间也可以定义为条件概率的集合,(mathcal{F} = {P | P_ heta(Y | X), heta in R^n})。
概率模型和非概率模型:用决策函数表示的模型为非概率模型,用条件概率表示的模型为概率模型。有时模型兼有两种解释,既可以看作概率模型,也可以看作非概率模型。为了简便起见,当论及模型时,有时只用其中一种模型。
统计学习三要素之二:策略(损失函数)
常用损失函数:
(1)0-1损失:$$L(Y,f(X)) = left{egin{matrix}
1, & Y
eq f(X)
0, & Y = f(X)
end{matrix}
ight. $$
(2)平方损失:(L(Y,f(X)) = (Y-f(X))^2)
(3)绝对损失:(L(Y,f(X)) = |Y-f(X)|)
(4)对数损失:(L(Y, P(Y|X)) = - log P(Y|X))
期望风险:公式如下,这是理论上模型(f(X))关于联合分布(P(X,Y))的平均意义下的损失,称为期望风险(expected risk)。学习的目标是选择期望风险最小的模型,但是实际上联合分布(P(X,Y))是未知的。如果知道联合分布(P(X,Y)),可以从联合分布直接求出条件概率分布(P(Y|X)),也就不需要学习了。
经验风险最小化:公式如下,这是模型关于训练数据的平均损失,称为经验风险(empirical risk)。根据大数定律,样本(N)趋于无穷时,(R_{emp}(f))趋近于(R_{exp}(f)),所以通常用经验风险来估计期望风险,经验风险最小化认为经验风险最小的模型是最优的模型。
结构风险最小化:,但是现实中训练样本有限,甚至很小,需要对(R_{emp})进行矫正。结构风险最小化(structure risk minimization)是为了防止过拟合提出来的策略,在经验风险的基础上加上表示模型复杂度的正则化项或者惩罚项,如下式所示,(J(f))为模型的复杂度,复杂度表示了对复杂模型的惩罚,(lambda geqslant 0)是系数,用来权衡经验风险和模型复杂度。
结构风险最小化需要经验风险与模型复杂度同时小。结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。
统计学习三要素之三:算法(最优化算法)
算法到最优化:统计学习基于训练集(data),根据学习策略(loss),从假设空间(model)中选择最优模型,最后需要考虑用什么算法(algorithm)求解最优模型。这时,统计学习问题归结为最优化问题,统计学习的算法称为最优化问题的算法。
最优化:如果最优化问题有显式的解析解就比较简单,但通常解析解不存在,这就需要用数值计算的方法来求解。如何保证找到全局最优解,并使求解的过程高效,就成为一个重要问题。统计学习可以用已有的最优化算法(常用的有梯度下降法,牛顿法和拟牛顿法),有时也需要开发独自的优化算法。
模型评估与模型选择
评估标准:当损失函数给定时,基于损失函数的模型的训练误差和测试误差就自然称为学习方法的评估标准。注意,统计学习方法具体采用的损失函数未必是评估时使用的损失函数,当然,让二者一致是比较理想的(现实中由于0-1损失不是连续可导的,评估时用0-1损失,训练时使用另外的损失,比如分类任务中大多用对数损失)。
训练误差:模型关于训练集的平均损失(经验损失)。训练误差的大小,对判断给定问题是不是一个容易学习的问题是有意义的,但本质上不重要。
测试误差:模型关于测试集的平均损失(当损失函数是0-1损失时,测试误差就变成了测试集上的误差率error rate,误差率加准确率为1)。测试误差反映了学习方法对未知的测试数据集的预测能力,通常将学习方法对未知数据的预测能力称为泛化能力。
模型选择:当假设空间含有不同复杂度(例如,不同的参数个数)的模型时,就要面临模型选择的问题,我们希望学习一个合适的模型。如果假设空间中存在“真”模型,那么所选择的模型应该逼近“真”模型。
过拟合:如果一味追求提高对训练数据的预测能力,所选模型的复杂度往往会比“真”模型更高,这种现象称为过拟合。过拟合是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测得很好,但对未知数据预测很差的现象。
模型选择和过拟合:可以说模型选择旨在避免过拟合并提高模型的预测能力,常用的模型选择方法有正则化和交叉验证。
正则化:
正则化是结构风险最小化策略的实现,是在经验风险上加上一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大。正则化项可以是模型参数向量的范数,比如L1范数或L2范数。如下式子回归问题中的平方损失加L2范数。
第1项的经验风险较小的模型可能比较复杂(多个非零参数),这时第2项的模型复杂度会比较大。正则化的作用是选择经验风险与模型复杂度同时比较小的模型。
正则化符合奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。
训练/验证/测试:如果样本充足,模型选择的一个简单方法是把数据随机划分为训练集,验证集,测试集。训练集用来训练模型,验证集用于模型的模型,测试集用于最终对学习方法的评估。在学习到的不同复杂度的模型中,选择对验证集有最小预测误差的模型,由于验证集有足够多的数据,这样进行模型选择是有效的。
但是实际应用中数据是不充足的,为了选择好的模型,可以采用交叉验证的方法。其基本思想是重复使用数据,划分为训练集和测试集,在此基础上反复训练,测试以及模型选择。
简单交叉验证:随机划分两部分数据,一部分作为训练集,一部分作为测试集(比如三七分)。然后用训练集在各种条件下(比如不同的参数个数)训练模型,在测试集上评价各个模型,选择测试误差最小的模型。
S折交叉验证(应用最多):随机切分成S个互不相交,大小相同的子集;用S-1个子集的数据训练模型,余下的子集做测试;将可能的S种选择重复进行,会得到一个平均误差;选择平均测试误差最小的模型作为最优模型。
留一交叉验证:S折交叉验证的特殊情形是(S=N)(样本容量),称为留一验证,往往在数据缺乏的情况下使用。
泛化能力
泛化能力:学习方法的泛化能力指由该方法学习到的模型对未知数据的预测能力。
测试误差:现实中采用最多的办法是通过测试误差来评价学习方法的泛化能力,但这种评价是依赖于测试数据集的,因为测试数据集是有限的,很有可能由此得到的评价结果是不可靠的。
泛化误差:泛化误差就是学习到的模型的期望风险。
泛化误差上界:统计学习理论试图从理论上对学习方法的泛化能力进行分析。学习方法的泛化能力分析往往是通过研究泛化误差的概率上界进行的,简称泛化误差上界。具体来说,就是比较两种学习方法的泛化误差上界的大小来比较它们的优劣。
泛化误差上界的性质:随着样本容量的增加,泛化上界趋于0。假设空间越大,模型越难学,泛化上界越大。
二分类的泛化误差上界:对二分类问题,当假设空间是有限个函数的集合(mathcal{F}={f_1,f_2,...,f_d})时,对任意一个函数(finmathcal{F}),至少以概率(1-delta),以下不等式成立(以下只是假设空间包含有限个函数情况下的泛化误差上界,对一般的假设空间要找到泛化误差界没有这么简单)。
不等式左端(R(f))是泛化误差。右端为泛化误差上界。其中右端第1项为训练误差,训练误差越小,泛化误差上界也越小。右端第2项是N的单调递减函数,当N趋于无穷时趋于0;同时它也是(sqrt{log d})阶的函数,假设空间(mathcal{F})包含的函数越多,其值越大。
生成模型和判别模型
生成方法和判别方法:监督学习方法又可分成生成方法和判别方法,所学到的模型分别为生成模型和判别模型。
生成模型:生成方法由数据学习联合概率分布(P(X, Y)),然后求出条件概率分布(P(Y|X))作为预测的模型,即生成模型。
之所以称为生成方法, 是因为模型表示了给定输入X产生输出Y的生成关系。典型的生成模型有:朴素贝叶斯法和隐马尔可夫模型。
判别模型:判别方法由数据直接学习决策函数(f(X))或条件概率分布(P(Y|X))作为预测的模型,即判别模型。判别方法关心的是对给定的输入X,应该预测什么样的输出Y。典型的判别模型包括:KNN,感知机,决策树,逻辑回归,最大熵模型,SVM,boosting方法和条件随机场。
生成方法的优点
(1)可以还原出联合概率分布
(2)学习收敛更快,即随着样本容量N的增加,学到的模型可以更快地收敛于真实模型。
(3)当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用。
判别方法的优点:
(1)直接学习条件概率(P(Y|X))或决策函数(f(X)),直面预测,往往准确率更高。
(2)直接学习(P(Y|X))或(f(X)),可以对数据进行各种程度上的抽象,定义特征并使用特征,因此可以简化学习问题。