2 min read

学习笔记:Boosting理论部分 学习笔记

学习笔记 系列导航

1 Hive/Impala 学习笔记 2017-12-04
2 KS 学习笔记 2017-12-06
3 datacamp pandas DataFrames 学习笔记 2017-12-11
4 datacamp pandas Merging DataFrames 学习笔记 2017-12-13
5 Databases in Python 学习笔记 2017-12-14
6 Data Visualization with Python 学习笔记 2017-12-16
7 Exploratory data analysis in Python 学习笔记 2017-12-17
8 Statistical Thinking in Python (Part-2) 学习笔记 2017-12-18
9 list comprehensions in Python 学习笔记 2017-12-19
10 无监督学习:Unsupervised Learning in Python 学习笔记 2017-12-20
11 学习笔记:Deep Learning in Python 学习笔记 2017-12-22
12 学习笔记:Python 学习的流水笔记 2017-12-25
13 学习笔记:Network Analysis in Python Part 1 学习笔记 2017-12-27
14 学习笔记:XGBoost using Python 学习笔记 2017-12-28
15 学习笔记:Supervised Learning with scikit-learn 学习笔记 2017-12-30
16 学习笔记:Machine Learning with the Experts School Budgets 学习笔记 2018-01-02
17 学习笔记:犯罪心理解析 2018-01-02
18 学习笔记:决策树理论部分 学习笔记 2018-01-03
19 学习笔记:Shell 学习笔记 2018-01-04
20 学习笔记:客户价值定价 学习笔记 2018-01-04
21 学习笔记:Introduction to Git for Data Science 学习笔记 2018-01-06
22 学习笔记:线性代数 整理笔记 2018-01-08
23 学习笔记:退火算法 学习笔记 2018-01-09
24 学习笔记:Fahrenheit 911 视频笔记 2018-01-18
25 学习笔记:pandas debugging 学习笔记 2018-01-19
26 学习笔记:brilliant.org概率论导论 学习笔记 2018-01-22
27 学习笔记:Machine Learning with Tree-Based Models in R 学习笔记 2018-01-22
28 学习笔记:Building Web Applications in R with Shiny 学习笔记 2018-01-25
29 学习笔记:Inference for Numerical Data 学习笔记 2018-01-26
30 学习笔记:Support Vector Machines SVM 学习笔记 2018-01-26
31 学习笔记:Introduction to DataCamp Projects 学习笔记 2018-01-28
32 学习笔记:Working with Web Data in R 学习笔记 2018-01-28
33 学习笔记:三种平均数使用的方式 学习笔记 2018-01-29
34 学习笔记:戒律的复活 每周六更新 2018-01-29
35 学习笔记:Communicating with Data in the Tidyverse 学习笔记 2018-01-31
36 学习笔记:Kaggle R Tutorial on Machine Learning 学习笔记 2018-02-01
37 学习笔记:Kaggle Python Tutorial on Machine Learning 学习笔记 2018-02-02
38 技术:ggridges 山峦图 学习笔记 2018-02-02
39 技术:XGBoost 学习笔记 2018-02-02
40 学习笔记:圆桌派 第三季 视频笔记 2018-02-05
41 学习笔记:基础与技巧整理 2018-02-25
42 集成学习R SuperLearner包学习笔记 2018-03-04
43 学习笔记:英语学习积累:词汇、表达与语法整理 2018-04-09
44 技术:原理与应用学习笔记 2018-04-29
45 学习笔记:魏剑峰英语学习笔记:表达与语法整理 2018-05-02
46 技术:方法与实践学习笔记 2018-05-12
47 无监督学习:主成分分析(PCA)原理与实现学习笔记 2018-05-17
48 技术:特征筛选学习笔记 2018-05-29
49 学习笔记:Planet Money播客学习笔记:经济学话题解析 2018-06-05
50 基础算法系列梯度下降算法详解:原理与优化学习笔记 2018-07-11
51 技术:统计建模学习笔记 2018-07-24
52 技术:指标设计学习笔记 2018-09-20
53 技术:安装与使用基础学习笔记 2018-11-07
54 📈 ggplot 设计思路 学习笔记 2019-12-26
55 🧩 Python 函数编写学习笔记 2019-12-31
56 技术:特征工程之目标编码学习笔记 2020-01-20
57 📚 词向量 学习笔记 2020-07-04
58 主题模型:学习笔记 2020-07-04
59 学习笔记:WSJ 学习笔记 2020-10-19
60 健身:学习笔记 2025-08-19

