开启辅助访问
 找回密码
 立即注册

【机器学习面试总结】—— SVM

juf1081 回答数3 浏览数545
不了解SVM的朋友可以先看这篇文章,基础知识点:https://zhuanlan.zhihu.com/p/77750026
本文主要是对面试常见的问题回答进行一些整理
参考文章:https://blog.csdn.net/sinat_33231573/article/detAIls/99709784

面试常见问题

1.简单介绍SVM(详细原理):从分类平面,到求两类间的最大间隔,到转化为求间隔分之一,等优化问题,然后就是优化问题的解决办法,首先是用拉格拉日乘子把约束优化转化为无约束优化,对各个变量求导令其为零,得到的式子带入拉格朗日式子从而转化为对偶问题, 最后再利用SMO(序列最小优化)来解决这个对偶问题。


2.svm里面的c有啥用
C>0称为惩罚参数,一般事先由应用问题决定,控制目标函数中两项 (“寻找 margin 最大的超平面”和“保证数据点偏差量最小”)之间的权重,C越大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使尽量小即间隔尽量大,同时使误分类点的个数尽量小,C是调和二者的系数。
当C趋于无穷大时,这个问题也就是不允许出现分类误差的样本存在,那这就是一台hard-margin SVM问题(过拟合)
当C趋于0时,我们不再关注分类是否正确,只要求间隔越大越好,那么我们将无法得到有意义的解且算法不会收敛。(欠拟合)
3.SVM的推导,解释原问题和对偶问题,SVM原问题和对偶问题关系?KKT限制条件,KKT条件用哪些,完整描述。
目标函数对原始问题是极大化,对偶问题则是极小化
原始问题目标函数中的收益系数(优化函数中变量前面的系数)是对偶问题约束不等式中的右端常数,而原始问题约束不等式中的右端常数则是对偶问题中目标函数的收益系数
原始问题和对偶问题的约束不等式的符号方向相反
原始问题约束不等式系数矩阵转置后即为对偶问题的约束不等式的系数矩阵
原始问题的约束方程数对应于对偶问题的变量数,而原始问题的变量数对应于对偶问题的约束方程数
对偶问题的对偶问题是原始问题
SVM 为啥要从原始问题变为对偶问题来求解?

  • 对偶问题将原始问题中的约束转为了对偶问题中的等式约束
  • 省事核函数的引入
  • 改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。
  • 求解更高效,因为只用求解比例系数a,而比例系数a只有支持向量才为非0,其他全为0.
为啥要把原问题转换为对偶问题?因为原问题是凸二次规划问题,转换为对偶问题更加高效。
为啥求解对偶问题更加高效?因为只用求解alpha系数,而alpha系数只有支持向量才非0,其他全部为0.
样本点的个数alpha系数有多少个?样本点的个数
KKT条件的作用:KKT条件是确保鞍点是原函数最优解的充分条件。




4.SVM为啥要引入拉格朗日的优化方法?最大的特点,损失函数解释
化为对偶问题,对于SVM而言,原问题




不易求解,但由于原问题为二次规划问题,满足“strong duality”关系,故可解其对偶问题
5.软间隔问题,解释支持向量、核函数(SVM哪个地方引入,如何选择核函数)https://www.zhihu.com/question/24627666
线性不可分时可以引入核函数
核函数的作用:
1、当我们在解决线性不可分的问题时,我们需要通过一台映射函数,把样本值映射到更高维的空间或者无穷维,这个映射可以把低维空间中线性不可分的两类点变成线性可分的。。在特征空间中,我们对线性可分的新样本使用前面提到过的求解线性可分的情况下的分类问题的方法时,需要计算样本内积,但是因为样本维数很高,容易造成“维数灾难”,所以这里我们就引入了核函数,把高维向量的内积转变成了求低维向量的内积问题。
2、内积的作用,内积也是可以衡量相似度的!分类问题就是一台找相似样本的过程,你跟我相似,你就属于我这个类,所以在求出的目标函数中会出现内积,可以用这个原理来理解。内积是可以衡量两个向量的相似度的,例如,我们常常可以通过两个相量的距离和夹角来表示相似度,这些属性都可以通过两个向量的内积值来获得。
核函数只是用来计算映射到高维空间之后的内积的一种简便方法。
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:


一般用线性核和高斯核,也就是Linear核与RBF核
需要注意的是需要对数据归一化处理,很多使用者忘了这个小细节
然后一般情况下RBF效果是不会差于Linear,但是时间上RBF会耗费更多
下面是吴恩达的见解:

  • 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
  • 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
  • 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
