前记

在导师的推荐下,本人开始阅读李航博士的《统计学习方法》,该书是以内容短小精悍著称,因此我也从此书开始正式进入了机器学习的学习阶段。当然在这一节中,本人只是对该章节知识点进行梳理,由于多是基本知识点,所以量很大,内容也很多。

统计学习

统计学习的概念

统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,统计学习也称为统计机器学习。

统计学习的对象

统计学习的对象是数据,它从数据出发,提取数据的特征,抽象出数据的模型,从数据中发现知识,又回到对数据的分析与预测中去。

统计学习的方法

统计学习由监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi-supervised learning)、强化学习(reinforcement learning)等组成。

统计学习中的常用概念

  • 我们认为要学习的模型属于某个函数的集合,该集合被称为假设空间
  • 训练数据、测试数据:意如其名。
  • 统计学习方法的三要素为模型(model)策略(strategy)算法(algorithm)

实现统计学习方法的步骤

(1) 得到一个有限的训练数据集合;

(2) 确定包含所有可能的模型的假设空间,即学习的模型的集合;

(3) 确定模型选择的准则,即学习的策略;

(4) 实现求解最优模型的算法,即学习的算法;

(5) 通过学习方法选择最优模型;

(6) 利用学习的最优模型对新数据进行预测或分析;

监督学习

监督学习的概念

监督学习的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测(注意,这里的输入、输出是指某个系统的输入与输出,与学习的输入与输出不同)

本人认为,”这里的输入、输出“指的不是特征值,而仅仅只是指代系统需要输入输出样本。

基本概念

  • 输入空间、特征空间与输出空间

    首先,输入空间与输出空间指的是输入输出所有的可能取值的集合。输入与输出空间可以是有限元素的集合,也可以是整个欧式空间,两者可以是指同一个空间,也可以是不同的空间,通常情况下,输出空间远远小于输入空间。

    每个具体的输入是一个实例,通常由特征向量来表示,此时所有的特征向量存在的空间称为特征空间。特征空间的每一维对应于一个特征。
  • 联合概率分布

    监督学习假设输入与输出的随机变量X和Y遵循联合概率分布P(X,Y),P(X,Y)表示分布函数,或者称分布密度函数。
  • 假设空间

    模型属于由输入空间到输出空间的映射的集合,这个集合就是假设空间。假设空间的确定意味着学习范围的确定。

统计学习三要素

$$方法=模型+策略+算法$$

模型

在监督学习中,模型就是所要学习的条件概率分布或决策函数。模型的假设空间包含所有可能的条件概率分布或决策函数。

假设空间用$\mathcal{F}$表示,假设空间可以定义为决策函数的集合:

$$ \mathcal{F}=\{f|Y=f(X)\} $$

其中,X和Y是定义在输入空间$\mathcal{X}$和输出空间$\mathcal{Y}$上的变量,这时$\mathcal{F}$通常是由一个参数向量决定的函数族:

$$\mathcal{F}=\{ f|Y=f_\theta(X),\theta\in R^n \}$$

参数向量$\theta$取值与n维欧式空间$R^n$,称为参数空间。

策略

统计学习的目标在于从假设空间中选取最优模型。首先需要引入损失函数与风险函数的概念,损失函数度量模型一次预测的好坏,风险函数度量平均意义下的模型预测的好坏。两者的区别就在于一次预测和平均意义。

损失函数和风险函数(重要)

监督学习问题是在假设空间$\mathcal{F}$中选取模型$f$作为决策函数,对于给定的输入$X$,由$f(X)$给出相应的输出$Y$,这个输出的预测值$f(X)$与真实值$Y$可能一致也可能不一致,因此需要一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度,损失函数是$f(X)$和$Y$的非负实值函数,记作为$L(Y,f(X))$.
统计学习常用的损失函数有以下几种:

  • 0-1损失函数(0-1 loss function)

    $$L(Y,f(x))=\begin{cases}
    1,& Y \ne f(X)\\
    0,& Y = f(X)
    \end{cases}$$

  • 平方损失函数(quadratic loss function)

    $$L(Y,f(X))=(Y-f(X))^2$$

  • 绝对损失函数(absolute loss function)

    $$L(Y,f(X))=|Y-f(X)|$$

  • 对数损失函数(logarithmic loss function)或对数似然损失函数(log-likelihood loss function)

    $$L(Y,P(Y|X))=-log(P(Y|X))$$

损失函数值越小,模型就越好,由于模型的输入、输出是随机变量,遵循联合分布$P(X,Y)$所以损失函数的期望是:

$$R_{exp}(f)=E_p[L(Y,f(X))]= \lmoustache_{x \times y}L(y,f(x))P(x,y)dxdy$$

这就是理论上模型$f(X)$关于联合分布$P(X,Y)$的平均意义下的损失,称为风险函数或期望损失。
由于联合分布是未知的,因此$R_exp(f)$不能直接计算,如果知道了联合分布那也就不需要学习了,一方面根据期望风险最小来学习模型要用到联合分布,而联合分布却是未知的,因此我们需要引入一个经验风险的概念,其实模型f(x)关于训练数据集的平均损失,记作$R_{emp}$

$$R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) \qquad$$

注:上式子中,N代表着训练集中的样本数量

经验风险最小化与结构风险最小化

在经验风险最小化的策略中,我们需要的是求解上述经验风险的最小化,就是求解最优化问题:

$$min_{f\in \mathcal{F}} \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))\qquad$$

