首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >逻辑回归、决策树和支持向量机

逻辑回归、决策树和支持向量机

作者头像
机器学习AI算法工程
发布2018-03-13 15:19:58
1.1K0
发布2018-03-13 15:19:58
举报

作者:赵屹华,计算广告工程师@搜狗,

http://www.csdn.net/article/2015-11-26/2826332

这篇文章,我们将讨论如何在逻辑回归、决策树和SVM之间做出最佳选择。分类问题是我们在各个行业的商业业务中遇到的主要问题之一。在本文中,我们将从众多技术中挑选出三种主要技术展开讨论,逻辑回归(Logistic Regression)、决策树(Decision Trees)和支持向量机(Support Vector Machine,SVM)。

上面列出的算法都是用来解决分类问题(SVM和DT也被用于回归,但这不在我们的讨论范围之内)。我多次看到有人提问,对于他的问题应该选择哪一种方法。经典的也是最正确的回答是“看情况而定!”,这样的回答却不能让提问者满意。确实让人很费神。因此,我决定谈一谈究竟是看什么情况而定。

这个解释是基于非常简化的二维问题,但足以借此来理解读者棘手的更高维度数据。

我将从最重要的问题开始讨论:在分类问题中我们究竟要做什么?显然,我们是要做分类。(这是个严肃的问题?真的吗?)我再来复述一遍吧。为了做分类,我们试图寻找决策边界线或是一条曲线(不必是直线),在特征空间里区分两个类别。

特征空间这个词听起来非常高大上,容易让很多新人犯迷糊。我给你展示一个例子来解释吧。我有一个样本,它包含三个变量:x1, x2和target。target有0和1两种值,取决于预测变量x1和x2的值。我将数据绘制在坐标轴上。

这就是特征空间,观测值分布于其中。这里因为我们只有两个预测变量/特征,所有特征空间是二维的。你会发现两个类别的样本用不同颜色的点做了标记。我希望我们的算法能计算出一条直线/曲线来分离这个类别。

通过目测可知,理想的决策边界(分割曲线)是一个圆。实际决策边界形状的差异则是由于逻辑回归、决策树和支持向量机算法的差异引起的。

先说逻辑回归。很多人对逻辑回归的决策边界都有误解。这种误解是由于大多数时候提到逻辑回归,人们就见到那条著名的S型曲线。

上图所示的蓝色曲线并不是决策边界。它是逻辑回归模型的二元响应的一种变形。逻辑回归的决策边界总是一条直线(或者一个平面,在更高维度上是超平面)。让你信服的最好方法,就是展示出大家都熟知的逻辑回归方程式。

我们做一个简单的假设,F是所有预测变量的线性组合。

上面的等式也可以写作:

当你进行预测的时候,对概率值做一个分数截断,高于截断值的概率为1,否则为0。假设截断值用c表示,那么决策过程就变成了这样:

Y=1 if p>c, 否则0。最后给出的决策边界是F>常数。

F>常数,无非就是一个线性决策边界。我们样本数据用逻辑回归得到的结果将会是这样。

你会发现效果并不好。因为无论你怎么做,逻辑回归方法得到的决策边界总是线性的,并不能得到这里需要的环状边界。因此,逻辑回归适用于处理接近线性可分的分类问题。(虽然可以对变量做变换得到线性可分的结果,但我们在此不讨论这类情况。)

接着我们来看决策树如何处理这类问题。我们都知道决策树是按照层次结构的规则生成的。以我们的数据为例。

如果你仔细思考,这些决策规则x2 |</>| const OR x1 |</>| const 只是用平行于轴线的直线将特征空间切分,如下图所示。

我们可以通过增加树的大小使它生长得更复杂,用越来越多的分区来模拟环状边界。

哈哈!趋向于环状了,很不错。如果你继续增加树的尺寸,你会注意到决策边界会不断地用平行线围成一个环状区域。因此,如果边界是非线性的,并且能通过不断将特征空间切分为矩形来模拟,那么决策树是比逻辑回归更好的选择

然后我们再来看看SVM的结果。SVM通过把你的特征空间映射到核空间,使得各个类别线性可分。这个过程更简单的解释就是SVM给特征空间又额外增加了一个维度,使得类别线性可分。这个决策边界映射回原特征空间后得到的是非线性决策边界。下图比我的解释更清楚。

你可以看到,一旦样本数据以某种方式增加了一个维度,我们就能用一个平面来分割数据(线性分类器),这个平面映射回原来的二维特征空间,就能得到一个环状的决策边界。

SVM在我们数据集上的效果多棒啊:

注:决策边界并不是这么标准的圆形,但是非常接近了(可能是多边形)。我们为了操作简便,就用圆环代替了。

现在清楚各种区别了吧,但是还有一个问题。也就是说,在处理多维数据时,什么时候该选择何种算法?这个问题很重要,因为若是数据维度大于三,你就找不到简单的方法来可视化地呈现数据。

事实上,这三个算法在其设计之初就赋予了一定的内部特性,我们将其分析透彻的主要目的在于:当你面临商业问题时,这些算法的特性可以让你在选择这些算法时得到一些灵感。

首先,我们来分析下逻辑回归(Logistic Regression),它是解决工业规模问题最流行的算法,尽管与其他技术相比,其在效率和算法实现的易用性方面并不出众。

