百面机器学习|第三章经典算法知识点

前言

如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。

第三章 经典算法

0、写在前面

这一章我看了之后的感觉是,需要和《统计学习方法》——李航的书配合着一起看。这一章总共20页,讲了三个经典机器学习算法,而在统计学习方法中少则有50页去讲这三个算法。所以这本书叫做“算法工程师带你去面试”是有道理的,主要是由面试问题引出的对算法知识的整理和延伸,需要在看过统计学习方法,有一定的基础之后再去看这一部分。例如SVM的部分,虽然以一个非常有趣的故事开头,让人觉得原来SVM也不是很复杂嘛,但是后面的面试题引出的知识点,是需要先弄懂SVM算法的推导过程的。
这章同时也给统计学习方法做了非常非常好的补充,例如SVM的部分,给出的面试题是我从来没有想过的,这样的题会让我们对算法原理有更近一步的认识;在逻辑回归的部分,讲了逻辑回归和线性回归的一些延伸知识;在决策树的部分,利用一个例子将后剪枝的算法讲得非常清楚,这个部分我在统计学习方法中没有看懂,在这里就可以看得很明白。

1、支持向量机

  1. 在空间上线性可分的两类点,分别向SVM超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?
    答案是,对于任意线性可分的两组点,它们在SVM分类超平面上的投影都是线性不可分的。
  2. 是否存在一组参数使SVM训练误差为0?
    答案是,一个使用高斯核()训练的SVM中,若训练集中不存在两个点在同一位置,则存在一组参数以及参数使得该SVM的训练误差为0。
  3. 训练误差为0的SVM分类器一定存在吗?
    答案是,一定存在。具体可以去看看这本书。
  4. 加入松弛变量的SVM的训练误差可以为0吗?
    答案是,并不一定能得到训练误差为0的模型。如果使用SMO算法来训练一个加入松弛变量的线性SVM模型,则我们的优化目标改变了,并不再是使训练误差最小。考虑带松弛变量的SVM模型优化的目标函数所包含的两项为:和。当我们的参数选取较小的值时,后面的正则项将占据优化的较大比重。这样,一个带有训练误差,但是参数较小的点将成为更优的结果。当取0时,也取0时即可达到优化目标。

2、逻辑回归

  1. 逻辑回归和线性回归的异同:
  • 区别:最本质的区别是,逻辑回归处理的是分类问题,线性回归处理的是回归问题。逻辑回归中,因变量取值是一个二元分布,模型学习得出的是,即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是,是对我们假设的真实关系的一个近似,其中代表误差项,我们使用这个近似项来处理回归问题。
    还有一个很大的区别是,逻辑回归中的因变量是离散的,线性回归中的因变量是连续的。并且在自变量与超参数确定的情况下,逻辑回归可以看作广义线性模型在因变量服从二元分布时的一个特殊情况;而使用最小二乘法求解线性回归时,我们认为因变量服从正态分布。
  • 相同:两者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上就是自变量与超参数确定,因变量服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中通过对似然函数的学习,得到最佳参数。
    在求解参数的过程中,都可以使用梯度下降的方法。
  1. 多项逻辑回归:
  • 一个样本只对应一个标签时,可以假设每个样本属于不同标签的概率服从几何分布,使用多项逻辑回归(Softmax Regression)来进行分类(存在一个Softmax)。
  • 一个样本可能属于多个标签时,可以训练个二分类的逻辑回归分类器,第个分类器用以区分每个样本是否可以归为第类。