当样本容量足够大的时候,经验风险最小化有着很好的效果,因此被广泛采用。
当样本容量很小的时候,经验风险最小化学习的效果就未必很好,可能还会有过拟合的情况发生。结构风险最小化就是为了防止过拟合而提出来的策略,结构风险最小化等价于正则化,结构风险是在经验风险上加了表示模型复杂度的正则化项(或者称为罚项),在假设空间、损失函数、训练数据集确定的时候,结构风险的定义是

$$R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$$

  • $J(f)$为模型的复杂度,是定义在假设空间$\mathcal{F}$上的反函数,模型$f$越复杂,复杂度$J(f)$就越大。
  • $\lambda$是系数,泳衣权衡经验风险和模型复杂度。

结构风险最小化策略认为结构风险最小的模型是最优的模型,所以最优模型,就是求解最优化的问题:

$$min_{f\in \mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$$

在这时,监督学习问题就变成了经验风险或结构风险函数的最优化问题。

公式整理

风险名称 损失函数 最优化
期望风险 $R_{exp}(f)=E_p[L(Y,f(X))]= \lmoustache_{x \times y}L(y,f(x))P(x,y)dxdy$ 不可求
经验风险 $ R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) \qquad $ $min_{f\in \mathcal{F}}R_{emp}(f) $
结构风险 $R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$ $min_{f\in \mathcal{F}}R_{srm}(f) $

算法

算法是指学习模型的具体计算方法。按照以上所讲,统计学习问题归结为最优化问题,统计学习的算法称为求解最优化问题的算法,通过数值计算的方法求解,来保证找到全局最优解。

统计学习方法之间的不同,主要来自其模型、策略、算法的不同,若三者确定,统计学习的方法也就随之确定,因此称其为统计学习的三要素。

模型评估与模型选择

训练误差与测试误差

当损失函数给定时,基于损失函数的模型的训练误差和模型的测试误差就自然成为学习方法评估的标准,注意,统计学习方法具体采用的损失函数未必是评估时使用的损失函数,当然,让两者一致是比较理想的。

过拟合

如果一味地追求提高对训练数据的预测能力,所选模型的复杂度则往往会比真模型更高,这种情况呗称为过拟合。过拟合是指学习时选择的模型所包含的参数过多,以致于出现这一模型对已知数据预测得很好,但是对未知数据预测得很差的现象。

正则化与交叉验证

正则化

正则化是结构风险最小化策略的实现,是在经验风险上加上正则化项和罚项。正则化项一般是模型复杂度的单调递增函数,也就是模型越复杂,正则化值越大,LOSS值也就越大。

正则化的一般形式:

$$min_{f\in \mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$$

正则化项有着不同的形式,一般是与参数向量有关,经常使用范数来表示。

范数

这里就需要引入一个范数的概念了。

L0范数:实际上表示的为向量中非零元素的个数

$$L0(x)= ^0 \sqrt{\sum_{i=1}^n|x_i|^0}$$

  • L1范数:又被称为曼哈顿距离、最小绝对误差等

$$L1(X)=\sum_{i=1}^n|x_i|$$

  • L2范数:又被称为欧式距离,是用的最多的距离度量

$$L2(X)=\sqrt{\sum_{i=1}^n|x_i|^2}$$

范数在numpy中有具体的实现方法:

1
2
# 下列语句可以实现求解a向量与b向量之间的距离
np.linalg.norm(a-b)

生成模型与判别模型

生成方法

生成方法是由数据学习联合概率分布$P(X,Y)$,然后求出条件概率分布$P(X|Y)$作为预测的模型。这就是生成模型:

$$P(X|Y)=\frac{P(X,Y)}{P(X)}$$

该方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。

判别方法

判别方法是数据直接学习决策函数$f(X)$或者条件概率分布$P(Y|X)$作为预测的模型,即判别模型。判别模型关心的是对给定的输入,应该预测什么样的输出。

生成方法和判别方法的特点比较

生成方法的特点:

  • 生成方法可以还原出联合概率分布$P(X,Y)$,而判别方法不能;
  • 生成方法的学习收敛速度更快,模型可以更快地收敛于真实模型
  • 当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用。

判别方法的特点:

  • 判别方法直接学习的是条件概率$P(Y|X)$或决策函数$f(X)$
  • 直接面对预测,往往学习的准确率更高。
  • 由于直接学习$P(Y|X)或$f(X)$,可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

针对分类问题的指标(重要)

对二分类问题常用的评价指标是精准率和召回率。通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4中情况出现的总数分别记作:

  • TP——将正类预测为正类的数量
  • FN——将正类预测为负类的数量
  • FP——将负类预测为正类的数量
  • TN——将负类预测为负类的数量

精准率的定义为$P=\frac{TP}{TP+FP}$,可以记为判断为正类的样本中的真实正类的比重。

召回率的定义为$R=\frac{TP}{TP+FN}$,可以记为真实的正类被判定为正类的比重。

$F_1$值,是精确率和召回率的调和均值,即$\frac{2}{F_1}=\frac{1}{P}\frac{1}{R}$,$F_1=\frac{2TP}{2TP+FP+FN}$,因此可以看出,当精准率和召回率都高的时候,$F1$值才会高。

总结

本章节主要讲的都是统计学习中的一些基本概念,这份整理也花了不少的时间,应该理解深刻。从下一章开始,进入了十个算法的学习,并且每章都会在理论的基础上配上代码实现,尽请期待了。