统计学习方法的概括和补充

123 阅读12分钟

写在前面

《统计学习方法》第二版出了有段时间了,最近得空可以拜读一下。之前看第一版的时候还是一年多以前,那个时候看的懵懵懂懂的,很吃力。希望这一次能够有所收获,能够收获新的东西,这些文章只是用于记录相关的一些要点,以及补充一下内容,仅供学习用。

第一章的概括

  • 统计学习

  • 统计学习的分类

    • 基本分类
    • 按模型分类
    • 按算法分类
    • 按技巧分类
  • 统计学习三要素

    • 模型
    • 策略
    • 算法
  • 模型评估与模型选择

    • 训练误差与测试误差
    • 过拟合与模型选择
  • 正则化与交叉验证

    • 正则化
    • 交叉验证
  • 泛化能力

    • 泛化误差
    • 泛化误差上界
  • 生成模型与判别模型

  • 监督学习应用

    • 分类问题
    • 标注问题
    • 回归问题

零零碎碎的一些记录

  • 关于损失函数,风险函数与目标函数注意体会差异

  • 后面插点从深度学习角度拿到的点

    • 关于机器学习三要素,也有另外一种的解读:模型,学习准则,优化算法。这个定义比较接近代码。以Tensorflow为例。通常会定义一个网络(模型),定义Loss(学习准则),定义优化算法(Optimizer),然后开Session,不停的把数据带入用Opitmizer去最小化Loss。
    • Losses,Metrics,在Keras里面划分了两个模块, 解释是Losses是BP过程用到的,而Metrics实际和损失函数类似,用来评价模型的性能,但是不参与反向传播. 从源码也能看到,Metrics里面import了很多Loss算法。
  • 在监督学习中输入和输出对称为样本,在无监督学习中输入是样本

  • 注意在介绍输入空间,输出空间等概念的时候,以及这一章的很多部分都会有个帽子,监督学习中, 书中也明确了本书主要讨论监督学习的问题,最后的概要总结部分对监督学习有这样的描述:监督学习可以概括如下:从给定有限的训练数据出发,假设数据是独立同分布的,而且假设模型属于某个假设空间,应用某一评价准则,从假设空间中选取一个最优的模型,使它对已给的训练数据以及未知测试数据在给定评价标准意义下有最准确的预测。,理解下这里的假设。

  • 在贝叶斯学习部分,提到将模型、为观测要素及其参数用变量表示,使用模型的先验分布是贝叶斯学习的特点。注意这里面先验是模型的先验分布。

  • 在泛化误差部分,用了 f ^ \hat f f^​表示最优估计,这个有时候也会用 f ∗ f^* f∗表示意思差不多。有时候表示向量又要表示估计值,用 ∗ * ∗可能好看一点,比如 x ⃗ ∗ \vec x^* x ∗,但是通常每本书都有自己的符号体系,向量可以通过字体表示,具体可以从书中的符号表部分了解。关于这一点,在第二版第一章就有所体现,监督和无监督学习中,模型用hat表示,在强化学习中,最优解用*表示。

  • 提一下参考文献,几个大部头都在,ESL,PRML,DL,PGM,西瓜书,还有Sutton的强化学习,不过这本书2018年出了第二版,感兴趣的话可以看新版。

实现统计学习方法的步骤

统计学习方法三要素:模型,策略,算法

  • 得到一个有限的训练数据集合
  • 确定包含所有可能的模型的假设空间,即学习模型的集合
  • 确定模型选择的准则,即学习的策略
  • 实现求解最优模型的算法,即学习的算法
  • 通过学习方法选择最优的模型
  • 利用学习的最优模型对新数据进行预测或分析

统计学习分类

  • 基本分类:这部分内容新增了无监督学习和强化学习。值得注意的一个点,之前因为只写了监督学习,样本表示(x, y)对,在无监督学习里面,样本就是x。

    • 监督学习
    • 无监督学习
    • 强化学习
  • 按模型分类

    • 概率模型与非概率模型:在监督学习中,概率模型是生成模型,非概率模型是判别模型。
  • 按算法分类:在线学习和批量学习,在线学习通常比批量学习更难。

  • 按技巧分类

    • 贝叶斯学习
    • 核方法

