目录
一、支持向量机
二、逻辑回归
三、决策树
注:
关于SVM的理论知识可移步(四)支持向量机(SVM)
关于逻辑回归的知识可移步(二)逻辑回归
关于决策树的知识可移步(五)决策树
逻辑回归相比线性回归,有何异同
决策树有哪些常用的启发函数
线性可分的两类点在SVM分类超平面上的投影仍然线性可分吗
证明存在一组参数使得高斯核SVM的训练误差为0
加入松弛变量的SVM的训练误差可以为0吗
用该逻辑回归处理多标签分类任务的一些相关问题
如何对决策树进行剪枝
训练误差为0的SVM分类器一定存在吗
1.在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?
首先明确下题目中的概念,线性可分的两类点,即通过一个超平面可以将两类点完全分开,如下图所示。假设绿色的超平面(对于二维空间来说,分类超平面退化为一维直线)为SVM算法计算得出的分类面,那么两类点就被完全分开。 我们想探讨的是:将这两类点向绿色平面上做投影,在分类直线上得到的黄棕两类投影点是否仍然线性可分,如图3.10所示。
(a)支持向量机分类面
(b)样本点在分类面上的投影
显然,这些点并不是线性可分的。考虑一个简单的例子,二维空间中只有两个样本点,每个样本点各属于一个分类,此时SVM超平面(直线)就是这两个样本的中垂线,两个样本在超平面上的投影会落到这条直线的同一个点,所以不是线性可分的。
由于SVM的分类超平面仅由支持向量决定,我们可以考虑一个只含支持向量的SVM模型场景。使用反证法来证明。假设存在一个SVM分类超平面使所有支持向量在该超平面上的投影依然线性可分,如下图所示。根据简单的初等几何知识不难发现,图中AB两点连线的中垂线所组成的超平面(绿色虚线)是相较于绿色实线超平面更优的解,这与之前假设绿色实线超平面为最优的解相矛盾。考虑最优解对应的绿色虚线,两组点经过投影后,并不是线性可
分的。我们的证明目前还有不严谨之处,即我们假设了仅有支持向量的情况,会不会在超平面的变换过程中支持向量发生了改变,原先的非支持向量和支持向量发生了转化呢?下面我们证明SVM的分类结果仅依赖于支持向量。考虑SVM推导中的KKT条件要求。(5)
其中,
可以看到,除支持向量外,其他系数均为0,因此SVM的分类结果与仅使用支持向量的分类结果一致,说明SVM的分类结果仅依赖于支持向量,这也是SVM拥有极高运行效率的关键之一。于是,我们证明了对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的。实际上,该问题也可以通过凸优化理论中的超平面分离定理(Separating Hyperplane Theorem,SHT)更加轻巧地解决。该定理描述的是,对于不相交的两个凸集,存在一个超平面,将两个凸集分离。对于二维的情况,两个凸集间距离最短两点连线的中垂线就是一个将它们分离的超平面。
2.是否存在一组参数使SVM训练误差为0?
一个使用高斯核训练的SVM中,试证明若给定的训练集中不存在两个点在同一位置,则存在一组参数以及参数γ使得该SVM的训练误差为0。
根据SVM的原理,我们可以将SVM的预测公式写为:
其中为训练样本,而以及高斯核参数γ为训练样本的参数。由于不存在两个点在同一位置,因此对于任意的,有。我们可以对任意i,固定以及b=0,只保留参数γ,则有
将任意代入上式中,则有
3.训练误差为0的分类器一定存在吗?
虽然在问题2中我们找到了一组参数以及γ使得SVM的训练误差为0,但这组参数不一定是满足SVM条件的一个解。在实际训练一个不加入松弛变量的SVM模型时,是否能保证得到的SVM分类器满足训练误差为0呢?
问题2找到了一组参数使得SVM分类器的训练误差为0。本问旨在找到一组参数满足训练误差为0,且是SVM模型的一个解。
4.加入松弛变量的SVM的训练误差可以为0吗?
在实际应用中,如果使用SMO算法来训练一个加入松弛变量的线性SVM模型,并且惩罚因子C为任一未知常数,我们是否能得到训练误差为0的模型呢?
使用SMO算法训练的线性分类器并不一定能得到训练误差为0的模型。这是由于我们的优化目标改变了,并不再是使训练误差最小。考虑带松弛变量的SVM模型优化的目标函数所包含的两项:和,当我们的参数C选取较小的值时,后一项(正则项)将占据优化的较大比重。这样,一个带有训练误差,但是参数较小的点将成为更优的结果。一个简单的特例是,当C取0时,w也取0即可达到优化目标,但是显然此时我们的训练误差不一定能达到0。
1.逻辑回归相比于线性回归有何异同?
首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别。逻辑回归中,因变量取值是一个二元分布,模型学习得出的是,即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是,是对我们假设的真实关系的一个近似,其中代表误差项,我们使用这个近似项来处理回归问题。
实际上,将逻辑回归公式进行整理,我们可以得到,其中,,也就是将给定输入x预测为正样本的概率。如果把一个事件的几率定义为该事件发生的概率与该事件不发生的概率的比值,那么逻辑回归可看做是对于“y=1|x”这一事件的对数几率的线性回归,于是“逻辑回归”这一称呼也就延续下来。
在关于逻辑回归的讨论中,我们均认为y是因变量,而非,这便引出逻辑回归与线性回归最大的区别,即逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。并且在自变量x与超参数θ确定的情况下,逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊情况;而使用最小二乘法求解线性回归时,我们认为因变量y服从正态分布。
当然逻辑回归和线性回归也不乏相同之处,首先我们可以认为二者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上就是在自变量x与超参数θ确定,因变量y服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中通过对似然函数的学习,得到最佳参数θ。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法,这也是监督学习中一个常见的相似之处。
2.当使用逻辑回归处理多标签的分类问题时,有哪些常见做法?分别应用于哪些场景,它们之间又有怎样的关系?
使用哪一种办法来处理多分类的问题取决于具体问题的定义。首先,如果一 样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类
其中为模型的参数,而可以看作是对概率的归一化。为了方便起见,我们将这k个列向量按顺序排列形成n×k维矩阵,写作θ,表示78整个参数集。一般来说,多项逻辑回归具有参数冗余的特点,即将同时加减一个向量后预测结果不变。特别地,当类别数为2时,
利用参数冗余的特点,我们将所有参数减去,上式变为
其中。而整理后的式子与逻辑回归一致。因此,多项逻辑回归实际上是
二分类逻辑回归在多标签分类下的一种拓展。当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第i类标签”与“非第i类标签”两类。通过这样的办法,我们就解决了每个样本可能拥有多个标签的情况。
决策树作为最基础、最常见的有监督学习模型,常被用于分类问题和回归问题,在市场营销和生物医药等领域尤其受欢迎,主要因为树形结构与销售、诊断等场景下的决策过程十分相似。将决策树应用集成学习的思想可以得到随机森林、梯度提升决策树等模型。完全生长的决策树模型具有简单直观、解释性强的特点,值得读者认真理解,这也是为融会贯通集成学习相关内容所做的铺垫。一般而言,决策树的生成包含了特征选择、树的构造、树的剪枝三个过程,本节将在第一个问题中对几种常用的决策树进行对比,在第二个问题中探讨决策树不同剪枝方法之间的区别与联系。
1.决策树有哪些常用的启发函数?
常用的决策树算法有ID3、C4.5、CART,它们构建树所使用的启发式函数各是什么?除了构建准则之外,它们之间的区别与联系是什么?
(1)ID3——最大信息增益
对于样本集合D,类别数为K,数据集D的经验熵表示为
其中Ck是样本集合D中属于第k类的样本子集,|Ck|表示该子集的元素个数,|D|表示
样本集合的元素个数。其中,Di 表示 D 中特征 A 取第 i 个值的样本子集,Dik 表示 Di 中属于第 k 类的样本子集。
于是信息增益g(D,A)可以表示为二者之差,可得
这些定义听起来有点像绕口令,不妨我们用一个例子来简单说明下计算过程。假设共有5个人追求场景中的女孩,年龄有两个属性(老,年轻),长相有三个属性(帅,一般,丑),工资有三个属性(高,中等,低),会写代码有两个属性(会,不会),最终分类结果有两类(见,不见)。我们根据女孩有监督的主观意愿可以得到下表。
在这个问题中,显然,特征“写代码”的信息增益最大,所有的样本根据此特征,可以直接被分到叶结点(即见或不见)中,完成决策树生长。当然,在实际应用中,决策树往往不能通过一个特征就完成构建,需要在经验熵非0的类别中继续生长。
(2)C4.5——最大信息增益比
特征A对于数据集D的信息增益比定义为
其中,
称为数据集D关于A的取值熵。针对上述问题,我们可以根据上式求出数据集关于每个特征的取值熵为
(3)最大基尼指数(Gini)
Gini描述的是数据的纯度,与信息熵含义类似。
CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。但与ID3、C4.5不同的是,CART是一颗二叉树,采用二元切割法,每一步将数据按特征A的取值切成两份,分别进入左右子树。特征A的Gini指数定义为
还是考虑上述的例子,应用CART分类准则,根据上式可计算出各个特征的Gini指数为
在“年龄”“长相”“工资”“写代码”四个特征中,我们可以很快地发现特征“写代码”的Gini指数最小为0,因此选择特征“写代码”作为最优特征,“写代码=会”为最优切分点。按照这种切分,从根结点会直接产生两个叶结点,基尼指数降为0,完成决策树生长。
总结:区别与联系
首先,ID3是采用信息增益作为评价标准,除了“会写代码”这一逆天特征外,会倾向于取值较多的特征。因为,信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小,信息增益越大。这在实际应用中是一个缺陷。比如,我们引入特征“DNA”,每个人的DNA都不同,如果ID3按照“DNA”特征进行划分一定是最优的(条件熵为0),但这种分类的泛化能力是非常弱的。因此,C4.5实际上是对ID3进行优化,通过引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现过拟合的特性,提升决策树的泛化能力。
其次,从样本类型的角度,ID3只能处理离散型变量,而C4.5和CART都可以处理连续型变量。C4.5处理连续型变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转换为布尔型,从而将连续型变量转换多个取值区间的离散型变量。而对于CART,由于其构建时每次都会对特征进行二值划分,因此可以很好地适用于连续性变量。从应用角度,ID3和C4.5只能用于分类任务,而CART(Classification andRegression Tree,分类回归树)从名字就可以看出其不仅可以用于分类,也可以应用于回归任务(回归树使用最小平方误差准则)。此外,从实现细节、优化过程等角度,这三种决策树还有一些不同。比如,ID3对样本特征缺失值比较敏感,而C4.5和CART可以对缺失值进行不同方式的处理;ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在层级之间不会复用,而CART每个结点只会产生两个分支,因此最后会形成一颗二叉树,且每个特征可以被重复使用;ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART直接利用全部数据发现所有可能的树结构进行对 比。
2.如何对决策树进行剪枝?
一棵完全生长的决策树会面临一个很严重的问题,即过拟合。假设我们真的需要考虑DNA特征,由于每个人的DNA都不同,完全生长的决策树所对应的每个叶结点中只会包含一个样本,这就导致决策树是过拟合的。用它进行预测时,在测试集上的效果将会很差。因此我们需要对决策树进行剪枝,剪掉一些枝叶,提升模型的泛化能力。
决策树的剪枝通常有两种方法,预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。那么这两种方法是如何进行的呢?它们又各有什么优缺点?
预剪枝,即在生成决策树的过程中提前停止树的增长。而后剪枝,是在已生成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。
(1)预剪枝
预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类别的样本同时存于结点中,按照多数投票的原则判断该结点所属类别。预剪枝对于何时停止决策树的生长有以下几种方法。
- 当树到达一定深度的时候,停止树的生长。
- 当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。
- 计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继续扩展。
预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模问题。但如何准确地估计何时停止树的生长(即上述方法中的深度或阈值),针对不同问题会有很大差别,需要一定经验判断。且预剪枝存在一定局限性,有欠拟合的风险,虽然当前的划分会导致测试集准确率降低,但在之后的划分中,准确率可能会有显著上升。(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 进行介绍。代价复杂剪枝主要包含以下两个步骤:① 从完整决策树 T 0开始,生成一个子树序列{ T 0, T 1, T 2,..., T n},其中 T i+1由 T i生成, T n为树的根结点。② 在子树序列中,根据真实误差选择最佳的决策树。步骤①从 T 0 开始,裁剪Ti中关于训练数据集合误差增加最小的分支以得到 。具体地,当一棵树T在结点 t 处剪枝时,它的误差增加可以用 表示,其中R( t ) 表示进行剪枝之后的该结点误差, R ( T t ) 表示未进行剪枝时子树 T t 的误差。考虑到树的复杂性因素,我们用 | L ( T t )| 表示子树 T t的叶子结点个数,则树在结点 t 处剪枝后的误差增加率为
举个例子:
假设把场景中的问题进行一定扩展,女孩需要对80个人进行见或不见的分类。假设根据某种规则,已经得到了一棵 CART 决策树 T 0 ,如下图 所示。
可见α(t 3 )最小,因此对 t 3 进行剪枝,得到新的子树 T 1 ,如下图 所示。而后继续计算所有结点对应的误差增加率,分别为 α( t 1)=3, α( t 2)=3, α( t 4)=4。因此对 t 1进行剪枝,得到 T 2,如下图所示。此时 α( t 0)=6.5, α( t 2)=3,选择 t 2进行剪枝,得到 T 3。于是只剩下一个内部结点,即根结点,得到 T 4。在步骤(2)中,我们需要从子树序列中选出真实误差最小的决策树。CCP给出了两种常用的方法:一种是基于独立剪枝数据集,该方法与REP类似,但由于其只能从子树序列{T0,T1,T2,...,Tn}中选择最佳决策树,而非像REP能在所有可能的子树中寻找最优解,因此性能上会有一定不足。另一种是基于k折交叉验证,将数据集分成k份,前k−1份用于生成决策树,最后一份用于选择最优的剪枝树。重复进行N次,再从这N个子树中选择最优的子树。
代价复杂度剪枝使用交叉验证策略时,不需要测试数据集,精度与REP差不多,但形成的树复杂度小。而从算法复杂度角度,由于生成子树序列的时间复杂度与原始决策树的非叶结点个数呈二次关系,导致算法相比REP、PEP、MEP等线性复杂度的后剪枝方法,运行时间开销更大。