机器学习—常用机器学习算法优缺点对比适用条件
Posted eilearn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习—常用机器学习算法优缺点对比适用条件相关的知识,希望对你有一定的参考价值。
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
以上是关于机器学习—常用机器学习算法优缺点对比适用条件的主要内容,如果未能解决你的问题,请参考以下文章