这里主要讲的是理论部分,反正我在网上很少看到讲的清楚的文章,这篇写的比较好,是卡狗,Kaggle比较厉害的一个人写的,Ben Gorman | Kaggle。 这里主要参考他的一个博客,A Kaggle Master Explains Gradient Boosting | No Free Hunch

简单来说,XGBoost的形成,是通过决策树\(\to\) Boosting \(\to\) XGBoost完成的。

因此先将决策树。 具体决策树递归的逻辑见 ( 决策树理论部分 学习笔记 - A Hugo website ) 。

PersonID Age LikesGardening PlaysVideoGames LikesHats
1 13 FALSE TRUE TRUE
2 14 FALSE TRUE FALSE
3 15 FALSE TRUE FALSE
4 25 TRUE TRUE TRUE
5 35 FALSE TRUE TRUE
6 49 TRUE FALSE FALSE
7 68 TRUE TRUE TRUE
8 71 TRUE FALSE FALSE
9 73 TRUE FALSE TRUE

其中列标签分别表示,

  • PersonID表示数据表的index,
  • Age\(Y\)变量,
  • 其余是\(X\)变量,且都是dummy的。

对于三个自变量,有如下的猜想,

– The people who like gardening are probably older,喜欢花花草草的,可能更年长 – The people who like video games are probably younger,喜欢打游戏的,可能更年轻 – LikesHats is probably just random noise,喜欢帽子与否是噪音,这里的引入主要是为说明决策树的一个超参数。

Feature FALSE. TRUE.
LikesGardening {13, 14, 15, 35} {25, 49, 68, 71, 73}
PlaysVideoGames {49, 71, 73} {13, 14, 15, 25, 35, 68}
LikesHats {14, 15, 49, 71} {13, 25, 35, 68, 73}

假设每个叶子最少三个样本得到的例子。 这个通过信息熵控制,暂时不讨论这个问题。

假设每个叶子最少两个样本得到的例子,发现噪音-帽子进入了决策树,因为模型抓取了噪音,因此过拟合了。

这里可以通过正则化等方法控制,但是Boosting也可以解决这个问题。

PersonID Age Tree1.Prediction Tree1.Residual
1 13 19.25 -6.25
2 14 19.25 -5.25
3 15 19.25 -4.25
4 25 57.20 -32.20
5 35 19.25 15.75
6 49 57.20 -8.20
7 68 57.20 10.80
8 71 57.20 13.80
9 73 57.20 15.80

公式满足

\[Age-Tree1.Prediction = Tree1.Residual\]

Boosting的关键出现了,

Tree1.Residual也就是\(\hat \mu\)进行学习,这就是知道了,为什么线性回归搞Boosting存在bug,因为\(\rho(\hat \mu, X) = 0\)

这个树相比较于Tree1的关键之处是,没有用帽子变量,因此剔除了噪音,这就是Boosting的价值之处,并且这里的\(\hat y\)Tree1里面的\(\hat \mu\),是一个过拟合的决策树的东西。 因此Boosting相当于对错题集重复的学习。

PersonID Age Tree1.Prediction Tree1.Residual Tree2.Prediction Combined.Prediction Final.Residual
1 13 19.25 -6.25 -3.567 15.68 2.6830
2 14 19.25 -5.25 -3.567 15.68 1.6830
3 15 19.25 -4.25 -3.567 15.68 0.6833
4 25 57.20 -32.20 -3.567 53.63 28.6300
5 35 19.25 15.75 -3.567 15.68 -19.3200
6 49 57.20 -8.20 7.133 64.33 15.3300
7 68 57.20 10.80 -3.567 53.63 -14.3700
8 71 57.20 13.80 7.133 64.33 -6.6670
9 73 57.20 15.80 7.133 64.33 -8.6670

这里满足,以PersonID = 1为例。

Age = 13Tree1 Prediction = 19.25, 所以,Tree1 Residual = 13 - 19.25 = -6.25

Tree2 Prediction = -3.567 所以,Tree2 Residual = -6.25 - (-3.567) = -2.683,也就是Final Residual

所以,Combined.Prediction = Age - Final Residual = 13 - (-2.683) = 15.83

用公式推导就是,

\[y = F_{1}(X) \to y = \hat F_{1}(X) + \hat \mu_{1}\]

\[\hat \mu_1 = F_{2}(X) \to \hat \mu_1 = \hat F_{2}(X) + \hat \mu_{2}\]

因此,

\[\begin{alignat}{2} y & = \hat F_{1}(X) + \hat \mu_{1} \\ & = \hat F_{1}(X) + \hat F_{2}(X) + \hat \mu_{2} \\ & = \sum_{i}^m \hat F_{i}(X) + \hat \mu_{m} \\ \end{alignat}\]

