美文网首页
葫芦书第三章——经典算法

葫芦书第三章——经典算法

作者: 单调不减 | 来源:发表于2019-08-08 22:40 被阅读0次

没有最好的分类器,只有最合适的分类器。随着神经网络模型日趋火热,深度学习大有一统江湖之势,传统机器学习算法似乎已经彻底被深度学习的光环所笼罩。然而,深度学习是数据驱动的,失去了数据,再精密的深度网络结构也是画饼充饥,无的放矢。在很多实际问题中,我们很难得到海量且带有精确标注的数据,这时深度学习也就没有大显身手的余地,反而许多传统方法可以灵活巧妙地进行处理。

1、支持向量机

1.1、在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?

  • 我的回答

不是,容易举出二维平面上线性可分的两类点在SVM分类的直线上的投影并非线性可分的例子。

  • 参考答案

如上所述,找到一个在超平面上的投影非线性可分的例子很简单:

显然,这些点在分类超平面(绿色直线)上相间隔,并不是线性可分的。然而,举出反例只是说明了存在非线性可分的情况,实际上,我们有更强的结论:

对于任意线性可分的两组点, 它们在SVM分类的超平面上的投影都是线性不可分的

由于SVM的分类超平面仅由支持向量决定,我们可以考虑一个只含支持向量的SVM模型场景,使用反证法来证明。假设存在一个SVM分类超平面使所有支持向量在该超平面上的投影依然线性可分。

根据简单的初等几何知识不难发现,图中AB两点连线的中垂线所组成的超平面(绿色虚线)是中相较于绿色实线超平面更优的解,这与之前假设绿色实线超平面为最优的解相矛盾。考虑最优解对应的绿色虚线,两组点经过投影后,并不是线性可分的。

1.2、是否存在一组参数使SVM训练误差为0?

  • 我的回答

存在。

  • 参考答案

一个使用高斯核训练的SVM中,若给定训练集中不存在两个点在同一位置,则存在一组参数使得该SVM的训练误差为0

根据SVM的原理,我们可以将SVM的预测公式写为:

f(x)=\sum_{n=1}^m\alpha_i y^{(i)}K(x^{(i)},x)+b

其中\{(x^{(1)},y^{(1)}),\dots,(x^{(m)},y^{(m)}) \}训练样本,而\{\alpha_1,\dots,\alpha_m\}以及高斯核参数\gamma为训练样本的参数。由于不存在两个点在同一位置,因此对于任意的i\neq j,有||x^{(i)}-x^{(j)}||\geq \epsilon。我们可以对任意i固定\alpha_i=1以及b=0,只保留参数\gamma,则有:

\begin{aligned} f(x) &=\sum_{i=1}^{m} \alpha_{i} y^{(i)} K\left(x^{(i)}, x\right)+b \\ &=\sum_{i=1}^{m} y^{(i)} K\left(x^{(i)}, x\right) \\ &=\sum_{i=1}^{m} y^{(i)} \mathrm{e}^{-\left\|x-x^{(i)}\right\|^{2} / \gamma^{2}}\\ \end{aligned}

将任意x^{(j)}代入上式有:

\begin{array}{c}{f\left(x^{(j)}\right)=\sum_{i=1}^{m} y^{(i)} \mathrm{e}^{-\left\|x^{(j)}-x^{(i)}\right\|^{2} / \gamma^{2}}} \\ {f\left(x^{(j)}\right)-y^{(j)}=\sum_{i=1, i \neq j}^{m} y^{(i)} \mathrm{e}^{-\left\|x^{(i)}-x^{(i)}\right\|^{2} / \gamma^{2}}} \\ {\left\|f\left(x^{(j)}\right)-y^{(j)}\right\| \leqslant \sum_{i=1, i \neq j}^{m} \mathrm{e}^{-\left\|x^{(i)}-x^{(i)}\right\|^{2} / \gamma^{2}}}\end{array}

由题意知||x^{(i)}-x^{(j)}||\geq \epsilon,取\gamma=\epsilon / \sqrt{\log{m}} ,从而:

