cda

全国校区

您的位置:首页 > 精彩阅读 > 机器学习与深度学习核心知识点总结(一)

机器学习与深度学习核心知识点总结(一)

2019-12-02

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

作者 | 小小挖掘机

来源 | SIGAI

数学

1.列举常用的最优化方法

梯度下降法

牛顿法,

拟牛顿法

坐标下降法

梯度下降法的改进型如AdaDelta,AdaGrad,Adam,NAG等。

2.梯度下降法的关键点

梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率设置的足够小,并且没有到达梯度为0的点处,每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的xk+1位于迭代之前的值xk的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。

梯度下降法只能保证找到梯度为0的点,不能保证找到极小值点。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。

梯度下降法在机器学习中应用广泛,尤其是在深度学习中。AdaDelta,AdaGrad,Adam,NAG等改进的梯度下降法都是用梯度构造更新项,区别在于更新项的构造方式不同。

3.牛顿法的关键点

牛顿法利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

其中H为Hessian矩阵,g为梯度向量。牛顿法不能保证每次迭代时函数值下降,也不能保证收敛到极小值点。在实现时,也需要设置学习率,原因和梯度下降法相同,是为了能够忽略泰勒展开中的高阶项。学习率的设置通常采用直线搜索(line search)技术。

在实现时,一般不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

其解d称为牛顿方向。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。

牛顿法比梯度下降法有更快的收敛速度,但每次迭代时需要计算Hessian矩阵,并求解一个线性方程组,运算量大。另外,如果Hessian矩阵不可逆,则这种方法失效。

4.拉格朗日乘数法

拉格朗日乘数法是一个理论结果,用于求解带有等式约束的函数极值。对于如下问题:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

构造拉格朗日乘子函数:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

在最优点处对x和乘子变量的导数都必须为0:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

解这个方程即可得到最优解。对拉格朗日乘数法更详细的讲解可以阅读任何一本高等数学教材。机器学习中用到拉格朗日乘数法的地方有:

主成分分析

线性判别分析

流形学习中的拉普拉斯特征映射

隐马尔科夫模型

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

5.凸优化

数值优化算法面临两个方面的问题:局部极值,鞍点。前者是梯度为0的点,也是极值点,但不是全局极小值;后者连局部极值都不是,在鞍点处Hessian矩阵不定,即既非正定,也非负定。

凸优化通过对目标函数,优化变量的可行域进行限定,可以保证不会遇到上面两个问题。凸优化是一类特殊的优化问题,它要求:

优化变量的可行域是一个凸集

目标函数是一个凸函数

凸优化最好的一个性质是:所有局部最优解一定是全局最优解。机器学习中典型的凸优化问题有:

线性回归

岭回归

LASSO回归

Logistic回归

支持向量机

Softamx回归

6.拉格朗日对偶

对偶是最优化方法里的一种方法,它将一个最优化问题转换成另外一个问题,二者是等价的。拉格朗日对偶是其中的典型例子。对于如下带等式约束和不等式约束的优化问题:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

与拉格朗日乘数法类似,构造广义拉格朗日函数:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)
<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

必须满足

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

的约束。原问题为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

即先固定住x,调整拉格朗日乘子变量,让函数L取极大值;然后控制变量x,让目标函数取极小值。原问题与我们要优化的原始问题是等价的。

对偶问题为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

和原问题相反,这里是先控制变量x,让函数L取极小值;然后控制拉格朗日乘子变量,让函数取极大值。

一般情况下,原问题的最优解大于等于对偶问题的最优解,这称为弱对偶。在某些情况下,原问题的最优解和对偶问题的最优解相等,这称为强对偶。

强对偶成立的一种条件是Slater条件:一个凸优化问题如果存在一个候选x使得所有不等式约束都是严格满足的,即对于所有的i都有gi (x)<0,不等式不取等号,则强对偶成立,原问题与对偶问题等价。注意,Slater条件是强对偶成立的充分条件而非必要条件。

拉格朗日对偶在机器学习中的典型应用是支持向量机

7.KKT条件

KKT条件是拉格朗日乘数法的推广,用于求解既带有等式约束,又带有不等式约束的函数极值。对于如下优化问题:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

和拉格朗日对偶的做法类似,KKT条件构如下乘子函数:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

λ和μ称为KKT乘子。在最优解处

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

应该满足如下条件:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

等式约束

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

和不等式约束

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

是本身应该满足的约束,

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

和之前的拉格朗日乘数法一样。唯一多了关于gi (x)的条件:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

KKT条件只是取得极值的必要条件而不是充分条件。

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

8.特征值与特征向量