逻辑回归非常便利并且很有用的一点就是,它输出的结果并不是一个离散值或者确切的类别。相反,你得到的是一个与每个观测样本相关的概率列表。你可以使用不同的标准和常用的性能指标来分析这个概率分数,并得到一个阈值,然后使用最符合你业务问题的方式进行分类输出。在金融行业,这种技术普遍应用于记分卡中,对于同一个模型,你可以调整你的阈值【临界值】来得到不同的分类结果。很少有其它算法使用这种分数作为直接结果。相反,它们的输出是严谨的直接分类结果。同时,逻辑回归在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现,用较少的资源处理大型数据。

除此之外,逻辑回归算法对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。严重的多重共线性则可以使用逻辑回归结合L2正则化来解决,不过如果要得到一个简约模型,L2正则化并不是最好的选择,因为它建立的模型涵盖了全部的特征。

当你的特征数目很大并且还丢失了大部分数据时,逻辑回归就会表现得力不从心。同时,太多的类别变量对逻辑回归来说也是一个问题。逻辑回归的另一个争议点是它使用整个数据来得到它的概率分数。虽然这并不是一个问题,但是当你尝试画一条分离曲线的时候,逻辑回归可能会认为那些位于分数两端“明显的”数据点不应该被关注。有些人可能认为,在理想情况下,逻辑回归应该依赖这些边界点。同时,如果某些特征是非线性的,那么你必须依靠转换,然而当你特征空间的维数增加时,这也会变成另一个难题。所以,对于逻辑回归,我们根据讨论的内容总结了一些突出的优点和缺点。

逻辑回归的优点:

  • 便利的观测样本概率分数;
  • 已有工具的高效实现;
  • 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决;
  • 逻辑回归广泛的应用于工业问题上(这一点很重要)。

逻辑回归的缺点:

  • 当特征空间很大时,逻辑回归的性能不是很好;
  • 不能很好地处理大量多类特征或变量;
  • 对于非线性特征,需要进行转换;
  • 依赖于全部的数据(个人觉得这并不是一个很严重的缺点)。

下面让我们来讨论下决策树和支持向量机。

决策树固有的特性是它对单向变换或非线性特征并不关心[这不同于预测器当中的非线性相关性>,因为它们简单地在特征空间中插入矩形[或是(超)长方体],这些形状可以适应任何单调变换。当决策树被设计用来处理预测器的离散数据或是类别时,任何数量的分类变量对决策树来说都不是真正的问题。使用决策树训练得到的模型相当直观,在业务上也非常容易解释。决策树并不是以概率分数作为直接结果,但是你可以使用类概率反过来分配给终端节点。这也就让我们看到了与决策树相关的最大问题,即它们属于高度偏见型模型。你可以在训练集上构建决策树模型,而且其在训练集上的结果可能优于其它算法,但你的测试集最终会证明它是一个差的预测器。你必须对树进行剪枝,同时结合交叉验证才能得到一个没有过拟合的决策树模型。

随机森林在很大程度上克服了过拟合这一缺陷,其本身并没有什么特别之处,但它却是决策树一个非常优秀的扩展。随机森林同时也剥夺了商业规则的易解释性,因为现在你有上千棵这样的树,而且它们使用的多数投票规则会使得模型变得更加复杂。同时,决策树变量之间也存在相互作用,如果你的大多数变量之间没有相互作用关系或者非常弱,那么会使得结果非常低效。此外,这种设计也使得它们更不易受多重共线性的影响。

决策树总结如下:

决策树的优点:

  • 直观的决策规则
  • 可以处理非线性特征
  • 考虑了变量之间的相互作用

决策树的缺点:

  • 训练集上的效果高度优于测试集,即过拟合[随机森林克服了此缺点]
  • 没有将排名分数作为直接结果

现在来讨论下支持向量机(SVM, Support Vector Machine)。支持向量机的特点是它依靠边界样本来建立需要的分离曲线。正如我们 之间看到的那样,它可以处理非线性决策边界。对边界的依赖,也使得它们有能力处理缺失数据中“明显的”样本实例。支持向量机能够处理大的特征空间,也因此成为文本分析中最受欢迎的算法之一,由于文本数据几乎总是产生大量的特征,所以在这种情况下逻辑回归并不是一个非常好的选择。

对于一个行外人来说,SVM的结果并不像决策树那样直观。同时使用非线性核,使得支持向量机在大型数据上的训练非常耗时。总之:

SVM的优点:

  • 能够处理大型特征空间
  • 能够处理非线性特征之间的相互作用
  • 无需依赖整个数据

SVM的缺点:

  • 当观测样本很多时,效率并不是很高
  • 有时候很难找到一个合适的核函数

为此,我试着编写一个简单的工作流,决定应该何时选择这三种算法,流程如下:

  • 首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考;
  • 然后试试决策树(随机森林)是否可以大幅度提升模型性能。即使你并没有把它当做最终模型,你也可以使用随机森林来移除噪声变量;
  • 如果特征的数量和观测样本特别多,那么当资源和时间充足时,使用SVM不失为一种选择。

最后,大家请记住,在任何时候好的数据总要胜过任何一个算法。时常思考下,看看是否可以使用你的领域知识来设计一个好的特征。在使用创建的特征做实验时,可以尝试下各种不同的想法。此外,你还可以尝试下多种模型的组合。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据挖掘DT数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档