各种算法的优缺点

决策树

优点

  • 决策树易于理解和解释。
  • 对于决策树,数据的准备往往是简单或者是不必要的。其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。
  • 能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
  • 决策树是一个白盒模型。如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。
  • 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
  • 可以对有许多属性的数据集构造决策树。
  • 决策树可很好地扩展到大型数据库中,同时它的大小独立于数据库的大小。

    缺点

  • 对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。
  • 决策树处理缺失数据时的困难。
  • 过度拟合问题的出现。
  • 忽略数据集中属性之间的相关性。

人工神经网络

优点

  • 分类的准确度高,并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。

    缺点

  • 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察中间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。

KNN算法

优点

  • 简单、有效。
  • 重新训练的代价较低。
  • 计算时间和空间线性于训练集的规模(在一些场合不算太大)。
  • 该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。

    缺点

  • KNN算法是懒散学习方法(lazy learning,基本上不学习),一些积极学习的算法要快很多。
  • 当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
  • 计算量较大。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。

支持向量机(SVM)

优点

  • 可以解决小样本情况下的机器学习问题。
  • 可以提高泛化性能。
  • 可以解决高维问题。
  • 可以解决非线性问题。
  • 可以避免神经网络结构选择和局部极小点问题。

    缺点

  • 对缺失数据敏感。
  • 对非线性问题没有通用解决方案,必须谨慎选择Kernel-function来处理。

朴素贝叶斯

优点

  • 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
  • NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。

    缺点

  • NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
  • 需要知道先验概率。

AdaBoost算法

优点

  • AdaBoost是一种有很高精度的分类器。
  • 可以使用各种方法构建子分类器,AdaBoost算法提供的是框架。
  • 当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。
  • 简单,不用做特征筛选。
  • 不用担心overfitting。

    缺点

  • AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
  • 数据不平衡导致分类精度下降。
  • 训练比较耗时,每次重新选择当前分类器最好切分点。

逻辑回归

优点

  • 预测结果是界于0和1之间的概率;
  • 可以适用于连续性和类别性自变量;
  • 容易使用和解释;

    缺点

  • 对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。​需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
  • 预测结果呈“S”型,因此从 $log(odds)$ 向概率转化的过程是非线性的,在两端随着 $log(odds)​$ 值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。

随机森林

优点

  • 在当前的很多数据集上,相对其他算法有着很大的优势,表现良好
  • 它能够处理很高维度(feature很多)的数据,并且不用做特征选择
  • 在训练完后,它能够给出哪些 feature 比较重要
  • 在创建随机森林的时候,对generlization error使用的是无偏估计,模型泛化能力强
  • 训练速度快,容易做成并行化方法
  • 在训练过程中,能够检测到feature间的互相影响
  • 实现比较简单
  • 对于不平衡的数据集来说,它可以平衡误差。
  • 如果有很大一部分的特征遗失,仍可以维持准确度。

    缺点

  • 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合
  • 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

GBDT

优点

  • 可以灵活处理各种类型的数据,包括连续值和离散值。
  • 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
  • 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber 损失函数和 Quantile 损失函数。

    缺点

  • 由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
-------------本文结束感谢您的阅读-------------
您的支持将是我前进的动力!