xgboost

布客·ApacheCN 翻译校对活动进度公告 2020.5

余生颓废 提交于 2020-05-09 08:46:22
注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领。 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群。翻译/校对五个文档的贡献者,可以申请实习证明。 请私聊片刻(529815144)、咸鱼(1034616238)、或飞龙(562826179)来领取以上奖励。 可解释的机器学习【校对】 参与方式:https://github.com/apachecn/interpretable-ml-book-zh/blob/master/CONTRIBUTING.md 整体进度:https://github.com/apachecn/interpretable-ml-book-zh/issues/1 项目仓库:https://github.com/apachecn/interpretable-ml-book-zh 认领:7/9,校对:7/9 章节 校对者 进度 前言 @wnma3mz 完成 第一章 引言 @wnma3mz 完成 第二章 解释性 @utopfish 完成 第三章 数据集 @GeneralLi95 完成 第四章 解释模型 第五章 模型不可知论方法 第六章 基于实例的解释 @mahaoyang 完成 第七章 神经网络解释 @binbinmeng 完成 第八章 水晶球 @mahaoyang 完成 UCB DS100 课本:数据科学的原理与技巧【校对】 参与方式

比快更快——微软LightGBM

♀尐吖头ヾ 提交于 2020-05-08 00:21:00
###LightGBM介绍 xgboost是一种优秀的boosting框架,但是在使用过程中,其训练耗时过长,内存占用比较大。微软在2016年推出了另外一种boosting框架——lightgbm,在不降低准确度的的前提下,速度提升了10倍左右,占用内存下降了3倍左右。详细的实验结果参见: LightGBM experiment .其令人印象深刻的特点有: 将连续的特征值转化为离散的直方图,利用直方图进行节点的分裂,牺牲了一定的准确度换取了训练速度和内存空间的优化。 相对于xgboost的level—wise的生长策略,lightgbm使用了leaf-wise树生长策略。由于level-wise在分裂时,部分增益小的树也得到了增长,虽然容易控制误差,但是分裂有时是不合理的,而lightgbm使用level-wise,只在增益大的树上分裂生长,甚至对Feature f如果分裂无收益,那么后续也将不会对f计算。体现在参数上,xgboost使用max_depth,而lightgbm使用num_leaves控制过拟合。 直接支持了类别输入模型,无需对类别型的特征进行one-hot编码,lightgbm在参数categorial_feature中来指定数据中的类别特征列即可。 ###LightGBM调参 几个重要的参数调节: num_leaves 这是控制过拟合的参数

spark-xgboost8.1 java 例子

