Skip to content

Latest commit

 

History

History
182 lines (120 loc) · 10.8 KB

machine_learning_base.adoc

File metadata and controls

182 lines (120 loc) · 10.8 KB

机器学习基本概念

统计学习

统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,也成为统计机器学习。 统计学习的对象是数据,它从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析与预测中去, 统计学习关于数据的基本假设是:同类数据具有一定的统计规律性.

统计学习的目的是对数据进行预测与分析,是通过构建概率统计模型实现的,统计学习总的目的就是考虑学习什么样的模型和如何学习模型, 以使模型能对数据进行准确的预测和分析,同时考虑尽可能的提高学习效率.

统计学习的方法包括:监督学习、非监督学习、半监督学习和强化学习,我们重点讨论监督学习.

统计学习三要素

模型

在监督学习中,模型就是指要学习的条件概率分布或决策函数。假设空间中的模型一般有无穷多个,假设空间可定义为:

\begin{equation} F=\left \{ f|Y=f(X) \right \} \end{equation}

假设空间通常是由参数向量决定的函数簇,其中参数向量取值于n维欧氏空间,称为参数空间。

\begin{equation} F=\left \{ f|Y=f_{\theta }(X),\theta \in R^{n} \right \} \end{equation}

假设空间也可以定义为条件概率的集合:

\begin{equation} F=\left \{ P|P_{\theta }(Y|X),\theta \in R^{n} \right \} \end{equation}

策略

有了模型的假设空间,统计学习接着要考虑的是按照什么样的准则学习或选择最优的模型,这就是策略。

损失函数

策略用来解决最优模型的选择问题,那么如何评价模型优劣,这就是损失函数或代价函数,下面是一些常见的损失函数:
(1)0-1损失