\begin{aligned}\left\|f\left(x^{(j)}\right)-y^{(j)}\right\| & \leqslant\left\|\sum_{i=1, i \neq j}^{m} \mathrm{e}^{-\left\|x^{(j)}-x^{(i)}\right\|^{2} / \gamma^{2}}\right\| \\ & \leqslant\left\|\sum_{i=1, i \neq j}^{m} \mathrm{e}^{-\log m}\right\|=\frac{m-1}{m}<1 \end{aligned}

所以,对于任x^{(j)},预测结果f(x^{(j)})与样本真实标签y^{(j)}的距离小于1。注意到,y\in\{1,-1\},当训练样本为正例,即y^{(j)}=1时,预测结果 f(x^{(j)})>0,样本被预测为正例,而当训练样本为负例,即y^{(j)}=-1时,预测结果f(x^{(j)})<0,样本被预测为负例。因此所有样本的类别都被正确预测,训练误差为0。

1.3、训练误差为0的SVM分类器一定存在吗?

  • 我的回答

存在。

  • 参考答案

虽然在问题2中我们找到了一组参数\{\alpha_1,\dots,\alpha_m\}以及高斯核参数\gamma使得SVM的训练误差为0,但这组参数不一定是满足SVM条件的一个解。

考虑SVM模型中解的限制条件y^{(j)}f(x^{(j)})\geq 1。我们己经得到了一组参数使得当y^{(j)}=1f(x^{(j)})>0y^{(j)}=-1f(x^{(j)})<0,即y^{(j)}f(x^{(j)})\geq 0,现在需要找到一组参数满足更强的条件,即y^{(j)}f(x^{(j)})\geq 1

固定b=0,于是预测公式f(x)=\sum_{n=1}^m\alpha_i y^{(i)}K(x^{(i)},x),将y^{(j)}f(x^{(j)})展开有:

\begin{aligned} y^{(j)} f\left(x^{(j)}\right) &=y^{(j)} \sum_{i=1}^{m} \alpha_{i} y^{(i)} K\left(x^{(i)}, x^{(j)}\right) \\ &=\alpha_{j} y^{(j)} y^{(j)} K\left(x^{(j)}, x^{(j)}\right)+\sum_{i=1, i \neq j}^{m} \alpha_{i} y^{(i)} y^{(j)} K\left(x^{(i)}, x^{(j)}\right) \\ &=\alpha_{j}+\sum_{i=1, i \neq j}^{m} \alpha_{i} y^{(i)} y^{(j)} K\left(x^{(i)}, x^{(j)}\right) \end{aligned}

我们可以把每个\alpha_j都选择一个很大的值,同时取一个非常小的\gamma,使得核映射项K(x^{(i)},x)很小,于是\alpha_j在上式中占据绝对主导地位,这样就保证对任意jy^{(j)}f(x^{(j)})\geq 1,满足SVM解的条件。

1.4、加入松弛变量的SVM的训练误差可以为0吗?

  • 我的回答

未必。

  • 参考答案

使用SMO算法训练的线性分类器并不一定能得到训练误差为0的模型。 这是由于我们的优化目标改变了。并不再是使训练误差最小。

考虑带松弛变量的SVM模型优化的目标函数所包含的两项C\sum_{i=1}^m \xi_i\frac{1}{2}||w||^2。当我们的参数C选取较小的值时,后一顶(正则项)将占据优化的较大比重。这样,一个带有训练误差,但是参数较小的点将成为最优的结果。一个简单的特例是,当C取0时,w也取0即可达到优化目标,但是显然此时我们的训练误差不一定能达到0。

2、逻辑回归

2.1、逻辑回归相比于线性回归,有何异同?

  • 我的回答

1、相同的是,两者都是有监督学习方法,且逻辑回归是建立在线性回归基础之上的。

2、不同的是,线性回归用于回归,而逻辑回归用于用于分类。

  • 参考答案

首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别