旧时模样 提交于 2020-05-06 10:18:02
第一个xgb的例子,还算顺利 public class Xgb2 implements Serializable{ /** * */ private static final long serialVersionUID = 1L; public static void main(String[] args) throws Exception { Long start=System.currentTimeMillis(); SparkSession s= SparkSession.builder().appName("XgbTrain").getOrCreate(); Xgb2 main=new Xgb2(); main.udf(s); main.read(s); HttpClientUtil.sendDingMessage("耗时:"+(System.currentTimeMillis()-start)/1000+"s"); } public void udf(SparkSession s) { s.udf().register("strToDouble", new UDF1<String, Double>() { private static final long serialVersionUID = 1L; @Override public Double call(String

Event Recommendation Engine Challenge分步解析第七步

旧巷老猫 提交于 2020-05-05 04:15:52
一、请知晓   本文是基于:    Event Recommendation Engine Challenge分步解析第一步    Event Recommendation Engine Challenge分步解析第二步    Event Recommendation Engine Challenge分步解析第三步    Event Recommendation Engine Challenge分步解析第四步    Event Recommendation Engine Challenge分步解析第五步    Event Recommendation Engine Challenge分步解析第六步   需要读者先阅读前六篇文章解析 二、模型构建和预测   实际上在上述特征构造好了之后,我们有很多的办法去训练得到模型和完成预测,这里用了sklearn中的SGDClassifier 事实上xgboost有更好的效果(显然我们的特征大多是密集型的浮点数,很适合GBDT这样的模型)   注意交叉验证,我们这里用了10折的交叉验证 import pandas as pd import numpy as np from sklearn.linear_model import SGDClassifier from sklearn.model_selection import KFold

【回归预测】SVM基础实战篇之经典预测(三)

ぃ、小莉子 提交于 2020-05-04 14:16:23
​ 【玩点有趣的】这几篇SVM介绍是从0到1慢慢学会支持向量机,将是满满的干货,都是我亲自写的,可以随我一起从头了解SVM,并在短期内能使用SVM做到想要的分类或者预测~我也将附上自己基础训练的完整代码,可以直接跑,建议同我一样初学者们,自己从头到尾打一遍,找找手感,代码不能光看看,实践出真知! ​ 回顾一下, 上上篇 ,我们建立和比较了线性分类器和非线性分类器,比较了多元线性核函数和线性核函数,解决了类型数量不平衡问题, 上篇 ,我们使用SVC做了简单的分类,话不多说,今天我们开始SVR做回归预测,原理篇和实战基础一 请参见上几篇博客,我们循序渐进慢慢贴近真实情景!解决生活问题 估算交通流量 首先做一个比较 有趣的应用 ,我们使用了 SVR来预测:在洛杉矶棒球队进行主场比赛期间,体育场周边马路通过的汽车数量 如图: 这里 一万七千条记录数据 ,分别表示: 星期,时间,对手球队名,比赛是否正在进行,通过汽车的数量 【完整代码】上代码: import numpy as np from sklearn import preprocessing from sklearn . svm import SVR input_file = 'traffic_data.txt' X = [ ] count = 0 with open ( input_file , 'r' ) as f : for

树模型常见面试题(以XGBoost为主)

强颜欢笑 提交于 2020-04-28 02:05:34
参考资料: 珍藏版 | 20道XGBoost面试题 推荐系统面试题之机器学习(一) -----树模型 1. 简单介绍一下XGBoost 2. XGBoost与GBDT有什么不同 3. XGBoost为什么使用泰勒二阶展开 4. XGBoost为什么可以并行训练 5. XGBoost为什么快 6. XGBoost防止过拟合的方法 7. XGBoost如何处理缺失值 8. XGBoost中叶子结点的权重如何计算出来 9. XGBoost中的一棵树的停止生长条件 10. RF和GBDT的区别 11. XGBoost如何处理不平衡数据 12. 比较LR和GBDT,说说什么情景下GBDT不如LR 13. XGBoost中如何对树进行剪枝 14. XGBoost如何选择最佳分裂点? 15. XGBoost的Scalable性如何体现 16. XGBoost如何评价特征的重要性 17. XGBooost参数调优的一般步骤 18. XGBoost模型如果过拟合了怎么解决 19.为什么XGBoost相比某些模型对缺失值不敏感 20. XGBoost和LightGBM的区别 来源: oschina 链接: https://my.oschina.net/u/4255576/blog/3342480

xgboost与gdbt的不同和优化

浪尽此生 提交于 2020-04-27 04:04:09
XGBoost 是GBDT算法的一种变种,是一种常用的有监督集成学习算法;是一种 伸缩性强、便捷的可并行构建模型的Gradient Boosting算法 Xgboost和GBDT不同之处 xgboost在目标函数中显示的加上了正则化项,基学习器为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 支持并行化,这是XGBoost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。 xgboost算法的步骤和GBDT基本相同,都是首先初始化为一个常数,GBDT是根据一阶导数gi,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。 XGBoost的其它特性 列采样(column subsampling):借鉴随机森林的做法,支持列抽样,不仅可以降低过 拟合,还可以减少计算量; 支持对缺失值的自动处理。对于特征的值有缺失的样本,XGBoost可以自动学习分裂方 向;

机器学习(八)—GBDT 与 XGBOOST

帅比萌擦擦* 提交于 2020-04-27 02:42:57
  RF、GBDT和XGBoost都属于集成学习(Ensemble Learning),集成学习的 目的 是通过结合多个基学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。   根据个体学习器的生成方式,目前的集成学习方法大致分为两大类:即个体学习器之间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表就是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)。 1、 GBDT和XGBoost区别    XGBOOST相比于GBDT有何不同?XGBOOST为什么快?XGBOOST如何支持并行? 传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归); 传统的GBDT在残差梯度方向拟合只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到 一阶和二阶导数 ,xgboost工具支持 自定义代价函数 ,只要函数可一阶和二阶求导; XGBoost在代价函数中 加入了正则项 ,用于控制模型的复杂度。从权衡方差偏差来看,它 降低了模型的方差 ,使学习出来的模型更加简单,放置过拟合,这也是XGBoost优于传统GBDT的一个特性;正则项里包含了树的叶子节点个数

6. 集成学习(Ensemble Learning)算法比较

旧巷老猫 提交于 2020-04-27 02:41:23
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 7. 集成学习(Ensemble Learning)Stacking 1. AdaBoost Vs GBDT 相同 AdaBoost和GBDT都是重复选择一个表现一般的模型并且每次基于先前模型的表现进行调整。 不同 AdaBoost是通过提升错分数据点的权重来定位模型的不足。 BDT是通过拟合梯度的残差来迭代的。 GBDT是一个通用算法,可以使用更多种类的目标函数。 Adaboost一般用于分类,GBDT一般用于回归 2. GBDT Vs XGBOOST 基分类器的选择:传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。 二阶泰勒展开:传统GBDT在优化时只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下