\begin{equation} L(Y|f(X))=\left\{\begin{matrix} 1,Y\neq f(X) & \\ 0,Y=f(X)& \end{matrix}\right. \end{equation}

(2)平方损失

\begin{equation} L(Y|f(X))=(Y-f(X))^{2} \end{equation}

(3)绝对损失

\begin{equation} L(Y|f(X))=\left |Y-f(X) \right | \end{equation}

(4)对数损失

\begin{equation} L(Y|f(X))=-log(P(Y|X) \end{equation}

损失函数越小,模型就越好,理论上的最优模型应该是损失函数的期望值最小,而理论模型是关于联合分布下的平均损失,称为期望损失或风险损失,然而现实的问题是联合分布是未知的,如果已知也就不需要学习了。

所以机器学习采用的方法时是通过用训练数据集上的平均损失近似期望损失,训练集上的风险我们称为经验风险,根据大数定理,当训练样本数量趋近于无穷时,经验风险趋近于期望风险。

但是现实中的训练样本数量是有限的,甚至很小,所以直接使用经验风险估计期望风险常常不理想,需要对经验风险进行一定的矫正,这就关系到监督学习的两个基本策略:经验风险最小化和结构风险最小化

经验风险最小化

经验风险最小化的策略认为:经验风险最小化的模型是最优模型,根据这一策略, 按照经验风险最小化策略求最优模型就是求解最优化问题:

\begin{equation} min\frac{1}{m}\sum_{i=1}^{m}L(y_{i},f(x_{i})) \end{equation}

极大似然估计就是经验风险最小化的典型例子,当模型是条件概率,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。

但是,当样本量较少时,经验风险最小化学习的效果未必很好,会产生过拟合的问题,结构风险最小化是为了防止过拟合而提出的策略。

结构风险最小化

结构风险最小化等价于正则化,结构风险在经验风险上加上表示模型复杂度的正则化项或惩罚项,结构风险求解的最优化问题是:

\begin{equation} min\frac{1}{m}\sum_{i=1}^{m}L(y_{i},f(x_{i}))+\lambda J(f) \end{equation}

其中 \(J(f)\) 为模型复杂度,\(\lambda \geqslant 0\)是系数,用以权衡经验风险和模型复杂度。结构风险小需要经验风险和模型复杂度同时小,结构风险小的模型往往对未知的测试数据和已知的训练数据都有较好的预测.

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

Important
经验风险最小化深度理解

模型是条件概率分布,优化目标可以表示为概率连乘的形势,如果损失函数是对数损失,即可以写成连加的形势,由于最大后验概率可以写成似然函数和先验概率分布的乘积,对数损失后,先验概率就变成似然函数连加后的一项,对比上面公式,先验概率就刚好等价于模型复杂度,因此这种情况下,结构风险最小化就等价于最大后验概率估计。

  • 我们将会在一个独立的小节阐述如何用贝叶斯理论理解本章的概念

算法

从假设空间选择最优模型后,需要考虑用什么计算方法求解最优模型,如果最优化问题有显式的解析解,这个最优化问题就比较简单,但通常解析解不存在,这就需要用数值计算的方法求解,如何保证找到全局最优解,并使求解的过程高效,是算法最核心的问题。

模型评估

统计学习的目的是使学到的模型不仅对已知数据且对未知数据都有很好的预测能力,一般采用训练误差和测试误差作为评价模型的标准,而最终决定模型是否真的不错,是由模型在未知数据上的预测能力决定的。

通常将学习方法对未知数据的预测能力称为泛化能力。因此选择模型时一定是选择泛化能力强的模型,而这个指标很难量化,通常在模型选择时参考奥卡姆剃刀原理,即当两个模型在测试集上具有相近的误差时,倾向于选择更简单的模型。

换句话说,越复杂的模型,其过拟合的风险也就越高,一味追求对训练数据的预测能力,会导致模型的复杂度高于真是模型的复杂度,这种现象就是过拟合

避免模型过拟合的方法有很多,我们重点介绍常用的两种方法:正则化和交叉验证

正则化

模型选择的典型方法是正则化,正则化是结构最小化策略的实现,是在经验风险上加上一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大,正则化一般的形势:

\begin{equation} min\frac{1}{m}\sum_{i=1}^{m}L(y_{i},f(x_{i}))+\lambda J(f) \end{equation}

其中,第一项是经验风险,第二项是正则化项,正则化项可以取不同的形势,常见的有L1和L2正则化.

正则化的作用是选择经验风险和模型复杂度同时较小的模型,正则化符合奥卡姆剃刀原理:在所有可能选择的模型中,能够很好的解释已知数据并且十分简单才是最好的模型。从贝叶斯的角度来看,正则化对应于模型的先验概率,可以假设复杂的模型具有较小的先验概率,简单的模型有较大的先验概率

Important
正则化项深入理解

如果正则化项等价于模型的复杂度,那么复杂模型的正则化项应该较大,如果正则化想对应于模型的先验概率,那么复杂模型应该具有较大的先验概率才对? 其实,最大后验概率是一个\(max\)问题,而最优化问题是一个\(min\)问题,在最大后验概率转换为最优化问题时,需要给优化项取负值。

交叉验证

经验告诉我们,交叉验证非常非常重要,任何模型都会多少有一些超参数需要调(即调参),不同的超参数对应了不同的模型,如果选择超参数和对应的模型呢?让不同超参数对应的模型都在同一份验证集上评估,选择性能最优的模型。

理想条件下,当样本数据充足时,一般将数据分成:训练集、验证集和测试集,即模型的学习有完全独立的验证数据,训练集负责模型的训练,验证集负责模型选择,而测试集负责模型最终的评估。

实际情况下,样本的数据量往往较少,此时常用的交叉验证有:简单交叉验证-将数据分成7:3的训练集和测试集,测试集负责验证和模型选择;K折交叉验证-将数据随机分成K份,选取其中一份作为测试集,其余K-1份训练,将这一过程进行K次选择重复进行,最后选出K次评估中平均测试误差最小的模型;留一法-当数据严重缺乏时使用,实际应用很少。

泛化能力

泛化能力是模型最本质的要求,也机器学习中最核心的概念。经验风险最小化的角度考虑,训练误差小的模型,其泛化误差也会小,应用Hoeffding不等式证明泛化误差的上界。

生成模型和判别模型

判别模型

以二分类问题为例,在解空间中寻找一条直线把两种类别的样本分开,对于新的样本只需判断在直线的哪一侧即可,这种直接对问题求解的的方法称为判别模型。

生成模型

生成模型会首先对两类样本分别进行建模,用新的样本去分别匹配两个模型,匹配度高的作为新样本的类别。

形式化地说,判别模型是直接对进行建模或者直接学习输入空间到输出空间的映射关系,而生成模型是对条件概率和先验概率进行建模,然后按照贝叶斯公式求出后验概率。使得后验概率最大的类别就是新样本的预测值。

\begin{align} p(y|x) = \frac{p(y)\cdot p(x|y)}{p(x)} \\ \underset{y}{argmax\, p(y|x)} = \underset{y}{argmax\, p(x|y)\cdot p(y)} \end{align}

Example 1. 贝叶斯学派下的生成模型是如何对未知样本进行预测

假设仍然是个二分类问题,问题是预测一个人是男人还是女人,为了简单起见,假设特征只有一个:是否有胡子。

思路肯定是分别求解新样本是男人和女人的概率,取概率最大的类别作为预测结果,假定新样本为"有胡子":
p(y=male|x=beard) = p(x=beard|y=male)✖️p(y=male)-- (1)

p(y=female|x=beard) = p(x=beard|y=female)✖️p(y=female) -- (2)
关键在于如何求解上面两个概率值,其实上面公式的概率值全部都是统计值,也就是训练样本中,根据条件统计出来的概率。比如第一个公式,是男人的概率就是样本中男人的占比,而条件概率(似然函数)就是男人中有胡子的概率。

你可能会问特征参数去哪了?求特征参数的方法是判别模型,而生成模型不需要!