各种机器学习算法的优缺点(未完成)

1.线性回归

线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。

 

在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。

 

线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。

 

在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。

 

  • 优点:线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。

  • 缺点:线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。鲁棒性差。

 

2.LR

逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。

 

该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。

 

优点

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

 

缺点

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

 

3.决策树

 

优点:

  1. 概念简单,计算复杂度不高,可解释性强,输出结果易于理解;
  2. 数据的准备工作简单, 能够同时处理数据型和常规型属性,其他的技术往往要求数据属性的单一。
  3. 对中间值得确实不敏感,比较适合处理有缺失属性值的样本,能够处理不相关的特征;
  4. 应用范围广,可以对很多属性的数据集构造决策树,可扩展性强。决策树可以用于不熟悉的数据集合,并从中提取出一些列规则 这一点强于KNN。

 

缺点:

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

 

改进措施:

  1. 对决策树进行剪枝。可以采用交叉验证法和加入正则化的方法。
  2. 使用基于决策树的combination算法,如bagging算法,randomforest算法,可以解决过拟合的问题

 

4.SVM

支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。

 

优点:

  1. 可以解决高维问题:对于线性不可分的情况可以通过核函数,映射到高维特征空间实现线性可分。
  2. SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数在约束条件的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。
  3. SVM在中小量样本规模的时候容易得到数据和特征之间的非线性关系,可以避免使用神经网络结构选择和局部极小值问题,可解释性强。
  4. 小集群分类效果好。
  5. 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
    ①增、删非支持向量样本对模型没有影响;
    ②支持向量样本集具有一定的鲁棒性;
    ③有些成功的应用中,SVM 方法对核的选取不敏感
  6. SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题;

 

缺点:

    1. 寻求合适的核函数相对困难。
    2. 经典的SVM,直接输出类别,不给出后验概率(可以加一层softmax的得出概率)
    3. 仅局限于小集群样本,对于观测样本太多时,效率较低。SVM算法对大规模训练样本难以实施 由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。
    4. 用SVM解决多分类问题存在困难

 

5.KNN

最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。

 

它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。

 

 

优点:

1.简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;

 

2.可用于数值型数据和离散型数据;

 

3.训练时间复杂度为O(n);无数据输入假定;

 

4.对异常值不敏感

 

缺点:

 

1、对于样本容量大的数据集计算量比较大。

2、样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多。

3、KNN每一次分类都会重新进行一次全局运算。

4、k值大小的选择。

 

6.朴素贝叶斯

 

朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。

 

被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。

 

优点:

 

1.生成式模型,通过计算概率来进行分类,可以用来处理多分类问题,

 

2.对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。

 

缺点:

 

1.对输入数据的表达形式很敏感,

 

2.由于朴素贝叶斯的“朴素”特点,所以会带来一些准确率上的损失。

 

3.需要计算先验概率,分类决策存在错误率。

 

7.K均值

  K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。

  • 优点:K 均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。

  • 缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。

 

 

8.DBSCAN

DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。

 

  • 优点:DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。

  • 缺点:用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。

 

 

9.随机森林

 

   随机森林(Random Forest)是属于集成学习的一种组合分类算法(确切说是属于bagging),集成学习的核心思想就是将若干个弱(基)分类器组合起来,得到一个分类性能显著优越的强分类器。如果各弱分类器之前没有强依赖关系、可并行生成,就可以使用随机森林算法。 

 

  随机森林利用自主抽样法(bootstrap)从原数据集中有放回地抽取多个样本,对抽取的样本先用弱分类器—决策树进行训练,然后把这些决策树组合在一起,通过投票得出最终的分类或预测结果。

 

随机森林的优点:

  1. 表现性能好,与其他算法相比有着很大优势。
  2. 随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。
  3. 在训练完之后,随机森林能给出哪些特征比较重要。
  4. 训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。
  5. 在训练过程中,能够检测到feature之间的影响。
  6. 对于不平衡数据集来说,随机森林可以平衡误差。当存在分类不平衡的情况时,随机森林能提供平衡数据集误差的有效方法。
  7. 如果有很大一部分的特征遗失,用RF算法仍然可以维持准确度。
  8. 随机森林算法有很强的抗干扰能力(具体体现在6,7点)。所以当数据存在大量的数据缺失,用RF也是不错的。
  9. 随机森林抗过拟合能力比较强(虽然理论上说随机森林不会产生过拟合现象,但是在现实中噪声是不能忽略的,增加树虽然能够减小过拟合,但没有办法完全消除过拟合,无论怎么增加树都不行,再说树的数目也不可能无限增加的。)
  10. 随机森林能够解决分类与回归两种类型的问题,并在这两方面都有相当好的估计表现。(虽然RF能做回归问题,但通常都用RF来解决分类问题)。
  11. 在创建随机森林时候,对generlization error(泛化误差)使用的是无偏估计模型,泛化能力强。

 

随机森林的缺点:

  1. 随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
  2. 对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,你无法控制模型内部的运行。只能在不同的参数和随机种子之间进行尝试。
  3. 可能有很多相似的决策树,掩盖了真实的结果。
  4. 对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
  5. 执行数据虽然比boosting等快(随机森林属于bagging),但比单只决策树慢多了。

10.GBDT

 

11.xgboost

 

12.Adaboost

优点:

 

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

 

缺点:在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

 

13.人工神经网络

14.EM

 

 

准确率和召回率的使用条件和计算方式,即什么情况下正确率指标不适用?

 

(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN)
精确率
(recall) = TP/(TP+FN)

 

在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。

 

比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。

 

posted @ 2018-09-27 17:56  耐烦不急  阅读(3370)  评论(0编辑  收藏  举报