【第22篇博客】李航《统计学习方法·第一章》笔记、代码、习题
CH01 统计学习及监督学习概论
[TOC]
前言
章节目录
- 统计学习
- 统计学习的分类
- 基本分类
- 按模型分类
- 按算法分类
- 按技巧分类
- 统计学习三要素
- 模型
- 策略
- 算法
- 模型评估与模型选择
- 训练误差与测试误差
- 过拟合与模型选择
- 正则化与交叉验证
- 正则化
- 交叉验证
- 泛化能力
- 泛化误差
- 泛化误差上界
- 生成模型与判别模型
- 监督学习应用
- 分类问题
- 标注问题
- 回归问题
1.1 统计学习
实现统计学习方法的步骤
统计学习方法三要素:模型,策略,算法
- 得到一个有限的训练数据集合
- 确定包含所有可能的模型的假设空间,即学习模型的集合
- 确定模型选择的准则,即学习的策略
- 实现求解最优模型的算法,即学习的算法
- 通过学习方法选择最优的模型
- 利用学习的最优模型对新数据进行预测或分析
1.2 统计学习分类
基本分类
这部分内容新增了无监督学习和强化学习。值得注意的一个点,之前因为只写了监督学习,样本表示(x, y)对,在无监督学习里面,样本就是x。
监督学习
监督学习指从标注数据中学习预测模型的机器学习问题,其本质是学习输入到输出的映射的统计规律。
输入变量X和输出变量Y有不同的类型,可以是连续或是离散的。根据输入输出变量的不同类型,对预测任务给予不同的名称:输入与输出均为连续变量的预测问题称为回归问题;输出变量为有限个离散变量的预测问题称为分类问题;输入与输出变量均为变量序列的预测问题称为标注问题。
条件概率分布 $\hat{P}(Y|X)$ 或决策函数 $Y=\hat{f}(X)$ 描述输入与输出随机变量之间的映射关系。
无监督学习
- 无监督学习模型,即函数 $z=\hat{g}(x)$, 条件概率分布 $\hat{P}(z|x)$ 或者条件概率分布 $\hat{P}(x|z)$ 可以实现对数据的聚类、降维或概率估计。在预测过程中,预测系统对于给定的输入 $x{N+1}$ ,由模型 $z{N+1}=\hat{g}(x{N+1})$ 或 $z{N+1}=\arg\max\limits{z}\hat{P}(z|x{N+1})$ 给出相应的输出 $z{N+1}$ 进行聚类或降维,或者由模型 $\hat{P}(x|z)$ 给出输出的概率 $\hat{P}(x{N+1}|z_{N+1})$ 进行概率估计。
强化学习
按模型分类
概率模型与非概率模型(确定性模型)
- 在监督学习中,概率模型 ${P}(y|x)$ 是生成模型,非概率模型 $y=f(x)$ 是判别模型。本书介绍的决策树、朴素贝叶斯、隐马尔科夫模型、条件随机场、概率潜在语义分析、潜在狄利克雷分配、高斯混合模型是概率模型。
- 在无监督学习中,概率模型取条件概率分布形式 ${P}(x|z)$ 或${P}(z|x)$ ,非概率模型取函数形式 $z=g(x)$ 。本书介绍的感知机、支持向量机、k近邻、AdaBoost、k均值、潜在语义分析、神经网络是非概率模型。Logistic回归两者都可算是。
- 条件概率分布和函数可以相互转化:条件概率分布最大化后得到函数,函数归一化得到条件概率分布。
线性模型和非线性模型
参数化模型与非参数化模型
按算法分类
在线学习和批量学习,在线学习通常比批量学习更难。
按技巧分类
贝叶斯学习
核方法(SVM、PCA、K-means)
1.3 统计学习方法三要素
模型
模型是什么?
在监督学习过程中,模型就是所要学习的条件概率分布或者决策函数,模型的假设空间包含所有可能的条件概率分布或者决策函数。
注意书中的这部分描述,整理了一下到表格里:
假设空间$\cal F$ | 输入空间$\cal X$ | 输出空间$\cal Y$ | 参数空间 | |||
---|---|---|---|---|---|---|
决策函数 | $\cal F\it ={f_{\theta} | Y=f_{\theta}(x), \theta \in \bf R \it ^n}$ | 变量 | 变量 | $\bf R\it ^n$ | |
条件概率分布 | $\cal F\it ={P | P_{\theta}(Y | X),\theta\in \bf R \it ^n}$ | 随机变量 | 随机变量 | $\bf R\it ^n$ |
书中描述的时候,有提到条件概率分布族,这个留一下,后面CH06有提到确认逻辑斯谛分布属于指数分布族。
策略
损失函数与风险函数
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。
损失函数(loss function)或代价函数(cost function)
损失函数定义为给定输入$X$的预测值$f(X)$和真实值$Y$之间的非负实值函数,记作$L(Y,f(X))$风险函数(risk function)或期望损失(expected loss)
这个和模型的泛化误差的形式是一样的
$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$
模型$f(X)$关于联合分布$P(X,Y)$的平均意义下的损失(期望损失),但是因为$P(X,Y)$是未知的,所以前面的用词是期望,以及平均意义下的。这个表示其实就是损失的均值,反映了对整个数据的预测效果的好坏,P(x,y)$转换成$\frac {\nu(X=x, Y=y)}{N}$更容易直观理解, 可以参考CH09,6.2.2节的部分描述来理解,但是真实的数据N是无穷的。
经验风险(empirical risk)或经验损失(empirical loss)
$R{emp}(f)=\frac{1}{N}\sum^{N}{i=1}L(y_i,f(x_i))$
模型$f$关于训练样本集的平均损失
根据大数定律,当样本容量N趋于无穷大时,经验风险趋于期望风险结构风险(structural risk)
$R{srm}(f)=\frac{1}{N}\sum{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$
$J(f)$为模型复杂度, $\lambda \geqslant 0$是系数,用以权衡经验风险和模型复杂度。
常用损失函数
损失函数数值越小,模型就越好
- 0-1损失
$L(Y,f(X))=\begin{cases}1, Y \neq f(X) \0, Y=f(X) \end{cases}$ - 平方损失
$L(Y,f(X))=(Y-f(X))^2$ 绝对损失
$L(Y,f(X))=|Y-f(X)|$对数损失
这里$P(Y|X)\leqslant 1$,对应的对数是负值,所以对数损失中包含一个负号,为什么不是绝对值?因为肯定是负的。
$L(Y,P(Y|X))=-\log P(Y|X)$
ERM与SRM
经验风险最小化(ERM)与结构风险最小化(SRM)
- 极大似然估计是经验风险最小化的一个例子
当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计 - 贝叶斯估计中的最大后验概率估计是结构风险最小化的一个例子
当模型是条件概率分布,损失函数是对数损失函数,模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计
算法
这章里面简单提了一下,具体可以参考CH12表格中关于学习算法的描述。
1.4 模型评估与模型选择
训练误差和测试误差是模型关于数据集的平均损失。
提到一句, 统计学习方法具体采用的损失函数未必是评估时使用的损失函数
,这句理解下。参考下在数据科学比赛中给出的评分标准,与实际学习采用的损失函数之间的关系。
过拟合与模型选择
这部分讲到了最小二乘法,给了PRML中的一个例子。
这个问题中训练数据为$T={(x_1, y_1),(x_2,y_2),\cdots,(x_N,y_N)}$
模型为
$fM(x,w)=w_0+w_1x+w_2x^2+\cdots+w_Mx^M=\sum\limits{j=0}^Mw_jx^j$
经验风险最小化策略下
$L(w)=\frac{1}{2}\sum\limits_{i=1}^N(f(x_i,w)-y_i)^2$
将模型和训练数据带入到上式得到
$L(w)=\frac{1}{2}\sum\limits{i=1}^N\left(\sum\limits{j=0}^Mwjx_i^j-y_i\right)^2=\frac{1}{2}\sum\limits{i=1}^N(w\cdot x_i-y_i)^2$
这个问题要求$w=(w_0^,w_1^,\cdots,w_M^*)$
对$w$求偏导令其为零,得到一系列方程,求解可以用梯度下降或者矩阵分解。
求解线性方程组$Ax=b$,可以表示为$x=A/b$,问题展开之后可以涉及到矩阵分解。
正则化与交叉验证
正则化
模型选择的典型方法是正则化。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。可以假设复杂的模型有较小的先验概率,简单的模型有较大的先验概率。
交叉验证
另一种常用的模型选择方法是交叉验证
- 简单
- S折(K折, K-Fold)
- 留一法
关于交叉验证,这里补充一点。
数据集的划分这个问题,书中有提到数据充足的情况下,将数据划分为三个部分,训练集,验证集和测试集。看到这里,不知道大家会不会有一样的问题:验证集和测试集有什么区别?
注意这里,在算法学习的过程中,测试集可能是固定的,但是验证集和训练集可能是变化的。比如K折交叉验证的情况下,分成K折之后,其中的K-1折作为训练集,1折作为验证集,这样针对每一个模型操作K次,计算平均测试误差,最后选择平均测试误差最小的模型。这个过程中用来验证模型效果的那一折数据就是验证集。交叉验证,就是这样一个使用验证集测试模型好坏的过程。他允许我们在模型选择的过程中,使用一部分数据(验证集)“偷窥”一下模型的效果。
泛化能力
现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力
统计学习理论试图从理论上对学习方法的泛化能力进行分析
学习方法的泛化能力往往是通过研究泛化误差的概率上界进行的, 简称为泛化误差上界(generalization error bound)
这本书里面讨论的不多,在CH08里面有讨论提升方法的误差分析, 提到$AdaBoost$不需要知道下界$\gamma$。在CH02中讨论算法的收敛性的时候有提到误分类次数的上界.
注意泛化误差的定义,书中有说事实上,泛化误差就是所学习到的模型的期望风险
生成模型与判别模型
监督学习方法可分为生成方法(generative approach)与判别方法(discriminative approach)
生成方法
generative approach
- 可以还原出联合概率分布$P(X,Y)$
- 收敛速度快, 当样本容量增加时, 学到的模型可以更快收敛到真实模型
- 当存在隐变量时仍可以用
判别方法
discriminative approach
- 直接学习条件概率$P(Y|X)$或者决策函数$f(X)$
- 直接面对预测, 往往学习准确率更高
- 可以对数据进行各种程度的抽象, 定义特征并使用特征, 可以简化学习问题
习题解答
1.1 说明伯努利模型的极大似然估计以及贝叶斯估计中的统计学方法三要素
伯努利模型是定义在取值为0与1的随机变量上的概率分布。统计学分为两派:经典统计学派和贝叶斯统计学派。两者的不同主要是,经典统计学派认为模型已定,参数未知,参数是固定的,只是还不知道;贝叶斯统计学派是通过观察到的现象对概率分布中的主观认定不断进行修正。
极大似然估计用的是经典统计学派的策略,贝叶斯估计用的是贝叶斯统计学派的策略;为了得到使经验风险最小的参数值,使用的算法都是对经验风险求导,使导数为0。
定义随机变量$A$为一次伯努利试验的结果,$A$的取值为${0,1}$,概率分布为$P(A)$:
$P(A=1)=θ,P(A=0)=1-θ$
极大似然估计
$L(θ)=\prod_{i=1}^nP(A_i)=θ^k(1-θ)^{n-k}$上述估计通过取对数求导得到,$A_i$为第$i$次随机试验
贝叶斯估计
$P(θ|A_1,A_2,…,A_n)=\frac{P(A_1,A_2,…,A_n|θ)P(θ)}{P(A_1,A_2,…,A_n)}$
根据观察到的结果修正$θ$,也就是假设$θ$是随机变量,$θ$服从β分布,有很多个可能的取值,我们要取的值是在已知观察结果的条件下使$θ$出现概率最大的值。上式分母是不变的,求分子最大就可以。
$\begin{aligned}
\theta
&=arg\max \limits_\theta {P(A_1,A_2,...,A_n|\theta)P(\theta)} \\
&= arg\max \limits_\theta {\prod_{i=1}^{n}P(A_i|\theta)P(\theta)} \\
&=arg \max \limits_\theta {\theta^k(1-\theta)^{n-k}\theta^{a-1}(1-\theta)^{b-1}} \\
&=\frac{k+(a-1)}{n+(a-1)+(b-1)}
\end{aligned}$
β分布是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,是指一组定义在$(0,1)$区间的连续概率分布,有两个参数α,β>0。选定参数后就可以确定$\theta$。
* 统计学习方法的三要素为模型,策略,算法。
- 1.2 通过经验风险最小化推导极大似然估计。证明模型是条件概率分布,当损失函数是对数损失函数时,经验风险最小化等价于极大似然估计。
- 模型是条件概率分布:$Pθ(Y|X)$,
损失函数是对数损失函数:$L(Y,Pθ(Y|X))=−logPθ(Y|X)$
经验风险为:$$ \begin{aligned}
R{emp}(f)&=\frac{1}{N}\sum{i=1}^{N}L(y_i,f(x_i)) \
&=\frac{1}{N}\sum{i=1}^{N}-logP(yi|x_i) \
&=-\frac{1}{N}\sum{i=1}^{N}logP(y_i|x_i)
\end{aligned}$$
- 模型是条件概率分布:$Pθ(Y|X)$,
极大似然估计的似然函数为:
- 取对数
- 因此,当损失函数是对数损失函数时,经验风险最小化等价于极大似然估计。