逻辑回归中,因变量取值是一个二元分布,模型学习得出的是E[y|x;\theta],即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是y^{'}= θ^T x,是对我们假设的真实关系y = θ^T x+\epsilon的一个近似,其中\epsilon代表误差项,我们使用这个近似项来处理回归问题。

实际上,将逻辑回归的公式进行整理,我们可以得到:

\log \frac{1-p}{p}=θ^T x

其中p =P(y=1|x)也就是将给定输入x预测为正样本的概率。

在关于逻辑回归的讨论中,我们均认为是因变量 ,而非\frac{1-p}{p},这便这便引出逻辑回归与线性回归最大的区别,即逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。并且在自变量x与超参数θ确定的情况下,逻辑回归可以看作广义线性模型(Generalized Lmear Models )在因变量y服从二元分布时的一个特殊情况。

当然逻辑回归和线性回归也不乏相同之处。首先我们可以认为二者都使用了极大似然估计来对训练样本进行建模。 线性回归使用最小二乘法实际上就是在自变量x与超参数θ确定,因变量y服从正态分布的假设下,使用极大似然估计的一个化筒,而逻辑回归中通过对似然函数学习得到最佳参数θ。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法,这也是监督学习中一个常见的相似之处。

2.2、使用逻辑回归处理多标签的分类问题时,有哪些常见做法,分别应用于哪些场景,它们之间又有怎样的关系?

  • 我的回答

对于多分类问题,可采用多项逻辑回归(Softmax Regression)。

  • 参考答案

如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类:

h_{\theta}(x)=\left[\begin{array}{c}{p(y=1 | x ; \theta)} \\ {p(y=2 | x ; \theta)} \\ {\vdots} \\ {p(y=k | x ; \theta)}\end{array}\right]=\frac{1}{\sum_{j=1}^{k} \mathrm{e}^{\theta_{j}^{\mathrm{T}} x}}\left[\begin{array}{c}{\mathrm{e}^{\theta_{1}^{\mathrm{T}} x}} \\ {\mathrm{e}^{\theta_{2}^{\mathrm{T}} x}} \\ {\vdots} \\ {\mathrm{e}^{\theta_{k}^{\mathrm{T}} x}}\end{array}\right]

一般来说,多项逻辑回归具有参数冗余的特点,即将\theta_1,\dots,\theta_k同时加减一个向量后预测结果不变。特别地,当类别数为2时:

\begin{aligned} h_{\theta}(x)=& \frac{1}{\mathrm{e}^{0 \cdot x}+\mathrm{e}^{\left(\theta_{2}^{\mathrm{T}}-\theta_{1}^{\mathrm{T}}\right) x}}\left[\begin{array}{c}{\mathrm{e}^{0 \cdot x}} \\ {\mathrm{e}^{\left(\theta_{2}^{\mathrm{T}}-\theta_{1}^{\mathrm{T}}\right) x}}\end{array}\right] \\=&\left[\begin{array}{c}{\frac{1}{1+\mathrm{e}^{\theta^{\mathrm{T}} x}}} \\ {1-\frac{1}{1+\mathrm{e}^{\theta^{\mathrm{T}} x}}}\end{array}\right] \end{aligned}

其中θ = θ_2 - θ_1。而整理后的式子与逻辑回归一致。因此,多项逻辑回归实际上是二分类逻辑回归在多标签分类下的一种拓展

当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用来区分每个样本是否可以归为第i类,训练该分类器时需要把标签重新整理为“第i类标签”与“非第i类标签”两类。通过这样的方法我们就解决了每个样本可能拥有多个标签的情况。

3、决策树

决策树是一种自上而下对样本数据进行树形分类的过程,由结点和有向边组成。结点分为内部结点和叶结点,每个内部结点表示一个特征或属性,叶结点表示类别。从顶部根结点开始起,所有样本聚在一起,经过根结点的划分,样本被分到不同的子结点中。再根据子结点的特征进一步划分,直至所有样本都被归到某一个类别(即叶结点)中。

决策树作为最基础、最常见的有监督学习模型,常被用于分类问题和回归问题,在市场营销和生物医药等领域尤其受欢迎,主要因为树形结构与销售、诊断等场景下的决策过程十分相似。完全生长的决策树模型具有简单直观、解释性强的特点。

一般而言 ,决策树的生成包含了特征选择、树的构造、树的剪枝三个过程。

3.1、决策树有哪些常用的启发函数?

  • 我的回答

1、基尼系数

2、信息增益

3、信息增益比

  • 参考答案

我们知道,决策树的目标是从一组样本数据中根据不同的特征和属性,建立一棵树形的分类结构 。 我们既希望它能拟合训练数据,达到良好的分类效果,同时又希望控制其复杂度,使得模型具有一定的泛化能力。对于个特定的问题,决策树的选择可能有很多种。从若干不同的决策树中选取最优的决策树是一个NP完全问题 , 在实际中我们通常会采用启发式学习的方法去构建一棵满足启发式条件的决策树。

常用的决策树算法有ID3,C4.5,CART,它们构建树所使用的启发式函数各是什么?除了构建准则之外,它们之间的区别与联系是什么?

1、ID3——最大信息增益

对于样本集合D,类别数为K,数据集D的经验熵表示为:

H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|}