3、决策树

  1. 决策树常用的启发函数:
  • ID3:最大信息增益
    对于样本集合,类别数为,数据集的经验熵为其中是样本集合属于第类的样本子集,表示该子集的元素个数,表示样本集合的元素个数。
    注:简言之,数据集的经验熵为,根据的类别分的个类的信息熵的和
    然后计算某个特征对于数据集的经验条件熵为其中表示中特征取第个值的样本子集,表示中属于第类的样本子集。
    注:简言之,特征对于数据集的经验条件熵为,根据特征分类之后,的每个类分别求该小数据集的经验熵,再根据每个类的占比对经验熵加权平均
    于是信息增益可以表示为两者之差,可得
    注:简言之,信息增益就是根据特征划分之后,每个划分中的类别是不是更集中了,也就是给定条件以后不确定性减少的程度
  • C4.5:最大信息增益比
    特征对于数据集的信息增益比定义为其中,称为数据集关于的取值熵。
  • CART树:最大基尼指数(Gini)
    Gini描述的是数据的纯度特征的Gini指数定义为
    注:Gini指数的计算方法是,选取特征的某一个取值,如果特征有三个取值1、2、3,那么选取为1这个值,将2、3全看作非1,计算将数据集分成两个部分之后,每个部分数据集的Gini指数的加权平均。数据集的Gini指数是1减根据划分的标签占比平方和的差。
  1. 三种决策树构造准则的比较:
  • ID3采用信息增益作为评价指标,会倾向于取值较多的特征。因为,信息增益反映的是给定条件以后不确定性减少的程度。C4.5实际上是对ID3的优化,通过引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现过拟合的特征,提升决策树的泛化能力。
  • 从样本类型的角度,ID3只能处理离散型变量,而C4.5和CART树都可以处理连续型变量。C4.5会排序找到切分点,将连续变量转换为多个取值区间的离散型变量,CART每次会对特征进行二值划分,适用于连续变量。
  • 从应用角度,ID3和C4.5只能用于分类,CART树可以用于分类和回归
  • 从实现细节、优化过程等角度,ID3对样本特征缺失值比较敏感,而C4.5和CART树都可以对缺失值进行不同方式的处理。
    ID3和C4.5可以产生多叉分支,且每个特征在层级之间不会复用。CART树是二叉树,每个特征可以被重复利用
    ID3和C4.5通过剪枝来权衡树的准确性和泛化性能,CART树枝节利用全部数据发现所有可能的树结构进行对比。
  1. 前剪枝:在生成决策树的过程中提前停止树的增长。核心思想是在树中节点进行扩展之前,先计算当前的划分是否能带来模型泛化性能的提升,如果不能则不再继续生成子树。
  • 前剪枝停止决策树生长的几种方法:
    (1) 当树达到一定深度时停止生长。
    (2) 当到达当前节点的样本数量小于某个阈值时停止生长。
    (3) 计算每次分类对测试集的准确率提升,当小于某个阈值时停止生长。
  • 前剪枝的优缺点:
    优点:简单高效,适合解决大规模问题。
    缺点:
    (1) 深度和阈值这些值很难准确估计,针对不同问题会有很大差别。
    (2) 前剪枝存在一定局限性,有欠拟合的风险,虽然当前的划分会导致测试集准确率下降,可能在后面会有显著上升。
  1. 后剪枝:在已生成的过拟合决策树上进行剪枝。核心思想是让算法生成一棵完全生长的决策树,然后从底层向上计算是否剪枝。(剪枝是将子树删除,用一个叶子节点代替,节点类别按多数投票)如果剪枝之后准确率有提升,则剪枝。
  • 后剪枝的优缺点:
    优点:通常可以得到泛化能力更强的决策树。
    缺点:时间开销大
  • 常用的后剪枝方法:
    (1) 错误率降低剪枝(Reduced Error Pruning,REP)
    (2) 悲观剪枝(Pessimistic Error Pruning,PEP)
    (3)代价复杂度剪枝(Cost Complexity Pruning,CCP)
    (4)最小误差剪枝(Minimum Error Pruning,MEP)
    (5)CVP(Critical Value Pruning)
    (6)OOP(Optimal Pruning)
  • 代价复杂度剪枝CCP的步骤。
    (1) 从完整决策树开始,生成一个子树序列,其中由生成,为根节点。(也就是说计算剪枝之后误差增加率,选最小的节点剪枝代替,一直剪枝,直到最后只剩下根节点,记录下这个过程中所有的树的样子)
    (2)在子树序列中,根据真实误差选择最佳的决策树。CCP对于从子树序列中选最优树有两种方法:1.从子树序列中选择最佳决策树。由于不是在所有可能的子树中寻找,性能上会有一定不足。2.基于折交叉验证,将数据集分成份,前份用于生成决策树,最后一份用于剪枝。重复进行次,再从个子树中选择最优子树。

小结

这一章的推导并不多,如果要看详细的算法推导还是要看下《统计学习方法》。这章在讲得非常通俗易懂的同时,对知识点也挖得很深,例如SVM,对统计学方法有很好的补充。这章让我很深刻的就是“在空间上线性可分的两类点,分别向SVM超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?”这个问题,超出了我目前的知识范围,还是要多熟悉原理才行。

结尾

如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!

你可能感兴趣的:(百面机器学习|第三章经典算法知识点)