转载自https://www.nowcoder.com/ta/review-ml/review?query=&asc=true&order=&page=99

Xgboost:

优缺点:

1)在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点。

2)xgboost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。

3)特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。

4)按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率。paper中提到,可先将数据收集到线程内部的buffer,然后再计算,提高算法的效率。

5)xgboost 还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程、数据压缩、分片的方法,尽可能的提高算法的效率。

适用场景:分类回归问题都可以。

Rf:

优点:

1)表现性能好,与其他算法相比有着很大优势。

2)随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。

3)在训练完之后,随机森林能给出哪些特征比较重要。

4)训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。

5)在训练过程中,能够检测到feature之间的影响。

6)对于不平衡数据集来说,随机森林可以平衡误差。当存在分类不平衡的情况时,随机森林能提供平衡数据集误差的有效方法。7)如果有很大一部分的特征遗失,用RF算法仍然可以维持准确度。

8)随机森林算法有很强的抗干扰能力(具体体现在6,7点)。所以当数据存在大量的数据缺失,用RF也是不错的。

9)随机森林抗过拟合能力比较强(虽然理论上说随机森林不会产生过拟合现象,但是在现实中噪声是不能忽略的,增加树虽然能够减小过拟合,但没有办法完全消除过拟合,无论怎么增加树都不行,再说树的数目也不可能无限增加的)。

10)随机森林能够解决分类与回归两种类型的问题,并在这两方面都有相当好的估计表现。(虽然RF能做回归问题,但通常都用RF来解决分类问题)。

11)在创建随机森林时候,对generlization error(泛化误差)使用的是无偏估计模型,泛化能力强。

缺点:

1)随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。

2)对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,你无法控制模型内部的运行。只能在不同的参数和随机种子之间进行尝试。

3)可能有很多相似的决策树,掩盖了真实的结果。

4)对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。

5)执行数据虽然比boosting等快(随机森林属于bagging),但比单只决策树慢多了。

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

Lr:

优点:实现简单,广泛的应用于工业问题上;分类时计算量非常小,速度很快,存储资源低;便利的观测样本概率分数;对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题。

缺点:当特征空间很大时,逻辑回归的性能不是很好;容易欠拟合,一般准确度不太高

不能很好地处理大量多类特征或变量;只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;对于非线性特征,需要进行转换。

适用场景:LR同样是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。

xgboost、随机森林和逻辑回归的优缺点相关推荐

  1. python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类

    实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb ...

  2. 贷款利润最大化——利用随机森林和逻辑回归

    文章目录 分析目的 一.数据采集 1.数据来源 2.数据说明 二.数据传输 三.数据处理 1.查看数据 2.清理无用特征值 3.标签列分析 4.清理只单一值的列 5.空值处理 6.数据类型转换 四.数 ...

  3. sklearn实现决策树,随机森林,逻辑回归,KNN,贝叶斯,SVM,以葡萄干数据集为例

    数据集介绍 本次使用的数据集为葡萄干数据集,来源于UCI中: https://archive.ics.uci.edu/ml/datasets/Raisin+Dataset 介绍为: Images of ...

  4. 机器学习案例:运营商客户流失的数据分析 #数据去重#数据分组整合#缺失值处理#相关性分析#样本平衡#决策树、随机森林、逻辑回归

    运营商客户流失分析 - 飞桨AI Studio 目录 1 数据预处理 1.1 数据集去重 1.2 数据集分组整合 1.3 缺失值处理 1.4 相关性分析 2 样本平衡 3 相关性分析 4 构建模型 4 ...

  5. 实战7:机器学习实战之 随机森林、逻辑回归、SVM算法方法进行垃圾邮件过滤分类 代码+数据

    任务描述: 我们日常学习以及工作中会收到非常多的邮件,除了与学习工作相关的邮件,还会收到许多垃圾邮件,包括广告邮件.欺诈邮件等等.本任务通过邮件中包含的文本内容来判断该邮件是正常邮件(ham)还是垃圾 ...

  6. 随机森林的随机性体现和优缺点

    随机森林的随机性体现和优缺点 1.随机性主要体现在两个方面: 2.优点 3.缺点: 1.随机性主要体现在两个方面: 训练每棵树时,从全部训练样本(样本数为N)中选取一个可能有重复的大小同样为N的数据集 ...

  7. sklearn 随机森林(分类器、回归器)的重要参数、属性、方法理解

    文章目录 随机森林分类器 引入 重要参数 1,n_estimators 2,criterion 3,max_depth 4,min_samples_leaf 5,min_samples_split 7 ...

  8. 【sklearn学习】随机森林分类、回归

    集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合结果,以此来获取比单个模型更好的回归或分类表现. 三类集成算法:装袋法(Bagging).提升法(Boosting).stacking 装袋法: ...

  9. 随机森林案例:回归森林填补缺失值

    文章目录 前言 使用随机森林回归填补缺失值 1.导入库 2. 以波士顿数据集为例,导入完整的数据集并探索 3.为完整数据集放入缺失值 4. 使用0和均值来进行填补 5. 使用随机森林填补缺失值 6. ...

最新文章

  1. 【Vegas原创】解决System.Web.Extensions版本冲突方法
  2. AI靠语意理解把照片变抽象画,无需相应数据集,只画4笔也保留神韵,有毕加索内味儿了...
  3. Linux/Android Kconfig Makefile defconfig 和 .config关系
  4. mysql 存储过程 排序_更改MySQL存储过程“数据库排序规则”的名称
  5. 还在搜百度图片?太LOW了!
  6. MySQL日期类型的处理总结
  7. Spring 框架基础(02):Bean的生命周期,作用域,装配总结
  8. Java JDBC DriverManager类
  9. anaconda安装python3.7、jupyter_Anaconda3 Python 3 和 2 in Jupyter Notebook共存方法
  10. linux配置部署nginx
  11. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫
  12. MSCI 成份股 清单
  13. 中国邮路算法(中国邮递员问题)(详细)
  14. php网站做分享到朋友圈,PHP实现微信分享朋友圈
  15. 计算机二级c语言考点解析,2017年计算机二级C语言考点解析
  16. Confluence 自定义html禁用Word、PDF导出权限
  17. ORACLE ASMM与AMM的总结
  18. FZU 2191 完美的数字
  19. 微服务进阶避坑指南 | 技术头条
  20. A4988驱动42步进电机

热门文章

  1. no Bloomberg, wind, ceic, csmar at cambridge
  2. put the eye care sticker on the neck is relief
  3. 如果要和外国人做项目,加入一个teams是第一步,就跟我们的企业微信,钉钉差不多
  4. #region 常量和静态变量静态类readonly
  5. 查看linux是几位的操作系统
  6. 今天又看到的Acm指南
  7. 【C++拾遗】 从内存布局看C++虚继承的实现原理
  8. 小白路程之----初学React语法栈之redux与react-redux
  9. 动态规划问题之一马当先
  10. 《像计算机科学家一样思考Python》——3.9 变量和形参是局部的