统计学习方法三要素

模型

模型是什么?

在监督学习过程中,模型就是所要学习的条件概率分布或者决策函数

注意书中的这部分描述,整理了一下到表格里:

假设空间 F \bf F F输入空间 X \bf X X输出空间 Y \bf Y Y参数空间
决策函数F = { f θ ∥ Y = f θ ( x ) , θ ∈ R n } \bf F\it =\{f_{\theta} \Y=f_{\theta}(x), \theta \in \bf R \it ^n\} F={fθ​∥Y=fθ​(x),θ∈Rn}变量变量R n \bf R\it ^n Rn
条件概率分布F = { P ∥ P θ ( Y ∥ X ) , θ ∈ R n } \bf F\it =\{P\P_{\theta}(Y\X),\theta\in \bf R \it ^n\} F={P∥Pθ​(Y∥X),θ∈Rn}随机变量随机变量R n \bf R\it ^n Rn

策略

损失函数与风险函数

损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

  • 损失函数(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×Y​L(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)是未知的,所以前面的用词是期望,以及平均意义下的。这个表示其实就是损失的均值,反映了对整个数据的预测效果的好坏, P ( x , y ) P(x,y) P(x,y)转换成 ν ( X = x , Y = y ) N \frac {\nu(X=x, Y=y)}{N} Nν(X=x,Y=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=1N​L(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=1N​L(yi​,f(xi​))+λJ(f), J ( f ) J(f) J(f)为模型复杂度, λ ⩾ 0 \lambda \geqslant 0 λ⩾0是系数,用以权衡经验风险和模型复杂度。

常用损失函数

损失函数数值越小,模型就越好

  • 0-1损失: L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\begin{cases}1, Y \neq f(X) \\0, Y=f(X) \end{cases} L(Y,f(X))={

    1,Y​=f(X)0,Y=f(X)​

  • 平方损失: 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

经验风险最小化(ERM)与结构风险最小化(SRM)

  • 极大似然估计是经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计
  • 贝叶斯估计中的最大后验概率估计是结构风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数,模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计

算法

模型评估与模型选择

训练误差和测试误差是模型关于数据集的平均损失。

提到一句, 统计学习方法具体采用的损失函数未必是评估时使用的损失函数,这句理解下。参考下在数据科学比赛中给出的评分标准,与实际学习采用的损失函数之间的关系。

过拟合与模型选择

这部分讲到了最小二乘法,给了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​+w1​x+w2​x2+⋯+wM​xM=j=0∑M​wj​xj
  • 经验风险最小化策略下 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)=21​i=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)=21​i=1∑N​(j=0∑M​wj​xij​−yi​)2=21​i=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)
    • 留一法

关于交叉验证,这里补充一点。数据集的划分这个问题,书中有提到数据充足的情况下,将数据划分为三个部分,训练集,验证集和测试集。看到这里,不知道大家会不会有一样的问题:验证集和测试集有什么区别?

注意这里,在算法学习的过程中,测试集可能是固定的,但是验证集和训练集可能是变化的。比如K折交叉验证的情况下,分成K折之后,其中的K-1折作为训练集,1折作为验证集,这样针对每一个模型操作K次,计算平均测试误差,最后选择平均测试误差最小的模型。这个过程中用来验证模型效果的那一折数据就是验证集。交叉验证,就是这样一个使用验证集测试模型好坏的过程。他允许我们在模型选择的过程中,使用一部分数据(验证集)“偷窥”一下模型的效果。

泛化能力

  • 现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力
  • 统计学习理论试图从理论上对学习方法的泛化能力进行分析
  • 学习方法的泛化能力往往是通过研究泛化误差的概率上界进行的, 简称为泛化误差上界(generalization error bound)

注意泛化误差的定义,书中有说事实上,泛化误差就是所学习到的模型的期望风险

生成模型与判别模型

监督学习方法可分为生成方法(generative approach)与判别方法(discriminative approach)

生成方法

generative approach

  • 可以还原出联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)
  • 收敛速度快, 当样本容量增加时, 学到的模型可以更快收敛到真实模型
  • 当存在隐变量时仍可以用

判别方法

discriminative approach

  • 直接学习条件概率 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)