其中C_k是样本集合D中属于第k类的样本子集,|C_k|表示该子集的元素个数,|D|表示样本集合的元素个数。

计算某个特征A对于数据集D的经验条件熵H(D|A)为:

H(D | A)=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} H\left(D_{i}\right)=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|}\left(-\sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log _{2} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|}\right)

其中D_i表示D中特征A取第i个值的样本子集,D_{ik}表示D_i中属于第k类的样本子集。

于是信息增益g(D,A)可以表示为二者之差,可得:

g(D,A)=H(D)-H(D|A)

从根结点开始,按最大信息增益的启发式算法划分结点,然后把各结点样本视作D,递归地进行上述过程,最终可以得到一颗完整的决策树。

2、C4.5一一最大信息增益比

特征A对于数据集D的信息增益比定义为:

g_R(D,A)=\frac{g(D,A)}{H_A(D)}

其中

H_A(D)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\log\frac{|D_i|}{|D|}

称为数据集D关于A的取值熵。

不难看出,相比信息增益而言,信息增益比考虑了属性A的取值多少(也就是划分结点后子结点的数目)带来的偏好影响,即最大信息增益会倾向于取值多的属性,比如一个结点中样本共有n个,恰好对应属性An个取值,按照最大信息增益的启发式算法,此划分是最佳的,但显然实际中这样的划分并不好,因此我们要对取值多的属性给予一个罚项,也就是信息增益比中的取值熵。

3、CART——最大基尼指数(Gini)

Gini系数描述的是数据的纯度,与信息摘含义类似:

Gini(D)=1-\sum_{k=1}^n (\frac{|C_k|}{|D|})^2

CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。但与ID3 , C4.5不同的是,CART是一颗二叉树,采用二元切割法,每一步将数按特征A的取值切成两份,分别进入左右子树。特征A的Gini指数定义为:

Gini(D|A)=\sum_{i=1}^n \frac{|D_i|}{|D|}Gini(D_i)

从根结点开始,按最大基尼系数的启发式算法划分结点,然后把各结点样本视作D,递归地进行上述过程,最终可以得到一颗完整的决策树。

4、三种方法差异

首先,ID3是采用信息增益作为评价标准,会倾向于取值较多的特征。C4.5实际上是对ID3进行优化,通过引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现过拟合的特性,提升决策树的泛化能力

其次,从样本类型的角度,ID3只能处理离散型变量,而C4.5和CART都可以处理连续型变量。C4.5处理连续型变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转为布尔型,从而将连续型变量转操多个取值区间的离散型变量。而对于CART,由于其构建时每次都会对特征进行二值划分,因此可以很好地适用于连续性变量

从应用角度,ID3和C4.5只能用于分类任务,而CART(Classification and Regression Tree,分类回归树)从名字就可以看出其不仅可以用于分类,也可以应用于回归任务(回归树使用最小平方误差准则)

此外,从实现细节、优化过程等角度,这三种决策树还有一些不同。比如,ID3对样本特征缺失值比较敏感,而C4.5和CART可以对缺失值进行不同方式的处理;ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在层级之间不会复用,而 CART 每个结点只会产生两个分支,因此最后会形成一颗二叉树,且每个特征可以被重复使用;ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART直接利用全部数据发现所有可能的树结构进行对比

3.2、如何对决策树进行剪枝?

  • 我的回答

1、自上而下的剪枝

2、自下而上的剪枝

  • 参考答案

决策树的剪枝通常有两种方法,预剪枝(Pre-Pruning)和后剪枝(Post-Pruning )。预剪枝即在生成决策树的过程中提前停止树的增长。而后剪枝是在已生成的过拟合的决策树上进行剪枝,得到简化版的剪枝决策树。

1、预剪枝

预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类别的样本同时存于结点中,按照多数投票的原则判断该结点所属类别。

预剪枝对于何时停止决策树的生长有以下几种方法:

