机器学习(十一)—常用机器学习算法优缺点对比、适用条件

你说的曾经没有我的故事 提交于 2021-01-12 07:00:55

1、决策树

  适用条件:数据不同类边界是非线性的,并且通过不断将特征空间切分为矩阵来模拟。特征之间有一定的相关性。特征取值的数目应该差不多,因为信息增益偏向于更多数值的特征。

  优点:1.直观的决策规则;2.可以处理非线性特征;3.考虑了变量之间的相互作用。

  缺点:1.容易过拟合(随机森林、剪枝);2.处理缺失数据时的困难;3、数据集中属性间的相关性。

2、SVM

  适用条件:特征空间大,可以处理非线性的特征。

  优点:1、可以处理小样本情况下的机器学习问题;2、可以处理高维特征;3、使用核函数应对非线性特征空间,解决非线性问题;4、分类面不依赖所有数据,只与几个支持向量有关

  缺点:1.对于大量的预测样本,效率会很低;2.需要找合适的核函数。3、对缺失数据敏感

3、LR

  适用条件:数据线性分布;

  优点:1.模型简单,训练速度快;2.逻辑回归广泛应用与工业问题上。

  缺点:1、形式简单,但准确率不是很高;2、依赖所有数据,很难处理数据不平衡问题;3、处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题;4、逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

4、三者对比:

  模型复杂度:SVM支持核函数,可处理线性非线性问题;LR模型简单,训练速度快,适合处理线性问题;决策树容易过拟合,需要进行剪枝

  损失函数:SVM hinge loss; LR L2正则化; DT adaboost 指数损失

  数据敏感度:SVM添加容忍度对outlier不敏感,只关心支持向量,且需要先做归一化; LR对远点敏感

  数据量:数据量大就用LR,数据量小且特征少就用SVM非线性核

5、神经网络

  适用条件:数据量庞大,参数之间存在内在联系。

  优点:1.并行分布处理能力强;2.提取数据特征;3.逼近复杂的非线性关系。

  缺点:1.需要大量参数;2.学习时间过长;3.不能观察之间的学习过程,输出结果难以解释。

6、随机森林

  优点:1、训练可以高度并行化,对于大数据时代的大样本训练速度有优势;2、能够处理很高维度(feature很多)的数据,并且不用做特征选择;3、可以用于特征选择,给出各个特征的重要性,缩减特征空间维度;4、由于采用了随机采样,训练出的模型的方差小,泛化能力强;5、实现简单,对部分缺失数据不敏感(由于是随机选择样本、随机选择特征)

  缺点:1、在某些噪音比较大的样本集上,RF模型容易陷入过拟合;2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

7、Adaboost

  优点:1、Adaboost作为分类器时,分类精度很高。;2、在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,不用对特征进行筛选,非常灵活。 3、不容易发生过拟合。

  缺点:1、对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。2、由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

8、GBDT

  优点:1、可以灵活处理各种类型的数据,包括连续值和离散值,处理分类和回归问题;2、 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的;3、可以用于筛选特征。

4、使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

  缺点:1、由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

 

 

参考文献:https://blog.csdn.net/cppjava_/article/details/68922113

  https://www.jianshu.com/p/169dc01f0589

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!