对于一个n阶矩阵A,如果存在一个数λ和一个非0向量X,满足:

则称λ为矩阵A的特征值,X为该特征值对应的特征向量。根据上面的定义有下面线性方程组成立:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

根据线性方程组的理论,要让齐次方程有非0解,系数矩阵的行列式必须为0,即:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

上式左边的多项式称为矩阵的特征多项式。矩阵的迹定义为主对角线元素之和:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

根据韦达定理,矩阵所有特征值的和为矩阵的迹:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

同样可以证明,矩阵所有特征值的积为矩阵的行列式:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

利用特征值和特征向量,可以将矩阵对角化,即用正交变换将矩阵化为对角阵。实对称矩阵一定可以对角化,半正定矩阵的特征值都大于等于0,在机器学习中,很多矩阵都满足这些条件。特征值和特征向量在机器学习中的应用包括:正态贝叶斯分类器、主成分分析,流形学习,线性判别分析,谱聚类等。

9.奇异值分解

矩阵对角化只适用于方阵,如果不是方阵也可以进行类似的分解,这就是奇异值分解,简称SVD。假设A是一个m x n的矩阵,则存在如下分解:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

其中U为m x m的正交矩阵,其列称为矩阵A的左奇异向量;

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

m x n的对角矩阵,除了主对角线

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

以外,其他元素都是0;V为n x n的正交矩阵,其行称为矩阵A的右奇异向量。U的列为AAT的特征向量,V的列为AT A的特征向量。

10.最大似然估计

有些应用中已知样本服从的概率分布,但是要估计分布函数的参数

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

,确定这些参数常用的一种方法是最大似然估计。

最大似然估计构造一个似然函数,通过让似然函数最大化,求解出θ。最大似然估计的直观解释是,寻求一组参数,使得给定的样本集出现的概率最大。

假设样本服从的概率密度函数为

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

,其中X为随机变量,θ为要估计的参数。给定一组样本xi,i =1,...,l,它们都服从这种分布,并且相互独立。最大似然估计构造如下似然函数:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

其中xi是已知量,这是一个关于θ的函数,我们要让该函数的值最大化,这样做的依据是这组样本发生了,因此应该最大化它们发生的概率,即似然函数。这就是求解如下最优化问题:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

乘积求导不易处理,因此我们对该函数取对数,得到对数似然函数:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

最后要求解的问题为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

最大似然估计在机器学习中的典型应用包括logistic回归,贝叶斯分类器,隐马尔科夫模型等。

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

基本概念

1.有监督学习与无监督学习

根据样本数据是否带有标签值,可以将机器学习算法分成有监督学习和无监督学习两类。有监督学习的样本数据带有标签值,它从训练样本中学习得到一个模型,然后用这个模型对新的样本进行预测推断。有监督学习的典型代表是分类问题和回归问题。

无监督学习对没有标签的样本进行分析,发现样本集的结构或者分布规律。无监督学习的典型代表是聚类,表示学习,和数据降维,它们处理的样本都不带有标签值。

2.分类问题与回归问题

有监督学习中,如果样本的标签是整数,则预测函数是一个向量到整数的映射,这称为分类问题。如果标签值是连续实数,则称为回归问题,此时预测函数是向量到实数的映射。

3.生成模型与判别模型

分类算法可以分成判别模型和生成模型。给定特征向量x与标签值y,生成模型对联合概率p(x,y)建模,判别模型对条件概率p(y|x)进行建模。另外,不使用概率模型的分类器也被归类为判别模型,它直接得到预测函数而不关心样本的概率分布:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

判别模型直接得到预测函数f(x),或者直接计算概率值p(y|x),比如SVM和logistic回归,softmax回归,判别模型只关心决策面,而不管样本的概率分布的密度。

生成模型计算p(x, y)或者p(x|y) ,通俗来说,生成模型假设每个类的样本服从某种概率分布,对这个概率分布进行建模。

机器学习中常见的生成模型有贝叶斯分类器,高斯混合模型,隐马尔可夫模型,受限玻尔兹曼机,生成对抗网络等。典型的判别模型有决策树,kNN算法,人工神经网络支持向量机,logistic回归,AdaBoost算法等。

4.交叉验证

交叉验证(cross validation)是一种统计准确率的技术。k折交叉验证将样本随机、均匀的分成k份,轮流用其中的k-1份训练模型,1份用于测试模型的准确率,用k个准确率的均值作为最终的准确率。

5.过拟合欠拟合

欠拟合也称为欠学习,直观表现是训练得到的模型在训练集上表现差,没有学到数据的规律。引起欠拟合的原因有模型本身过于简单,例如数据本身是非线性的但使用了线性模型;特征数太少无法正确的建立映射关系。