工作中,最常用的是Linear核与RBF核。

  • Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。
  • RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。我个人的体会是:使用libsvm,默认参数,RBF核比Linear核效果稍差。通过进行大量参数的尝试,一般能找到比linear核更好的效果。
6.画图解释高维映射,高斯核为啥可以把原始维度映射到无穷多维?
“如果映射后空间是k维的话,那内积矩阵的秩最大是k。而任给n个互不重合的样本,Gaussian kernel的内积矩阵都是满秩的。所以你无论假设k是多少,都能找到n>k,矛盾,所以必须是无限维的。 ”
1.先考虑多项式核函数(polynomial kernel)
比如   
假设每个向量维度为2 , 两向量X= (x1 , y1)Y= (y1 , y2)。则有:
找到特征映射  因为  , 则 的点映射到
2.目前分析高斯核


同样每个向量的维度为2 两向量 X = (x1 , y1) Y = (y1 , y2)  则有


根据泰勒公式


那么   

可以看出公式中的泰勒展开式其实是0-n维的多项式核函数的和。
我们知道多项式核函数将低维数据映射到高维(维度是有限的),那么 对于无限个 不同维的多项式核函数之和 的高斯核,其中也包括 无穷维度 的 多项式核函数。而且我们也找得到  使该等式  成立。而且维度 是**无穷维**。所以这样看来**核函数是一种特殊的 多项式核**。


可以看到,展开之后的特征的长度就是无限维的
那么升到无限维有什么好处呢?
好处是:vc维提升(线性分类器的vc维是n+1,如果升到无穷维,则是vc维也是无穷的),即总能找到一台分类面将数据集很好的分开。vc维代表了分类能力。即在使用SVM的时候,只要C选的足够大,就可以保证拟合的很好,甚至是过拟合。
7.SVM如何防止过拟合 ?
如果支持向量中碰巧存在异常点,那么我们傻傻地让SVM去拟合这样的数据,最后的超平面就不是最优。
解决过拟合的办法是为SVM引入了松弛变量ξ(slack variable)。


因此SVM公式中的目标函数也需要相应修改,我们加上松弛变量的平方和,并求最小值。这样就达到一台平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。
因此SVM公式中的目标函数也需要相应修改,我们加上松弛变量的平方和,并求最小值。这样就达到一台平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。
8.SVM的优缺点
优点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
(4)SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
(5)SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体目前:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
缺点:
(1) SVM算法对大规模训练样本难以实施
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法
(2) 用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
(3)对缺失数据敏感,对参数和核函数的选择敏感
支持向量机性能的优劣主要取决于核函数的选取,所以对于一台实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造SVM算法.目前比较成熟的核函数及其参数的选择都是人为的,根据经验来选取的,带有一定的随意性.在不同的问题领域,核函数应当具有不同的形式和参数,所以在选取时候应该将领域知识引入进来,但是目前还没有好的方法来解决核函数的选取问题.
为此,我试着编写一台简单的工作流,决定应该何时选择这三种算法,流程如下:
• 首当其冲应该选择的就是逻辑回归,如果它的效果不如何样,那么可以将它的结果作为基准来参考;
• 然后试试决策树(随机森林)是否可以大幅度提升模型性能。即使你并没有把它当做最终模型,你也可以使用随机森林来移除噪声变量;
• 如果特征的数量和观测样本特别多,那么当资源和时间充足时,使用SVM不失为一种选择。
9.对于LR与SVM的异同,LR和SVM对于outlier的敏感程度分析,逻辑回归与SVM的区别
https://www.zhihu.com/question/26768865


相同点:

  • LR和SVM都是分类算法
  • LR和SVM都是监督学习算法。
  • LR和SVM都是判别模型。
  • 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
    说明:LR也是可以用核函数的.但LR通常不采用核函数的方法.(计算量太大)
不同点:
SVM更关心的是靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优,因为那样的话,要使得一部分点靠近中间线来换取另外一部分点更加远离中间线。因此支持向量机和和逻辑斯蒂回归的不同点,一台是考虑局部(不关心已经确定远离的点,更考虑靠近中间分割线的点),一台是考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)
1、LR采用log损失,SVM采用合页(hinge)损失。
逻辑回归的损失函数:


支持向量机的目标函数:




逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值(基于统计的,其损失函数是人为设定的凸函数) 。支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面.(有严格的推导)
这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重,两者的根本目的都是一样的。
2、LR对异常值敏感,SVM对异常值不敏感(抗噪能力,SVM要强)(https://www.jianshu.com/p/1a41a1567b87)。支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用,虽然作用会相对小一些)。LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。
支持向量机改变非支持向量样本并不会引起决策面的变化:


逻辑回归中改变任何样本都会引起决策面的变化:


LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。(引自http://www.zhihu.com/question/26768865/answer/34078149)
3、计算复杂度不同。对于海量数据,SVM的效率较低,LR效率比较高。 对于两者在feature和样本数量不同的情况下的效率问题,可以参考:https://blog.csdn.net/a244659184/article/details/81122521。该文章说明了:
当样本较少,特征维数较低时,SVM和LR的运行时间均比较短,SVM较短一些。准确率的话,LR明显比SVM要高。当样本稍微增加些时,SVM运行时间开始增长,但是准确率赶超了LR。SVM时间虽长,但在接收范围内。当数据量增长到20000时,特征维数增长到200时,SVM的运行时间剧烈增加,远远超过了LR的运行时间。但是准确率却和LR相差无几。(这其中主要原因是大量非支持向量参与计算,造成SVM的二次规划问题)
4、对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel(因为只有支持向量参与核计算,计算复杂度不高)。(由于可以利用核函数,。SVM则可以通过对偶求解高效处理。LR则在特征空间维度很高时,表现较差。)
5、SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为啥SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!
6、svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同。其区别就可以参考参数模型和非参模型的区别
10.加大训练数据量一定能提高SVM准确率吗?
SVM本质上是凸优化问题,如果增加的样本点只是无效约束,并不会影响其最后的结果。这也就是为啥SVM适合于小样本量数据集的原因。
随样本量而使模型自身发生改变的,是统计推断。最大似然,MAP,再到贝叶斯,每个都涉及到样本数prod的一项,这些方法建立的模才真正和样本数量有最直接的联系。
11.与感知器的联系和优缺点比较


12.如何解决多分类问题、可以做回归吗,如何做
SVM如何解决多分类问题:
一对多法。训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。
一对一法。其做法是在任意两类样本之间设计一台SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一台未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。Libsvm中的多类分类就是根据这个方法实现的。
层次支持向量机(H-SVMs)。层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一台单独的类别为止。
支持向量回归 SVR:










13.它与其他分类器对比的优缺点,它的速度
1、贝叶斯分类器
优点:

  • 同时具备接收大数据量训练和查询时具备高速度的特点
  • 具有支持增量式训练的能力(不借助于旧有训练数据,每一组新的训练数据都有可能引起概率值的变化,而如决策树和支持向量机,则需要我们一次性将整个数据集都传给它们。)
  • 对贝叶斯分类器实际学习状况的解释相对简单。
缺点:

  • 无法处理基于特征值组合所产生的变化结果。例如:“在线”和“药店”分开出现时一般出目前正常邮件中,但当组合起来时“在线药店”却一般出目前垃圾邮件中,贝叶斯分类器无法理解这种特征组合。
2、决策树分类器
优点:

  • 利用决策树可以很容易的解释一台受训模型,而且算法将最重要的判断因素很好的安排在了靠近树的根部位置。
  • 决策树能找到能使信息增益达到最大化的分界线,因此它能够同时处理分类数据和数值数据。
  • 与贝叶斯分类器相比,它能够很容易地处理变量之间的相互影响。
缺点:

  • 不支持向量式训练,每次训练都要从头开始。
3、神经网络
优点:

  • 能够处理复杂的非线性函数,并且能发现不同输入之间的依赖关系。
  • 允许增量式训练
缺点:

  • 神经网络是一种黑盒方法,无法确知推导过程。
  • 在选择训练数据的比率及与问题相适应的网络规模方面,并没有明确的规则可以遵循。
4、支持向量机
优点:

  • 在对新的观测数据进行分类时速度极快,因为支持向量机分类时只需判断坐标点位于分界线的哪一侧即可。
  • 通过将分类输入转换成数值输入,可以令支持向量机同时支持分类数据和数值数据。
缺点:

  • 针对每个数据集的最佳核变换函数及其相应的参数都是不一样的,而且每当遇到新的数据集时都必须重新确定这些函数及参数。
  • 和神经网络一样,SVM也是一种黑盒技术,实际上,由于存在向高维空间的变换,SVM的分类过程甚至更加难于解释。
5、k-最近邻算法
优点:

  • 能够利用复杂函数进行数值预测,同时又保持简单易懂的特点
  • 合理的数据缩放量不但可以改善预测的效果,而且还可以告诉我们预测过程中各个变量的重要程度。
    KNN是一种在线(online)技术,这意味着新的数据可以在任何时候被添加进来,而不需要进行任何的计算。
    缺点:
  • 为了完成预测,它要求所有的训练数据都必须缺一不可,为了找到最为接近的数据项,每一项待预测的数据必须和其他数据项进行比较,会产出极大的数据计算量。
  • 寻找合理的缩放因子并不是那么简单。
SVM的速度:
SVM训练速度慢,主要是因为大量的非支持向量参与训练过程,从而进行了大量的二次规划计算,导致分类计算量大、分类速度慢。
但是在对新的观测数据进行分类时速度极快,因为支持向量机分类时只需判断坐标点位于分界线的哪一侧即可。
14.支持向量机(SVM)是否适合大规模数据?https://www.zhihu.com/question/19591450
对于基于支持向量机的大规模线性分类问题,目前已经能比较好地解决。
对于非线性分类问题,基于SMO方法的SVM-Light和LibSVM目前仍被广泛使用,他们最坏情况下复杂度是O(m^2),并不适合在大规模数据集上做训练。不过在我接触过的应用场景里(比如对象检测),非线性SVM的最大问题不是训练时代价问题,而是检测时代价太高。
15.SVM和逻辑斯特回归对同一样本A进行训练,如果某类中增加一些数据点,那么原来的决策边界分别会如何变化?https://www.zhihu.com/question/30123068




16.各种机器学习的应用场景分别是指什么?例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归和最大熵模型。https://www.zhihu.com/question/26726794
没有最好的分类器,只有最合适的分类器。
*随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。
SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。
神经网络(13.2%)和boosting(~9%)表现不错。
数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM。
数据量越大,神经网络就越强。
KNN,它的思路就是——对于待判断的点,找到离它最近的几个数据点,根据它们的类型决定待判断点的类型。它的特点是完全跟着数据走,没有数学模型可言。
适用情景:需要一台特别容易解释的模型的时候。比如需要向用户解释原因的推荐算法。
贝叶斯
典型的例子是Naive Bayes,核心思路是根据条件概率计算待判断点的类型。是相对容易理解的一台模型,至今依然被垃圾邮件过滤器使用。
适用情景:需要一台比较容易解释,而且不同维度之间相关性较小的模型的时候。可以高效处理高维数据,虽然结果可能不尽如人意。
决策树:
特点是它总是在沿着特征做切分。随着层层递进,这个划分会越来越细。
虽然生成的树不容易给用户看,但是数据分析的时候,通过观察树的上层结构,能够对分类器的核心思路有一台直观的感受。举个简单的例子,当我们预测一台孩子的身高的时候,决策树的第一层可能是这个孩子的性别。男生走左边的树进行进一步预测,女生则走右边的树。这就说明性别对身高有很强的影响。
适用情景:
因为它能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候往往可以使用决策树。
同时它也是相对容易被攻击的分类器。这里的攻击是指人为的改变一些特征,使得分类器判断错误。常见于垃圾邮件躲避检测中。因为决策树最终在底层判断是基于单个条件的,攻击者往往只需要改变很少的特征就可以逃过监测。
受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石。
随机森林
严格来说,随机森林其实算是一种集成算法。它首先随机选取不同的特征(feature)和训练样本(training sample),生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。
随机森林在现实分析中被大量使用,它相对于决策树,在准确性上有了很大的提升,同时一定程度上改善了决策树容易被攻击的特点。
适用情景:
数据维度相对低(几十维),同时对准确性有较高要求时。
因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。
SVM
核心思想就是找到不同类别之间的分界面,使得两类样本尽量落在面的两边,而且离分界面尽量远。
最早的SVM是平面的,局限很大。但是利用核函数,我们可以把平面投射成曲面,进而大大提高SVM的适用范围。提高之后的SVM同样被大量使用,在实际分类中展现了很优秀的正确率。
适用情景:
SVM在很多数据集上都有优秀的表现。
相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。
LR,它其实是回归类方法的一台变体。
回归方法的核心就是为函数找到最合适的参数,使得函数的值和样本的值最接近。例如线性回归(Linear regression)就是对于函数f(x)=ax+b,找到最合适的a,b。
LR拟合的就不是线性函数了,它拟合的是一台概率学中的函数,f(x)的值这时候就反映了样本属于这个类的概率。
适用情景:
LR同样是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。
因为它本质上是一台线性的分类器,所以处理不好特征之间相关的情况。
虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一台特征(feature)对结果的影响。也是一台理解数据的好工具。
线性判别分析(Linear discriminant analysis),简称LDA。
LDA的核心思想是把高维的样本投射(project)到低维上,如果要分成两类,就投射到一维。要分三类就投射到二维平面上。这样的投射当然有很多种不同的方式,LDA投射的标准就是让同类的样本尽量靠近,而不同类的尽量分开。对于未来要预测的样本,用同样的方式投射之后就可以轻易地分辨类别了。
使用情景:
判别分析适用于高维数据需要降维的情况,自带降维功能使得我们能省事地观察样本分布。它的正确性有数学公式可以证明,所以同样是很经得住推敲的方式。
但是它的分类准确率往往不是很高,所以不是统计系的人就把它作为降维工具用吧。
同时注意它是假定样本成正态分布的,所以那种同心圆形的数据就不要尝试了。
神经网络 (Neural network)
它的核心思路是利用训练样本来逐渐地完善参数。或是举个例子预测身高的例子,如果输入的特征中有一台是性别(1:男;0:女),而输出的特征是身高(1:高;0:矮)。那么当训练样本是一台个子高的男生的时候,在神经网络中,从“男”到“高”的路线就会被强化。同理,如果来了一台个子高的女生,那从“女”到“高”的路线就会被强化。
最终神经网络的哪些路线比较强,就由我们的样本所决定。
神经网络的优势在于,它可以有很多很多层。如果输入输出是直接链接的,那它和LR就没有什么区别。但是通过大量中间层的引入,它就能够捕捉很多输入特征之间的关系。卷积神经网络有很经典的不同层的可视化展示(visulization),我这里就不赘述了。
神经网络的提出其实很早了,但是它的准确率依赖于庞大的训练集,原本受限于计算机的速度,分类效果一直不如随机森林和SVM这种经典算法。
适用情景:
数据量庞大,参数之间存在内在联系的时候。
当然目前神经网络不只是一台分类器,它还可以用来生成数据,用来做降维。
提升算法(Boosting)
接下来讲的一系列模型,都属于集成学习算法(Ensemble Learning),基于一台核心理念:当我们把多个较弱的分类器结合起来的时候,它的结果会比一台强的分类器更好。
典型的例子是AdaBoost。AdaBoost的实现是一台渐进的过程,从一台最基础的分类器开始,每次寻找一台最能解决当前错误样本的分类器。用加权取和(weighted sum)的方式把这个新分类器结合进已有的分类器中。
它的好处是自带了特征选择(feature selection),只使用在训练集中发现有效的特征(feature)。这样就降低了分类时需要计算的特征数量,也在一定程度上解决了高维数据难以理解的问题。
最经典的AdaBoost实现中,它的每一台弱分类器其实就是一台决策树。这就是之前为啥说决策树是各种算法的基石。
适用情景:
好的Boosting算法,它的准确性不逊于随机森林。实际使用中它或是很强的。因为自带特征选择(feature selection)所以对新手很友好,是一台“不知道用什么就试一下它吧”的算法。
装袋算法(Bagging)
同样是弱分类器组合的思路,相对于Boosting,其实Bagging更好理解。它首先随机地抽取训练集,以之为基础训练多个弱分类器。然后通过取平均,或者投票(voting)的方式决定最终的分类结果。
因为它随机选取训练集的特点,Bagging可以一定程度上避免过渡拟合(overfit)。
适用情景:
相较于经典的必使算法,Bagging使用的人更少一些。一部分的原因是Bagging的效果和参数的选择关系比较大,用默认参数往往没有很好的效果。
虽然调对参数结果会比决策树和LR好,但是模型也变得复杂了,没事有特别的原因就别用它了。
最大熵模型 (Maximum entropy model)
最大熵模型本身不是分类器,它一般是用来判断模型预测结果的好坏的。
对于它来说,分类器预测是相当于是:针对样本,给每个类一台出现概率。比如说样本的特征是:性别男。我的分类器可能就给出了下面这样一台概率:高(60%),矮(40%)。
而如果这个样本真的是高的,那我们就得了一台分数60%。最大熵模型的目标就是让这些分数的乘积尽量大。
隐马尔科夫 (Hidden Markov model)
这是一台基于序列的预测方法,核心思想就是通过上一台(或几个)状态预测下一台状态。
之所以叫“隐”马尔科夫是因为它的设定是状态本身我们是看不到的,我们只能根据状态生成的结果序列来学习可能的状态。
适用场景:
可以用于序列的预测,可以用来生成序列。
使用道具 举报
| 来自北京 用Deepseek满血版问问看
ppdz | 来自北京
写的这么好,居然没人点赞和评论!
用Deepseek满血版问问看
回复
使用道具 举报
smile826 | 来自吉林
赞!
回复
使用道具 举报
378429749 | 来自北京
好厉害
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影