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

2023-05-16

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

一、逻辑回归模型

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


  

  

  

  

  
往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

2b1bbd221d771e5093a7f0fc1c02866d.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • SBUS调试助手 sbus解析,sbus协议

    最近在做一个无人机用的四路的开关 即航模遥控器PWM信号控制四路继电器 设计硬件的时候专门用了一路可以配置成串口输入的管脚 外部加了一路施密特反相器 其实主要是滤波防止信号抖动 当然私心就是后续可以接SBUS信号 接触航模遥控器时间挺长了
  • Android WebView 网页使用本地字体

    要求在网页里面调用android app中assets目录下的某个字体文件 网页加载通常有两种方式 xff1a 1 loadDataWithBaseURL 2 loadUrl 一 loadDataWithBaseURL 网页中直接使用fil
  • 若依前后端分离版,图片上传后无法显示问题

    若依前后端分离版 xff0c 部署时通常会采用Nginx做反向代理 访问图片出现404 Not Found问题 若依在文件上传成功后 xff0c 请求访问后台地址会根据profile进行匹配 xff0c 需要自己配置代理 配置方式一 xff
  • Vue项目使用history模式,打包部署到二级目录

    需求 xff1a Vue项目使用history模式 xff0c 打包部署到服务器上的二级目录 示例 xff1a your host name h5 index html 原理 xff1a 把页面地址所有含有 h5 的url重定向到 xff1
  • Springboot 服务jar的外部指定端口和文件方式

    在命令行中指定启动端口 java jar xxx jar server port 61 9000 在命令行中指定启动端口与配置文件 java jar xxx jar server port 61 8980 spring profiles a

随机推荐

  • 【Android】本地图片选择(打开媒体库,选择图片)

    在此调查中我要实现的是 xff1a 点击Pictures 按钮后 xff0c 获取手机内所有图片 xff0c 选择某一个图片 xff0c 并显示到ImageView中 应用范围 xff1a 图片上传时的图片选择 xff0c 类似 34 浏览
  • 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知 xff0c 通过PackageManager 可以获取手机端已安装的apk 文件的信息 xff0c 具体代码如下 PackageManager packageManager 61 this getPackageManager Li
  • 【Android】状态栏通知Notification、NotificationManager详解

    在Android系统中 xff0c 发一个状态栏通知还是很方便的 下面我们就来看一下 xff0c 怎么发送状态栏通知 xff0c 状态栏通知又有哪些参数可以设置 xff1f 首先 xff0c 发送一个状态栏通知必须用到两个类 xff1a N
  • 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画 一类是Tween动画 xff0c 就是对场景里的对象不断的进行图像变化来产生动画效果 xff08 旋转 平移 放缩和渐变 xff09 第二类就是 Frame动画 xff0c 即顺序的播放事先做好的图像 x
  • 面试题之Linux58个面试常问【附带答案】

    面试题之Linux58问 目录 1 Linux常用的发行版 2 在Linux里面查看指定时间段的日志文件 3 将文件中所有的old字符以new代替 4 修改文件中第n行到第m行以new代替old 5 统计字符串在文件中出现的次数 6 查看文
  • 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    在进行UI布局的时候 xff0c 可能经常会用到 android gravity 和 android layout Gravity 这两个属性 关于这两个属性的区别 xff0c 网上已经有很多人进行了说明 xff0c 这边再简单说一下 资料
  • 我的2011年终总结(流水账篇)

    2011即将过去 xff0c 2012即将到来 2013应该还会如期而来吧 xff1f 2011回顾 xff1a 去日本出差很幸运的遇上了大地震 xff08 还好不在福岛 xff09 和老婆谈了7年了 xff08 认识十年了 xff09 儿
  • poll函数详解及原理

    poll函数实现和select极为相似 xff0c 但是它们的接口并不相同 xff1a int poll struct pollfd fdarray nfds t nfds int timeout int select int maxfdp
  • 深度学习中的优化算法之SGD

    之前在https blog csdn net fengbingchun article details 75351323 介绍过梯度下降 xff0c 常见的梯度下降有三种形式 xff1a BGD SGD MBGD xff0c 它们的不同之处
  • CMake中include_directories的使用

    CMake中include directories命令用于在构建 build 中添加包含目录 其格式如下 include directories AFTER BEFORE SYSTEM dir1 dir2 将给定的目录添加到编译器 comp
  • CMake中target_link_libraries的使用

    CMake中的target link libraries命令用于指定链接给定目标和 或其依赖项时要使用的库或标志 来自链接库目标的使用要求将被传播 propagated 目标依赖项的使用要求会影响其自身源代码的编译 其格式如下 xff1a
  • CMake中install的使用

    CMake中的install命令用于指定安装时要运行的规则 xff0c 其格式如下 xff1a install TARGETS targets EXPORT lt export name gt RUNTIME DEPENDENCIES ar
  • 相机的内参和外参介绍

    注 xff1a 以下相机内参与外参介绍除来自网络整理外全部来自于 视觉SLAM十四讲从理论到实践 第2版 中的第5讲 xff1a 相机与图像 xff0c 为了方便查看 xff0c 我将每节合并到了一幅图像中 相机与摄像机区别 xff1a 相
  • Linux下常用的C/C++开源Socket库

    1 Linux Socket Programming In C 43 43 http tldp org LDP LG issue74 tougher html 2 ACE http www cs wustl edu schmidt ACE
  • C++11中unique_ptr的使用

    在C 43 43 中 xff0c 动态内存的管理是通过一对运算符来完成的 xff1a new xff0c 在动态内存中为对象分配空间并返回一个指向该对象的指针 xff0c 可以选择对对象进行初始化 xff1b delete xff0c 接受
  • 2021年校招软件测试工程师经典面试题,月薪15K你需要掌握哪些知识点?

    软件测试工程师 xff0c 和开发工程师相比起来 xff0c 前期可能不会涉及太深奥的内容 xff0c 但是涉及的面还是比较广的 面试实习生或者一年左右的岗位 xff0c 问的也主要是一些基础性的问题比较多 涉及的知识主要有MySQL数据库
  • 矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)

    对角矩阵 diagonal matrix xff1a 只在主对角线上含有非零元素 xff0c 其它位置都是零 xff0c 对角线上的元素可以为0或其它值 形式上 xff0c 矩阵D是对角矩阵 xff0c 当且仅当对于所有的i j Di j
  • HTTP解析库http-parser简介及使用

    http parser是一个用C编写的HTTP消息解析器 xff0c 可以解析请求和响应 xff0c 被设计用于高性能HTTP应用程序 它不会进行任何系统调用及内存分配 xff0c 它不会缓冲数据 xff0c 它可以被随时中断 根据你的体系
  • k8s之multus cni

    通常情况下在k8s中 xff0c 一个pod只有一个接口 xff0c 用于集群网络中pod和pod通信 xff0c 而multus定义了一种crd Kubernetes Network Custom Resource Definition
  • 【机器学习】浅析机器学习各大算法的适用场景

    最近在参加一个分类算法竞赛 xff0c 也正好整理各个分类机器学习算法的简单介绍 xff0c 应用场景和优缺点 资源来自网上和自己个人理解 一 逻辑回归模型 1 理解逻辑回归模型 xff08 LR xff09 逻辑回归是一种分类算法 xff