过拟合也称为过学习,直观表现是在训练集上表现好,但在测试集上表现不好,推广泛化性能差。过拟合产生的根本原因是训练数据包含抽样误差,在训练时模型将抽样误差也进行了拟合。所谓抽样误差,是指抽样得到的样本集和整体数据集之间的偏差。引起过拟合的可能原因有:

模型本身过于复杂,拟合了训练样本集中的噪声。此时需要选用更简单的模型,或者对模型进行裁剪。训练样本太少或者缺乏代表性。此时需要增加样本数,或者增加样本的多样性。训练样本噪声的干扰,导致模型拟合了这些噪声,这时需要剔除噪声数据或者改用对噪声不敏感的模型。

6.偏差与方差分解

模型的泛化误差可以分解成偏差和方差。偏差是模型本身导致的误差,即错误的模型假设所导致的误差,它是模型的预测值的数学期望和真实值之间的差距。

方差是由于对训练样本集的小波动敏感而导致的误差。它可以理解为模型预测值的变化范围,即模型预测值的波动程度。

模型的总体误差可以分解为偏差的平方与方差之和:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

如果模型过于简单,一般会有大的偏差和小的方差;反之如果模型复杂则会有大的方差但偏差很小。

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

7.正则化

为了防止过拟合,可以为损失函数加上一个惩罚项,对复杂的模型进行惩罚,强制让模型的参数值尽可能小以使得模型更简单,加入惩罚项之后损失函数为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

正则化被广泛应用于各种机器学习算法,如岭回归,LASSO回归,logistic回归,神经网络等。除了直接加上正则化项之外,还有其他强制让模型变简单的方法,如决策树的剪枝算法,神经网络训练中的dropout技术,提前终止技术等。

8.维数灾难

为了提高算法的精度,会使用越来越多的特征。当特征向量维数不高时,增加特征确实可以带来精度上的提升;但是当特征向量的维数增加到一定值之后,继续增加特征反而会导致精度的下降,这一问题称为维数灾难。

贝叶斯分类器

贝叶斯分类器将样本判定为后验概率最大的类,它直接用贝叶斯公式解决分类问题。假设样本的特征向量为x,类别标签为y,根据贝叶斯公式,样本属于每个类的条件概率(后验概率)为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

分母p(x)对所有类都是相同的,分类的规则是将样本归到后验概率最大的那个类,不需要计算准确的概率值,只需要知道属于哪个类的概率最大即可,这样可以忽略掉分母。分类器的判别函数为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

在实现贝叶斯分类器时,需要知道每个类的条件概率分布p(x|y)即先验概率。一般假设样本服从正态分布。训练时确定先验概率分布的参数,一般用最大似然估计,即最大化对数似然函数。

如果假设特征向量的各个分量之间相互独立,则称为朴素贝叶斯分类器,此时的分类判别函数为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

实现时可以分为特征分量是离散变量和连续变量两种情况。贝叶斯分分类器是一种生成模型,可以处理多分类问题,是一种非线性模型。

决策树

决策树是一种基于规则的方法,它用一组嵌套的规则进行预测。在树的每个决策节点处,根据判断结果进入一个分支,反复执行这种操作直到到达叶子节点,得到预测结果。这些规则通过训练得到,而不是人工制定的。

决策树既可以用于分类问题,也可以用于回归问题。分类树的映射函数是多维空间的分段线性划分,用平行于各坐标轴的超平面对空间进行切分;回归树的映射函数是分段常数函数。决策树是分段线性函数而不是线性函数。只要划分的足够细,分段常数函数可以逼近闭区间上任意函数到任意指定精度,因此决策树在理论上可以对任意复杂度的数据进行拟合。对于分类问题,如果决策树深度够大,它可以将训练样本集的所有样本正确分类。

决策树的训练算法是一个递归的过程,首先创建根节点,然后递归的建立左子树和右子树。如果练样本集为D,训练算法的流程为:

1.用样本集D建立根节点,找到一个判定规则,将样本集分裂成D1和D2两部分,同时为根节点设置判定规则。

2.用样本集D1递归建立左子树。

3.用样本集D2递归建立右子树。

4.如果不能再进行分裂,则把节点标记为叶子节点,同时为它赋值。

对于分类树,如果采用Gini系数作为度量准则,决策树在训练时寻找最佳分裂的依据为让Gini不纯度最小化,这等价于让下面的值最大化:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

寻找最佳分裂时需要计算用每个阈值对样本集进行分裂后的纯度值,寻找该值最大时对应的分裂,它就是最佳分裂。如果是数值型特征,对于每个特征将l个训练样本按照该特征的值从小到大排序,假设排序后的值为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

