社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习】浅析机器学习各大算法的适用场景

机器学习初学者 • 3 年前 • 403 次点击  

最近在参加一个分类算法竞赛,也正好整理各个分类机器学习算法的简单介绍,应用场景和优缺点。资源来自网上和自己个人理解。

一、逻辑回归模型

1、理解逻辑回归模型(LR)

逻辑回归是一种分类算法,其原理是将线性回归预测出来的数据映射到logit 函数上,从而完成对事件发生概率的预测(最终输出预测标签 0,1)。

2、逻辑回归模型的应用场景

LR 是很多分类算法的基础组件,它的好处是输出值自然地落在 0 到 1 之间,并且有概率意义。因为 LR 本质上是一个线性的分类器,所以处理不好特征之间相关的情况。

虽然预测效果一般,但胜在模型清洗,背后的概率学经得起推敲。它拟合出来的参数就代表了每一个特征对结果的影响。也是一个理解数据的好工具。

使用条件:当数据线性可分,特征空间不是很大的情况,不用在意新数据的情况,后续会有大量新数据的情况。

小结:

  • 用于分类:适合做很多分类算法的基础组件。
  • 用于预测:预测事件发生的概率(输出)。
  • 用于分析:单一因素对某一个事件发生的影响因素分析(特征参数值)。

3、逻辑回归的优缺点

优点:

  • 从整体模型来说,模型清洗,背后的概率推导经得住推敲;
  • 从输出值来说,输出值自然落在 0 到 1 之间,并且有概率意义;
  • 从模型参数来说,参数代表每个特征对输出的影响,可解释性强;
  • 从运行速度来说,实施简单,非常高效(计算量小、存储占用低),可以在大数据场景中使用;
  • 从过拟合角度来说,解决过拟合的方法很多,如 L1、L2正则化;
  • 从多重共线性来说,L2 正则化就可以解决多重共线性问题;

缺点:

  • (特征相关情况)因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况;
  • (特征空间)特征空间很大时,性能不好;
  • (预测精度)容易欠拟合,预测精度不高;

二、树模型

1、理解树模型

决策树模型是运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择下一比较分支,直至叶节点作为最终的决策结果

2、树模型的应用

树模型可以生成清晰的基于特征选择不同预测结构的树状结构,当你希望可以更好的理解手上的数据的时候往往可以使用决策树。同时它也是相对容易被供给的分类器(因为这里认为的改变一些特征,是的分类器判断错误。常见于垃圾邮件躲避检测中,因为决策树最终在底层的判断是基于单个条件,攻击者往往只需要改变很少的特征就可以躲过监测)。

小结:

  • 受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石;

3、树模型的优缺点

优点:

  • 容易理解、可读性强,比较直观;
  • 自变量/特征可以是连续变量,也可以是分类变量;
  • 可处理缺失值;
  • 基本不用做原始数据的预处理,如标准化等;
  • 可以建立非线性模型;
  • 即使是较大的数据及,其训练时间也很短;

劣势:

  • 大型的决策树较难解释;
  • 方差大的决策树会导致模型表现较差;
  • 容易出现过拟合;

三、集成模型

通过组合多个学习器来完成任务,通过集成方法,可以将多个弱学习器组合成一个强分类器,因此集成学习的泛化能力一般比单一分类器要好。

集成方法主要包括 Bagging 和 Boosting,Bagging 和 Boosting 都是将已有的分类或回归算法通过一定方式组合起来,最终得到不一样的效果。

常见的基于 Bagging 思想的集成模型有:随机森林、

基于 Boosting 思想的集成模型有:Adaboost、XgBoost、LightGBM 等。

Bagging 和 Boosting 的区别总结如下:

  • **在样本选择上:**Bagging 方法的训练集是从原始集中有放回的选取,所以原始集中选出的各轮训练集之间是独立的;而 Boosting 方法需要每一轮的训练集不变,知识训练集中每个样本在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整;
  • **在样例权重上:**Bagging 方法使用均匀取样,所以每个样本的权重相等;而 Boosting 方法根据错误率不断调整样本的权重,错误率越大则权重越大;
  • 在预测函数上:Bagging 方法中所有预测函数的权重相等;而 Boosting 方法汇总每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重;
  • 并行计算上:Bagging 方法中各个预测函数可以并行生成;而 Boosting 方法各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果;

1、基于 bagging 思想的集成模型——随机森林模型

随机森林是一种集成算法。它首先随机选取不同的特征和训练样本,生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。

随机森林在现实分析中被大量使用,相对于决策树,在准确性有了很大的额提升,同时一定程度上改善了决策树容易被攻击的特点。

随机森林的应用:

  • 当数据维度相对低(几十维),同时对准确性有较高要求时;
  • 因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候可以先试一下随机森林;

随机森林的优缺点:

优点:

  • 在所有的算法中,随机森林具有极好的准确率;
  • 能够运行在大数据集上;
  • 能够处理具有高维特征的输入样本,而且不需要降维;
  • 能够评估各个特征在分类问题上的重要性;
  • 在生成过程中,能够获取内部生成误差的一种无偏估计;
  • 对于缺失值也能够获得很好的结果;

缺点:

  • 据观测,如果一些分类/回归问题的训练数据中存在噪音,随机森林中的数据集中会出现过拟合的现象;
  • 相对决策树来说,随机森林算法更复杂,计算成本更高(因为 RF 是有多个决策树组成);
  • 由于其本身的复杂性,它们比其他类似的算法需要更多的时间来训练;

2、基于 boosting 思想的集成模型

XGBoost 模型

XGBoost 即梯度提升机器算法,其基本思想是把成百上千个分类准确率较低的树模型组合成一个准确率较高的模型,该模型不断迭代,每次迭代生成一颗新的树,如何在每一步生成合理的树是 Boosting 分类器的核心。

XGBoost 模型的应用:

  • 在不确定使用哪种模型时,可以使用 xgboost 模型跑看下效果(很多竞赛的 top 都有用 xgboost);
  • 特征选择,可以根据模型输出的特征重要性,来选择相关的特征;

XGBoost 的优缺点:

优点:

  • XGBoost 支持多样,并加入了正则项,支持 shrinkage 缩减(相当于学习率),增加了列抽样来防止过拟合,能够处理缺失值,并且支持并行;

缺点:

  • 对所有叶子节点一视同仁,有些叶子节点影响不大,从这方面来说加重了计算,还有就是预排序会消耗很大空间,且要保存特征的排序索引,消耗很多时间,计算量大;

LightGBM 模型

LGB 的应用场合:

  • 当数据量较大的时候,使用 xgboost 需要更长的时间,可以考虑用 LGB;
  • 不想对类别特征进行 one hot encoding 时,可使用 LGB;

LGB 的优缺点:

优点:

  • 内存和计算上现象对 xgb 有明显优势,支持多线程优化;
  • 支持直接输入类别特征,不需要虚拟化;

缺点:

  • leaf-wise 的建树策略很容易过拟合,需要限制最大深度;
  • 相对 XGB 来说,LGB 较为粗糙,会损失一定精度;

本文来源:

https://www.zhihu.com/question/26726794/answer/1494975658




    
往期精彩回顾




站qq群955171419,加入微信群请扫码:
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/124753
 
403 次点击