diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 450c4c0..3ffb7d5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,6 +2,8 @@ + + @@ -23,7 +25,7 @@ - + @@ -36,8 +38,8 @@ - - + + @@ -51,8 +53,8 @@ - - + + @@ -71,12 +73,12 @@ - + - - + + @@ -138,8 +140,8 @@ @@ -1409,20 +1411,20 @@ - - + + - - + + - + - - + + @@ -1434,8 +1436,8 @@ - - + + @@ -1453,20 +1455,20 @@ - - + + - - + + - + - - + + diff --git a/README.md b/README.md index 391382a..3a9452b 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,8 @@ - [xgboost如何处理缺失值](机器学习/集成学习/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/GBDT.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/GBDT.md" index 7d89fde..7c97d22 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/GBDT.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/GBDT.md" @@ -98,6 +98,7 @@ Cart tree,但是都是回归树 - 相同: - 都是多棵树的组合 - 不同: + - RF每次迭代的样本是从全部训练集中有放回抽样形成的,而GBDT每次使用全部样本 - gbdt对异常值比rf更加敏感 - gbdt是串行,rf是并行 - gbdt是cart回归树,rf是cart分类回归树都可以 @@ -105,4 +106,5 @@ Cart tree,但是都是回归树 - gbdt对输出值是进行加权求和,rf对输出值是进行投票或者平均 # GBDT和LR的差异? -从决策边界来说,线性回归的决策边界是一条直线,逻辑回归的决策边界是一条曲线,而GBDT的决策边界可能是很多条线 \ No newline at end of file +- 从决策边界来说,线性回归的决策边界是一条直线,逻辑回归的决策边界是一条曲线,而GBDT的决策边界可能是很多条线 +- 当在高维稀疏特征的场景下,LR的效果一般会比GBDT好。因为LR有参数惩罚,GBDT容易造成过拟合 \ No newline at end of file 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 24c28c0..d1891ca 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" @@ -62,4 +62,18 @@ MAPE:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g94mx7uyuej303f0170sj.jpg) # xgboost特征重要性是如何得到的? - ’weight‘:代表着某个特征被选作分裂结点的次数; - ’gain‘:使用该特征作为分类结点的信息增益; -- ’cover‘:某特征作为划分结点,覆盖样本总数的平均值; \ No newline at end of file +- ’cover‘:某特征作为划分结点,覆盖样本总数的平均值; + +# XGBoost中如何对树进行剪枝? +- 在目标函数中增加了正则项:叶子结点树+叶子结点权重的L2模的平方 +- 在结点分裂时,定义了一个阈值,如果分裂后目标函数的增益小于该阈值,则不分裂 +- 当引入一次分裂后,重新计算新生成的左、右两个叶子结点的样本权重和。如果任一个叶子结点的样本权重低于某一个阈值(最小样本权重和),也会放弃此次分裂 +- XGBoost 先从顶到底建立树直到最大深度,再从底到顶反向检查是否有不满足分裂条件的结点,进行剪枝 + +# XGBoost模型如果过拟合了怎么解决? +- 直接修改模型: + - 降低树的深度 + - 增大叶子结点的权重 + - 增大惩罚系数 +- subsample的力度变大,降低异常点的影响 +- 减小learning rate,提高estimator \ No newline at end of file