zoukankan      html  css  js  c++  java
  • 机器学习(十一)—常用机器学习算法优缺点对比、适用条件

    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

  • 相关阅读:
    Access restriction: The type BASE64Encoder is not accessible due to restrict(转载)
    ECLIPSE控制台信息导出
    ZUI分页器的使用案例(ECLIPSE SMS项目)
    关于PLSQL启动用时较长的问题解决
    javax.naming.NamingException: Cannot create resource instance报错修改
    百度AI人脸识别的学习总结
    ECharts3.0饼状图使用问题总结
    jni开发
    AndroidStudio封装jar并混淆
    Androidstudio代码混淆
  • 原文地址:https://www.cnblogs.com/eilearn/p/9047070.html
Copyright © 2011-2022 走看看