1)当树到达一定深度的时候,停止树的生长。

2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。

3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候不再继续扩展。

预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模问题。但如何准确地估计何时停止树的生长(即上述方法中的深度或阈值),针对不同问题会有很大差别,需要一定经验判断。且预剪枝存在一定局限性,有欠拟合的风险

2、后剪枝

后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝。剪枝过程将子树删除,用一个叶子结点替代,该结点的类别同样按照多数投票的原则进行判断。同样地,后剪枝也可以通过在验证集上的准确率进行判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝方法通常可以得到泛化能力更强的决策树,但时间开销会更大

常见后剪枝方法包括错误率降低剪枝(Reduced Error Pruning,REP)、悲观剪枝(Pessimistic Error Pruning,PEP)、代价复杂度剪枝(Cost Complexity pruning, CCP)、最小误差剪枝(Minimum Error Pruning,MEP)、CVP (Critical Value Pruning)、OPP(Optimal Pruning)等方法,这些剪枝万法各有利弊,关注不同的优化角度,这里选取著名的CART剪枝方法CCP进行介绍。

代价复杂剪枝(CCP)主要包含以下两个步骤:

1)从完整决策树T_0开始,生成一个子树序列\{T_0,\dots,T_n\}。其中T_{i+1}T_i生成,T_n为树的根结点。具体地,当棵树T在结点t处剪枝时,它的误差增加可以用R(t)-R(T_t)表示,其中R(t)表示进行剪枝之后该结点的误差,R(T_t)表示未剪枝时子树T_t的误差。考虑到树的复杂度因素,用|L(T_t)|表示子树T_t的叶子结点数,则树在结点t剪枝后的误差增加率为:

\alpha=\frac{R(t)-R(T_t)}{|L(T_t)|-1}

在得到T_i后 , 我们每步选择α最小的结点进行相应剪枝。

2)在子树序列中,根据真实误差选择最佳的决策树。CCP给出了两种常用的方法:一种是基于独立剪枝数据集,该方法只能从子树序列\{T_0,\dots,T_n\}中选择最佳决策树,而不能在所有可能的子树中寻找最优解,因此性能上会有一定不足。另一种是基于k折交叉验证,将数据集分成k份,前k-1份用于生成决策树,最后一份用于选择最优的剪枝树。重复进行N次,再从这N个子树中选择最优的子树。

相关文章

  • 葫芦书第三章——经典算法

    没有最好的分类器,只有最合适的分类器。随着神经网络模型日趋火热,深度学习大有一统江湖之势,传统机器学习算法似乎已经...

  • 插入篇 |程序员进阶之推荐书目

    针对入门的趣味书 入门的同学,我建议你不要过度追求上去就看经典书。像《算法导论》《算法》这些书,虽然比较经典、比较...

  • 《算法竞赛入门经典》第三章习题

    《算法竞赛入门经典》(第二版)第三章习题 得分(Score)UVa1585 问题描述 如何计算你们的得分呢?,如“...

  • 常见算法

    一、【经典算法大全】收集51种经典算法 初学者必备

  • 我的算法图书

    @(读书)[算法|内功|经典] 算法荐书(程序员练功+大众科普) 入门第一书,你一定能看懂 没有枯燥的描述,没有难...

  • 12月,献上的12本Java架构师必读书籍

    经典算法谜题的合集Google、Facebook等一流IT公司算法面试必备 《算法谜题》是经典算法谜题的集结。它列...

  • 算法学习记录

    可视化算法 白话经典算法

  • 学习路线规划

    目前有两本书,《算法竞赛入门经典》和《算法竞赛进阶指南》。根据书名应该先看《算法竞赛入门经典》( 《算法竞赛入门经...

  • 序言-算法

    此文集将介绍一些经典的算法,从经典的排序算法开始不定期的补充纠错更新 1、经典排序算法 1.1桶排序Bucket ...

  • 《算法竞赛入门经典(第2版) 算法艺术与信息学竞赛》PDF高清完

    《算法竞赛入门经典(第2版) 算法艺术与信息学竞赛》PDF高清完整版-免费下载 《算法竞赛入门经典(第2版) 算法...

网友评论

      本文标题:葫芦书第三章——经典算法

      本文链接:https://www.haomeiwen.com/subject/fuqodctx.html