接下来从x1开始,依次用每个xi作为阈值,将样本分成左右两部分,计算上面的纯度值,该值最大的那个分裂阈值就是此特征的最佳分裂阈值。在计算出每个特征的最佳分裂阈值和上面的纯度值后,比较所有这些分裂的纯度值大小,该值最大的分裂为所有特征的最佳分裂。

决策树可以处理属性缺失问题,采用的方法是使用替代分裂规则。为了防止过拟合,可以对树进行剪枝,让模型变得更简单。

决策树是一种判别模型,既支持分类问题,也支持回归问题,是一种非线性模型,它支持多分类问题。

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

随机森林

随机森林是一种集成学习算法,是Bagging算法的具体实现。集成学习机器学习中的一种思想,而不是某一具体算法,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型称为弱学习器。在预测时使用这些弱学习器模型联合进行预测,训练时需要依次训练出这些弱学习器。

随机森林用有放回抽样(Bootstrap抽样)构成出的样本集训练多棵决策树,训练决策树的每个节点时只使用了随机抽样的部分特征。预测时,对于分类问题,一个测试样本会送到每一棵决策树中进行预测,然后投票,得票最多的类为最终分类结果。对于回归问题,随机森林的预测输出是所有决策树输出的均值。

假设有n个训练样本。训练每一棵树时,从样本集中有放回的抽取n个样本,每个样本可能会被抽中多次,也可能一次都没抽中。如果样本量很大,在整个抽样过程中每个样本有0.368的概率不被抽中。由于样本集中各个样本是相互独立的,在整个抽样中所有样本大约有36.8%没有被抽中。这部分样本称为包外(Out Of Bag,简称OOB)数据。

用这个抽样的样本集训练一棵决策树,训练时,每次寻找最佳分裂时,还要对特征向量的分量采样,即只考虑部分特征分量。由于使用了随机抽样,随机森林泛化性能一般比较好,可以有效的降低模型的方差。

如果想更详细的了解随机森林的原理,请阅读SIGAI之前的公众号文章“随机森林概述”。随机森林是一种判别模型,既支持分类问题,也支持回归问题,并且支持多分类问题,这是一种非线性模型。

AdaBoost算法

AdaBoost算法也是一种集成学习算法,用于二分类问题,是Boosting算法的一种实现。它用多个弱分类器的线性组合来预测,训练时重点关注错分的样本,准确率高的弱分类器权重大。AdaBoost算法的全称是自适应,它用弱分类器的线性组合来构造强分类器。弱分类器的性能不用太好,仅比随机猜测强,依靠它们可以构造出一个非常准确的强分类器。强分类器的计算公式为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

其中x是输入向量,F(x)是强分类器,ft(x)是弱分类器,at是弱分类器的权重,T为弱分类器的数量,弱分类器、的输出值为+1或-1,分别对应正样本和负样本。分类时的判定规则为:

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

强分类器的输出值也为+1或-1,同样对应于正样本和负样本。

训练时,依次训练每一个若分类器,并得到它们的权重值。训练样本带有权重值,初始时所有样本的权重相等,在训练过程中,被前面的弱分类器错分的样本会加大权重,反之会减小权重,这样接下来的弱分类器会更加关注这些难分的样本。弱分类器的权重值根据它的准确率构造,精度越高的弱分类器权重越大。

给定l个训练样本(xi,yi ),其中xi特征向量,yi为类别标签,其值为+1或-1。训练算法的流程为:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

根据计算公式,错误率低的弱分类器权重大,它是准确率的增函数。AdaBoost算法在训练样本集上的错误率会随着弱分类器数量的增加而指数级降低。它能有效的降低模型的偏差

AdaBoost算法从广义加法模型导出,训练时求解的是指数损失函数的极小值:

<wordsbank_match class='wbmatch' location='/map/jiqixuexi/' style='cursor:pointer;'>机器学习</wordsbank_match>与<wordsbank_match class='wbmatch' location='/map/shenduxuexi/' style='cursor:pointer;'>深度学习</wordsbank_match>核心知识点总结(一)

求解时采用了分阶段优化,先得到弱分类器,然后确定弱分类器的权重值,这就是弱分类器,弱分类器权重的来历。除了离散型AdaBoost之外,从广义加法模型还可以导出其他几种AdaBoost算法,分别是实数型AdaBoost,Gentle型AdaBoost,Logit型AdaBoost,它们使用了不同的损失函数和最优化算法。

标准的AdaBoost算法是一种判别模型,只能支持二分类问题。它的改进型可以处理多分类问题。

完 谢谢观看

分享
收藏

OK