\(\hat \mu_{m}\)理论上比之前都要好,因此这就是Boosting的价值。

学习笔记 系列导航

1 Hive/Impala 学习笔记 2017-12-04
2 KS 学习笔记 2017-12-06
3 datacamp pandas DataFrames 学习笔记 2017-12-11
4 datacamp pandas Merging DataFrames 学习笔记 2017-12-13
5 Databases in Python 学习笔记 2017-12-14
6 Data Visualization with Python 学习笔记 2017-12-16
7 Exploratory data analysis in Python 学习笔记 2017-12-17
8 Statistical Thinking in Python (Part-2) 学习笔记 2017-12-18
9 list comprehensions in Python 学习笔记 2017-12-19
10 无监督学习:Unsupervised Learning in Python 学习笔记 2017-12-20
11 学习笔记:Deep Learning in Python 学习笔记 2017-12-22
12 学习笔记:Python 学习的流水笔记 2017-12-25
13 学习笔记:Network Analysis in Python Part 1 学习笔记 2017-12-27
14 学习笔记:XGBoost using Python 学习笔记 2017-12-28
15 学习笔记:Supervised Learning with scikit-learn 学习笔记 2017-12-30
16 学习笔记:Machine Learning with the Experts School Budgets 学习笔记 2018-01-02
17 学习笔记:犯罪心理解析 2018-01-02
18 学习笔记:决策树理论部分 学习笔记 2018-01-03
19 学习笔记:Shell 学习笔记 2018-01-04
20 学习笔记:客户价值定价 学习笔记 2018-01-04
21 学习笔记:Introduction to Git for Data Science 学习笔记 2018-01-06
22 学习笔记:线性代数 整理笔记 2018-01-08
23 学习笔记:退火算法 学习笔记 2018-01-09
24 学习笔记:Fahrenheit 911 视频笔记 2018-01-18
25 学习笔记:pandas debugging 学习笔记 2018-01-19
26 学习笔记:brilliant.org概率论导论 学习笔记 2018-01-22
27 学习笔记:Machine Learning with Tree-Based Models in R 学习笔记 2018-01-22
28 学习笔记:Building Web Applications in R with Shiny 学习笔记 2018-01-25
29 学习笔记:Inference for Numerical Data 学习笔记 2018-01-26
30 学习笔记:Support Vector Machines SVM 学习笔记 2018-01-26
31 学习笔记:Introduction to DataCamp Projects 学习笔记 2018-01-28
32 学习笔记:Working with Web Data in R 学习笔记 2018-01-28
33 学习笔记:三种平均数使用的方式 学习笔记 2018-01-29
34 学习笔记:戒律的复活 每周六更新 2018-01-29
35 学习笔记:Communicating with Data in the Tidyverse 学习笔记 2018-01-31
36 学习笔记:Kaggle R Tutorial on Machine Learning 学习笔记 2018-02-01
37 学习笔记:Kaggle Python Tutorial on Machine Learning 学习笔记 2018-02-02
38 技术:ggridges 山峦图 学习笔记 2018-02-02
39 技术:XGBoost 学习笔记 2018-02-02
40 学习笔记:圆桌派 第三季 视频笔记 2018-02-05
41 学习笔记:基础与技巧整理 2018-02-25
42 集成学习R SuperLearner包学习笔记 2018-03-04
43 学习笔记:英语学习积累:词汇、表达与语法整理 2018-04-09
44 技术:原理与应用学习笔记 2018-04-29
45 学习笔记:魏剑峰英语学习笔记:表达与语法整理 2018-05-02
46 技术:方法与实践学习笔记 2018-05-12
47 无监督学习:主成分分析(PCA)原理与实现学习笔记 2018-05-17
48 技术:特征筛选学习笔记 2018-05-29
49 学习笔记:Planet Money播客学习笔记:经济学话题解析 2018-06-05
50 基础算法系列梯度下降算法详解:原理与优化学习笔记 2018-07-11
51 技术:统计建模学习笔记 2018-07-24
52 技术:指标设计学习笔记 2018-09-20
53 技术:安装与使用基础学习笔记 2018-11-07
54 📈 ggplot 设计思路 学习笔记 2019-12-26
55 🧩 Python 函数编写学习笔记 2019-12-31
56 技术:特征工程之目标编码学习笔记 2020-01-20
57 📚 词向量 学习笔记 2020-07-04
58 主题模型:学习笔记 2020-07-04
59 学习笔记:WSJ 学习笔记 2020-10-19
60 健身:学习笔记 2025-08-19