本文主要参考 李航·《统计学习方法》,围绕统计学习的过程来展开,分成五个部分:综述、模型、策略、算法、模型评估和选择。方便小白对机器学习流程有个整体的了解。
例子: 用 房屋价格预测的例子更好理解这一个过程。
真实房价 y y 与房屋面积 (x1) ( x 1 ) 、房间数量 (x2) ( x 2 ) 等特征有关。现在要求我们建模实现房屋价格的预测问题。
第一步,我们应该先确定假设空间。
可以用线性回归模型 f1(x)=wTx f 1 ( x ) = w T x
也可以用多项式回归模型拟合曲线: f2(x)=w0+w1x1+w2x22 f 2 ( x ) = w 0 + w 1 x 1 + w 2 x 2 2 。
则假设空间为:
Ω={f1(x),f2(x)} Ω = { f 1 ( x ) , f 2 ( x ) }
其实,假设空间的就是你要选择什么模型去解决一个问题,从大方向上说,你可以选择线性模型,也可以多项式回归模型,选择了一个模型后还要继续做假设,探究在不同特征数量下哪个模型的性能更好。
第二步,确定` f1(x),f2(x) f 1 ( x ) , f 2 ( x ) 两个模型各自的学习的策略:
minw,θ(fw,θ(x)−y)2 m i n w , θ ( f w , θ ( x ) − y ) 2
选择算法分别求解 f1(x),f2(x) f 1 ( x ) , f 2 ( x ) 两个模型:
对于 f1(x)=ωTx+b f 1 ( x ) = ω T x + b : 可以采用梯度下降算法求解最佳参数 ω∗ ω ∗ ,得到最优模型: y=ω∗Tx+b∗ y = ω ∗ T x + b ∗ .
类似的,得到对 f2(x)=wTx+θTx2 f 2 ( x ) = w T x + θ T x 2 的最优模型: f2(x)=w∗Tx+θ∗Tx2 f 2 ( x ) = w ∗ T x + θ ∗ T x 2
进行模型评估和选择:对各个模型进行评估,最终选择最优模型
用 f1(x) f 1 ( x ) 进行预测或分析。
监督学习有两种分法,一种把监督学习分成生成学习和判别学习;另一种把监督学习分成分类问题、标注问题和回归问题。
生成方法由数据学习得到联合概率分布 P(X,Y) P ( X , Y ) ,然后利用条件概率公式生成条件概率分布 P(Y|X) P ( Y | X ) ,作为预测的模型,因此称为生成方法。
判别方法:由数据直接学习决策函数 f(x) f ( x ) 或条件概率 P(Y|X) P ( Y | X )
- 典型的模型有: k k 近邻法、感知机、决策树、逻辑回归算法、最大熵模型、支持向量机、提升方法和条件随机场。
- 模型特点:学习准确率往往比较高。
监督学习中,当输出变量Y的取值是有限个离散值时,预测问题便成为分类问题。这时的输入变量可以是离散的,也可以是连续的。
评价一个分类器主要有三个指标精确率P、召回率R和精确率与召回率的调和均值F1值。
精确率P的定义:
标注问题的例子就是信息提取问题中,给一个句子的每一个词进行 标注。
标注问题常用的统计统计学习方法:隐马儿可夫模型、条件随机场。
标注问题在信息抽取、自然语言处理等领域有很多应用。
在监督学习中,模型表示输入到输出的一种映射关系,其形式可以是条件概率型P(Y|X),也可以是决策函数型Y = f(x).
模型可能有很多个,不同模型复杂度不同,解决问题的效果不同。即使是同个线性模型,也会随着参数的个数不同而导致最后的模型不同。我们可以先做很多模型假设,形成一个假设空间。
假设空间可以定义为决策函数Y = f(x) 的集合:
Ω={f|Y=fθ(X),θϵRn} Ω = { f | Y = f θ ( X ) , θ ϵ R n }
其中, θ θ 为参数向量, Rn R n 称为参数空间。
假设空间也可以定义为一个条件概率P(Y | X)的集合:
Ω={P|Pθ(Y|X),θϵRn} Ω = { P | P θ ( Y | X ) , θ ϵ R n }
其中, θ θ 为参数向量, Rn R n 称为参数空间。
例如:
可以用一次线性模型拟合曲线 f1(x)=ωTx+b f 1 ( x ) = ω T x + b 。
也可以用二次模型拟合曲线: f2(x)=wTx+θTx2 f 2 ( x ) = w T x + θ T x 2 。
则假设空间为:
Ω={f1(x),f2(x)} Ω = { f 1 ( x ) , f 2 ( x ) }
确定了假设空间,统计学习接着考虑要用什么样准则去选择假设空间中各个决策函数或者条件概率的最佳形式(最佳参数),这种准则就叫策略。
经典的策略就是最小化经验损失函数和最小化结构损失函数。那么首先应该引入损失函数的概念。
损失函数用于度量模型预测的错误程度。损失函数的值越小,模型就越好。损失函数记作 L(Y,f(x)) L ( Y , f ( x ) ) .
损失函数的种类主要有:
0-1损失函数
平方损失函数
期望损失(风险)函数:
期望损失(风险)函数定义为损失函数的均值。
实际中我们无法知道(X,Y)遵循什么样联合分布P(X,Y), 所以期望损失并不可能精确计算。但当我们的训练集容量很多时,可以能用经验损失来估计期望损失。
经验损失(风险)函数:模型 f(x) f ( x ) 关于训练集的平均损失称为经验损失。
假设给定一个包含N个数据的训练集:
T={(x1,y1),(x2,y2),...(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } `
那么数据集的经验损失或经验风险为:
` Remp=1N∑Ni=1L(yi,f(xi)^) R e m p = 1 N ∑ i = 1 N L ( y i , f ( x i ) ^ )
当训练集的个数N趋于无穷时,期望损失的等于经验损失,经验损失可以看成是对期望损失的估计
结构损失函数:当样本容量很大时,经验损失最小化可以保证很好的学习效果,因为样本容量N趋于无穷时,经验损失等于期望损失。但是当样本容量比较小时,很容易由于过拟合而导致预测结果不理想。为了防止过拟合,可以在经验损失的基础上加上一个正则化项,也叫惩罚项。
正则化项 J(f) J ( f ) 与决策函数 f f 的复杂度有关。模型 f f 越复杂,正则化项 J(f) J ( f ) 就越大。 λ⩾0 λ ⩾ 0 为调节系数。正则化项可以是模型参数向量的范数.
例如,在回归问题中,损失函数时平方损失,正则化项可以是参数向量的 L2 L 2 范数:
正则化项可以是参数向量的$L_1$
范数:
第一项经验风险比较小的模型可能比较复杂,拟合效果很好,这时因为模型比较复杂,因此第二项比较大。这样,正则化后就可以选择出经验风险和模型复杂度同时较小的模型。
上面介绍了经验损失、结构损失的概念,而我们的目标时最小化经验损失或结构损失,把监督问题转化为最优化问题。这时的经验或结构损失函数就是最优化的目标函数。
最后,根据策略,接着考虑要什么算法来实现策略,求解最优模型.例如在线性回归问题中用梯度下降算法最小化平方损失函数,从而求解w最佳参数,从而得到了最佳模型。
常用的求解模型算法有:
1. 牛顿法
2. 梯度下降法
3. 正规方程组
4. …
经过算法的运算,现在我们已经求解了假设空间中所有的模型,那么假设空间中到底哪个模型时最好的呢?这需要对假设空间中的每一个模型进行模型评估,最后选择一种最优模型,称为模型选择。
训练出来的模型性能的好坏,主要取决于训练模型对未知数据是否有较好预测能力。我们把这种能力称为泛化能力。泛化能力可以由测试误差判断,也可以由泛化误差上界评估。而且泛化能力很大程度上收到模型的过拟合程度的影响。
测试误差:定义为测试数据集的经验(风险)损失。
泛化误差上界:定义为测试数据集的期望(风险)损失(也就是泛化误差)的最大值。
可以看到,不等式左边 R(f) R ( f ) 是泛化误差,右端为泛化误差上界。在泛化误差中,第一项是训练误差,训练误差越小,泛化误差也越小。在第二项中 ε(d,N,δ) ε ( d , N , δ ) 是样本数目N的减函数,同时是假设空间数目d的增函数,空间 Ω Ω 的数目d越大,泛化误差上界就越大。
由此,如果测试数据集的数目N’比较小,泛化误差上界来告诉我们可以根据经验误差 R(f)^ R ( f ) ^ 、训练样本数目N和假设空间数目d来评估模型的泛化能力。
典型的模型选择的方法有特征选择、特征过滤、正则化、交叉验证等。
- 交叉验证:
- 简单交叉验证:数据集分成测试集和训练集,然后训练集在各种条件下训练模型,从而得到不同模型。在测试集评测各种误差,选出测试误差最小的一个模型。
- S折交叉验证:将数据集随机划分为S个不同的子集,S-1个用于训练,剩下的用于测试;重复这一过程。
- 留一交叉验证:N个样本的数据集,且N比较小时,直接令S = N,那么每次只会留一个样本用于测试。
- 自助法:对数据集D进行N次有放回的采样得到D’,把没出现在D’的样本用于测试,出现过的样本用于训练(参考西瓜书p27)
- 正则化:在前面已经作了介绍。
特征选择:前面提到,不同的参数个数w,会导致模型的复杂度不同,而复杂的模型容易引起过拟合的问题。正则化的方法可以以使用保留所有参数w的方法来减少过拟合的风险。而特征选择可以通过减少一些无用的特征,也就是减少w的个数,从而减少模型的复杂度,降低过拟合的风险。*(参考吴恩达视频10)*
对于n 个特征来说,特征子集的个数有2n 个,如何进行选择呢?可以使用以下方法:
前向选择法(Forward Search):
1) 初始化特征子集为ℱ = Φ。
2) 对于不属于ℱ的每个特征,计算添加该特征后模型精度的提升。
3) 选择提升最大的特征.
4) 重复第2 步和第3步,直到模型精度不再上升为止。
后向选择法(Backward Search):
和前向选择法类似,每次删除对精度影响最不大的特征。
特征过滤:
上面的方法虽然可以达到较优的特征选择结果,但是由于其反复多次调用模型训练算法,其计算量会相当的大,尤其在训练数据量比较大的时候。为了是特征选择更简便,可以使用一种更简单的特征过滤方法。
过滤特征选择(Filter Feature Selection):
采用一种启发式的规则对特征进行评分, 选择评分较优的特征。
互信息(mutual information,MI)
就是一种可选的评分函数。互信息可以衡量特征 xi x i 和类别标号 y y 的相关性,从而选择出与类别标号 y y 最相关的特征 xi x i 。当 xi x i 是离散型变量的时候,互信息 MI 的计算公式如下:
使用 MI M I 进行衡量后,我们得到了各个特征的评分,那么选择多少个特征可以让模型的效果达到最好呢?标准的方法还是采用交叉检验的方式进行选择。