From 8af8d4638605f2404a7aae8d82cbc67c9d513d63 Mon Sep 17 00:00:00 2001 From: shataowei Date: Wed, 20 Nov 2019 19:40:03 +0800 Subject: [PATCH] =?UTF-8?q?xgboost=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 51 +++++-------------- README.md | 2 + .../Xgboost.md" | 13 ++++- 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1b832af..fefe9f3 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -3,6 +3,7 @@ + @@ -36,32 +37,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -75,8 +52,8 @@ - - + + @@ -137,8 +114,8 @@ @@ -1409,11 +1386,11 @@ - + - - + + @@ -1431,11 +1408,11 @@ - + - - + + @@ -1465,8 +1442,8 @@ - - + + diff --git a/README.md b/README.md index 4572273..391382a 100644 --- a/README.md +++ b/README.md @@ -233,11 +233,13 @@ - [gbdt和randomforest区别](机器学习/集成学习/GBDT.md#L164) - [GBDT和LR的差异](机器学习/集成学习/GBDT.md#L164) - [xgboost对比gbdt/boosting Tree有了哪些方向上的优化](机器学习/集成学习/Xgboost.md#L164) + - [xgboost和gbdt的区别](机器学习/集成学习/Xgboost.md#L164) - [xgboost优化目标/损失函数改变成什么样](机器学习/集成学习/Xgboost.md#L164) - [xgboost如何使用MAE或MAPE作为目标函数](机器学习/集成学习/Xgboost.md#L164) - [xgboost如何寻找分裂节点的候选集](机器学习/集成学习/Xgboost.md#L164) - [xgboost如何处理缺失值](机器学习/集成学习/Xgboost.md#L164) - [xgboost在计算速度上有了哪些点上提升](机器学习/集成学习/Xgboost.md#L164) + - [xgboost特征重要性是如何得到的](机器学习/集成学习/Xgboost.md#L164) - FM/FFM - SVM - [简单介绍SVM](机器学习/支持向量机/支持向量机.md#L164) diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240/\351\233\206\346\210\220\345\255\246\344\271\240/Xgboost.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240/\351\233\206\346\210\220\345\255\246\344\271\240/Xgboost.md" index 7d0dbde..109bc35 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240/\351\233\206\346\210\220\345\255\246\344\271\240/Xgboost.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240/\351\233\206\346\210\220\345\255\246\344\271\240/Xgboost.md" @@ -8,6 +8,12 @@ - 数据事先排序并且以block形式存储,有利于并行计算 - 基于分布式通信框架rabit,可以运行在MPI和yarn上 - 实现做了面向体系结构的优化,针对cache和内存做了性能优化 + +# xgboost和gbdt的区别? +- gbdt用的是cart回归树作为基模型,xgboost还可以用线性模型,加上天生的正则项,就是带L1和L2逻辑回归(分类)和线性回归(回归) +- gbdt对loss是泰勒一阶展开,xgboost是泰勒二阶展开 +- gbdt没有在loss中带入结点个数和预测值的正则项 +- xgboost在对特征进行了分block预排序,使得在做特征分裂的时候,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行 # xgboost优化目标/损失函数改变成什么样? - 原始:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g94mjezeisj307401fmx0.jpg) @@ -39,4 +45,9 @@ MAPE:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g94mx7uyuej303f0170sj.jpg) # xgboost在计算速度上有了哪些点上提升? - 特征预排序 - 按特征进行存储,每一个block代表一个特征的值,样本在该block中按照它在该特征的值排好序。这些block只需要在程序开始的时候计算一次,后续排序只需要线性扫描这些block即可 - - block可以仅存放样本的索引,而不是样本本身,这样节省了大量的存储空间 \ No newline at end of file + - block可以仅存放样本的索引,而不是样本本身,这样节省了大量的存储空间 + +# xgboost特征重要性是如何得到的? +- ’weight‘:代表着某个特征被选作分裂结点的次数; +- ’gain‘:使用该特征作为分类结点的信息增益; +- ’cover‘:某特征作为划分结点,覆盖样本总数的平均值; \ No newline at end of file