《统计学习方法》--李航
github学习笔记
第一章
统计学习方法三要素:
模型,策略,算法
- 得到一个有限的训练数据集合
- 确定包含所有可能的模型的假设空间,即学习模型的集合 确定模型选择的准则,即学习的策略
- 实现求解最优模型的算法,即学习的算法
- 通过学习方法选择最优的模型
- 利用学习的最优模型对新数据进行预测或分析
模型
在监督学习过程中,模型就是所要学习的条件概率分布或者决策函数。
模型评估与模型选择
训练误差和测试误差是模型关于数据集的平均损失。
统计学习方法具体采用的损失函数未必是评估时使用的损失函数。这句理解下。
参考下在数据科学比赛中给出的评分标准,与实际学习采用的损失函数之间的关系。
过拟合与模型选择
这部分讲到了最小二乘法,给了PRML中的一个例子。
这个问题中训练数据为 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) T={(x_1, y_1),(x_2,y_2),\cdots,(x_N,y_N)} T=(x1,y1),(x2,y2),⋯,(xN,yN)
模型为
f M ( x , w ) = w 0 + w 1 x + w 2 x 2 + ⋯ + w M x M = ∑ j = 0 M w j x j f_M(x,w)=w_0+w_1x+w_2x^2+\cdots+w_Mx^M=\sum\limits_{j=0}^Mw_jx^j fM(x,w)=w0+w1x+w2x2+⋯+wMxM=j=0∑Mwjxj
经验风险最小化策略下
L ( w ) = 1 2 ∑ i = 1 N ( f ( x i , w ) − y i ) 2 L(w)=\frac{1}{2}\sum\limits_{i=1}^N(f(x_i,w)-y_i)^2 L(w)=21i=1∑N(f(xi,w)−yi)2
将模型和训练数据带入到上式得到
L ( w ) = 1 2 ∑ i = 1 N ( ∑ j = 0 M w j x i j − y i ) 2 = 1 2 ∑ i = 1 N ( w ⋅ x i − y i ) 2 L(w)=\frac{1}{2}\sum\limits_{i=1}^N\left(\sum\limits_{j=0}^Mw_jx_i^j-y_i\right)^2=\frac{1}{2}\sum\limits_{i=1}^N(w\cdot x_i-y_i)^2 L(w)=21i=1∑N(j=0∑Mwjxij−yi)2=21i=1∑N(w⋅xi−yi)2
这个问题要求 w = ( w 0 , w 1 , ⋯ , w M ∗ ) w=(w_0^,w_1^,\cdots,w_M^*) w=(w0,w1,⋯,wM∗)
对 w w w求偏导令其为零,得到一系列方程,求解可以用梯度下降或者矩阵分解。
求解线性方程组 A x = b Ax=b Ax=b,可以表示为 x = A / b x=A/b x=A/b,问题展开之后可以涉及到矩阵分解。
正则化与交叉验证
正则化
模型选择的典型方法是正则化
交叉验证
另一种常用的模型选择方法是交叉验证
- 简单
- S折(K折, K-Fold)1
- 留一法
关于交叉验证,这里补充一点。
数据集的划分这个问题,书中有提到数据充足的情况下,将数据划分为三个部分,训练集,验证集和测试集。看到这里:验证集和测试集有什么区别?
简而言之,验证集可以从全部数据取出一小部分来进行模型验证,测试集是准备好固定不变进行测试的。
注意这里,在算法学习的过程中,测试集可能是固定的,但是验证集和训练集可能是变化的。 比如K折交叉验证的情况下,分成K折之后,其中的K-1折作为训练集,1折作为验证集,这样针对每一个模型操作K次,计算平均测试误差,最后选择平均测试误差最小的模型。这个过程中用来验证模型效果的那一折数据就是验证集。交叉验证,就是这样一个使用验证集测试模型好坏的过程。他允许我们在模型选择的过程中,使用一部分数据(验证集)“偷窥”一下模型的效果。
泛化能力
机器学习算法对新鲜样本的适应能力
-
现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力
-
统计学习理论试图从理论上对学习方法的泛化能力进行分析
-
学习方法的泛化能力往往是通过研究泛化误差的概率上界进行的, 简称为泛化误差上界(generalization error bound)
这本书里面讨论的不多,在CH08里面有讨论提升方法的误差分析, 提到 A d a B o o s t AdaBoost AdaBoost不需要知道下界 γ \gamma γ。在CH02中讨论算法的收敛性的时候有提到误分类次数的上界.
注意泛化误差的定义,书中有说事实上,泛化误差就是所学习到的模型的期望风险。
生成模型与判别模型
监督学习方法可分为生成方法(generative approach)与判别方法(discriminative approach)
生成方法
- 可以还原出联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)
- 收敛速度快, 当样本容量增加时, 学到的模型可以更快收敛到真实模型
- 当存在隐变量时仍可以用
判别方法
- 直接学习条件概率 P ( Y ∣ X ) P(Y|X) P(Y∣X)或者决策函数 f ( X ) f(X) f(X)
- 直接面对预测, 往往学习准确率更高
- 可以对数据进行各种程度的抽象, 定义特征并使用特征, 可以简化学习问题
分类问题、标注问题、回归问题
Classification, Tagging, Regression
图1.4和图1.5除了分类系统和标注系统的差异外,没看到其他差异,但实际上这两幅图中对应的输入数据有差异,序列数据的
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
,
…
,
x
i
(
n
)
)
T
x_i = (x_i^{(1)},x_i^{(2)},\dots,x_i^{(n)})^T
xi=(xi(1),xi(2),…,xi(n))T对应了
图1.5和图1.6,回归问题的产出为
Y
=
f
^
(
X
)
Y=\hat f(X)
Y=f^(X)
策略
损失函数与风险函数
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。
- 损失函数(loss function)或代价函数(cost function)定义为给定输入 X X X的预测值 f ( X ) f(X) f(X)和真实值 Y Y Y之间的非负实值函数,记作 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X))
- 风险函数(risk function)或期望损失(expected loss)和模型的泛化误差的形式是一样的 R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ X × Y L ( y , f ( x ) ) P ( x , y ) d x d y R_{exp}(f)=E_p[L(Y, f(X))]=\int_{\mathcal X\times\mathcal Y}L(y,f(x))P(x,y){\rm d}x{\rm d}y Rexp(f)=Ep[L(Y,f(X))]=∫X×YL(y,f(x))P(x,y)dxdy 模型 f ( X ) f(X) f(X)关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)的平均意义下的损失(期望损失),但是因为 P ( X , Y ) P(X,Y) P(X,Y)是未知的,所以前面的用词是期望,以及平均意义下的。
- 经验风险(empirical risk)或经验损失(empirical loss) R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f)=\frac{1}{N}\sum^{N}_{i=1}L(y_i,f(x_i)) Remp(f)=N1∑i=1NL(yi,f(xi)) 模型 f f f关于训练样本集的平均损失.根据大数定律,当样本容量N趋于无穷大时,经验风险趋于期望风险
- 结构风险(structural risk) R s r m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) Rsrm(f)=N1∑i=1NL(yi,f(xi))+λJ(f) J ( f ) J(f) J(f)为模型复杂度, λ ⩾ 0 \lambda \geqslant 0 λ⩾0是系数,用以权衡经验风险和模型复杂度。
常用损失函数
损失函数数值越小,模型就越好
-
0-1损失:
-
平方损失: L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Y−f(X))2
经常用在预测标签为实数值的任务中。一般不适用于分类问题 -
绝对损失: L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=∣Y−f(X)∣
-
对数(交叉熵)损失:这里 P ( Y ∣ X ) ⩽ 1 P(Y|X)\leqslant 1 P(Y∣X)⩽1,对应的对数是负值,所以对数损失中包含一个负号,为什么不是绝对值?因为肯定是负的。 L ( Y , P ( Y ∣ X ) ) = − log P ( Y ∣ X ) L(Y,P(Y|X))=-\log P(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
一般用于分类问题。
经验风险最小化(ERM)与结构风险最小化(SRM)
- 极大似然估计是经验风险最小化的一个例子,当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计。
- 贝叶斯估计中的最大后验概率估计是结构风险最小化的一个例子,当模型是条件概率分布,损失函数是对数损失函数,模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计
算法
这章里面简单提了一下,具体可以参考CH12表格中关于学习算法的描述。