Skip to content

Commit 359e4c3

Browse files
committed
docs: Project architecture and documents
1 parent da62f36 commit 359e4c3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+3413
-2
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Bagging
2+
3+
## algorithm
4+
5+
bootstrap aggregating
6+
7+
算法过程:
8+
9+
1. 从原始样本集中抽取训练集。
10+
11+
> 每轮从原始样本集中使用Bootstraping方法抽取n个训练样本。共进行k轮,形成k个训练集(k个训练集之间是相互独立的)
12+
13+
2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型
14+
15+
> 并没有具体的分类算法或回归算法,可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等
16+
17+
3. 模型预测
18+
19+
> 分类问题:上步得到的k个模型采用投票的方式得到分类结果
20+
>
21+
> 回归问题:计算上述模型的均值作为最后的结果
22+
23+
24+
25+
## Contract with Boosting
26+
27+
1. 样本选择
28+
29+
> Bagging:训练集自助采样,选出的各轮训练集之间互相独立
30+
>
31+
> Boosting:每一轮训练集不变,训练集每个样例在分类器中的权重发生变化。权值是根据上一轮的分类结果进行调整。
32+
33+
2. 样例权重
34+
35+
> Bagging:使用均匀采样,每个样例的权重相等
36+
>
37+
> Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大
38+
39+
3. 预测函数
40+
41+
> Bagging:权重相等
42+
>
43+
> Boosting:每个弱分类器都有对应的权重
44+
45+
4. 并行计算
46+
47+
> Bagging:各个预测函数可并行完成
48+
>
49+
> Boosting:各个预测函数顺序生成,后一个模型参数需要前一轮模型的结果
50+
51+
52+
53+
# Random Forest
54+
55+
* Bagging的一个扩展变体
56+
57+
* 以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择
58+
59+
* 传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。
60+
61+
> k=d,则基决策树的构建与传统决策树相同
62+
>
63+
> k=1,则随机选择一个属性用于划分
64+
>
65+
> $k=\log_2d$,最佳
66+
67+
68+
69+
步骤:
70+
71+
1. 随机抽样,训练决策树
72+
2. 随机选取属性,做结点分裂属性
73+
3. 重复步骤2,直到不能再分裂
74+
4. 建立大量决策树形成森林
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
# Boosting
2+
3+
原理:“三个臭皮匠顶个诸葛亮”
4+
5+
6+
7+
理论前置:
8+
9+
1. PAC学习框架中
10+
11+
> 强可学习:一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高。
12+
>
13+
> 弱可学习:一个概念(一个类),如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随即猜测略好。
14+
15+
2. Schapire证明
16+
17+
> 强可学习 与 弱可学习 是等价的。(在PAC框架下,一个概念是强可学习的充要条件是这个概念是弱可学习的。
18+
19+
20+
21+
问题:
22+
23+
已经发现了“弱学习算法”,那么能否将它提升(boost)为“强学习算法”?
24+
25+
26+
27+
提升方法:
28+
29+
​ 从弱学习算法出发,反复学习,得到一系列弱分类器(又称为 基本分类器),然后组合这些弱分类器,构成一个强分类器。
30+
31+
32+
33+
对提升方法的两个问题:
34+
35+
1. 每一轮如何改变训练数据的权值或概率分布
36+
2. 如何将弱分类器组合成一个强分类器
37+
38+
39+
40+
## AdaBoost
41+
42+
对问题的解答:
43+
44+
1. 提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
45+
46+
2. 弱分类器的组合(加权多数表决)
47+
48+
> 加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用
49+
>
50+
> 减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用
51+
52+
53+
54+
算法:
55+
56+
1. 初始化训练数据的权值分布(保证第1步能够在原始数据上学习基本分类器$G_1(x)$)
57+
$$
58+
D_1 = (w_{11},\dotsb,w_{1i},\dotsb,w_{1N}), \space\space w_{1i}=\frac{1}{N}, \space \space i=1,2, \dotsb,N
59+
$$
60+
61+
2. 对$m=1,2,\dotsb,M$
62+
63+
* 使用具有权值分布$D_m$的训练数据集学习,得到基本分类器
64+
$$
65+
G_m(x): \chi \to \{-1,+1\}
66+
$$
67+
68+
* 计算$G_m(x)$在训练数据集上的分类误差率($w_{mi}$表示第$m$轮中第$i$个实例的权值)
69+
$$
70+
e_m = P(G_m(x_i) \ne y_i) = \sum_{i=1}^N w_{mi} I(G_m(x_i) \ne y_i) \\
71+
\sum_{i=1}^N w_{mi} =1
72+
$$
73+
74+
* 计算$G_m(x)$的系数
75+
$$
76+
\alpha_m = \frac{1}{2} \log{\frac{1-e_m}{e_m}}
77+
$$
78+
79+
* 更新训练数据集的权值分布
80+
$$
81+
D_{m+1}=(w_{m+1,1}, \dotsb, w_{m+1,i}, \dotsb, w_{m+1,N}) \\
82+
w_{m+1,i}=\frac{w_{mi}}{Z_m} \exp{(-\alpha_m y_i G_m(x_i))}, \space \space i=1,2,\dotsb,N \\
83+
Z_m = \sum_{i=1}^N {w_{mi} \exp{(-\alpha_m y_i G_m(x_i))}}
84+
$$
85+
使$D_{m+1}$成为一个概率分布
86+
87+
3. 构建基本分类器的线性组合
88+
$$
89+
f(x)=\sum_{m=1}^M \alpha_m G_m(x)
90+
$$
91+
得到最终分类器
92+
$$
93+
G(x)=sign(f(x))=sign(\sum_{m=1}^M \alpha_m G_m(x))
94+
$$
95+
96+
97+
98+
PS:
99+
100+
1. 基本分类器$G_m(x)$在加权训练数据集上的分类误差率:
101+
$$
102+
e_m = P(G_m(x_i) \ne y_i) = \sum_{G_m(x_i) \ne y_i} w_{mi}
103+
$$
104+
105+
2. $\alpha_m$表示$G_m(x)$在最终分类器中的重要性
106+
107+
> 当$e_m \le \frac{1}{2}时, \alpha_m \ge 0$,并且$\alpha_m$随着$e_m$的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
108+
109+
3. 更新训练数据的权值分布为下一轮作准备
110+
$$
111+
w_{m+1,i}= \begin{cases}
112+
\frac{w_{mi}}{Z_m} e^{-\alpha_m}, & G_m(x_i)=y_i \\
113+
\frac{w_{mi}}{Z_m} e^{\alpha_m}, & G_m(x_i) \ne y_i
114+
\end{cases}
115+
$$
116+
被基本分类器$G_m(x)$误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。
117+
118+
4. 系数$\alpha_m$表示了基本分类器$G_m(x)$的重要性,所有$\alpha_m$之和并不为1。
119+
120+
5. $f(x)$的符号决定实例$x$的类,$f(x)$的绝对值表示分类的确信度。
121+
122+
123+
124+
## 前向分布算法
125+
126+
输入:训练数据集$T=\{(x_1,y_1),(x_2,y_2), \dotsb, (x_N,y_N) \}, \space x_i \in \chi \sube R^n,, \space y_i \in Y=\{ -1,+1 \}$;损失函数$L(y,f(x))$;基函数集$\{b(x;\gamma\}$;
127+
128+
输出:加法模型$f(x)$
129+
130+
步骤:
131+
132+
1. 初始化$f_0(x)=0$
133+
134+
2. 对$m=1,2,\dotsb,M$
135+
136+
* 极小化损失函数
137+
$$
138+
(\beta_m,\gamma_m) = \arg \min_{\beta,\gamma} \sum_{i=1}^N {L(y_i,f_{m-1}(x_i)+\beta b(x_i;\gamma))}
139+
$$
140+
得到参数$\beta_m,\gamma_m$
141+
142+
* 更新
143+
$$
144+
f_m(x)=f_{m-1}(x)+\beta_m b(x;\gamma_m)
145+
$$
146+
147+
* 得到加法模型
148+
$$
149+
f(x)=f_M(x)=\sum_{m=1}^M \beta_m b(x;\gamma_m)
150+
$$
151+
152+
153+
154+
## 提升树(GBDT Gradient Boosting Decision Tree)
155+
156+
提升树模型可以表示为决策树的加法模型:
157+
$$
158+
f_M(x)=\sum_{m=1}^M T(x;\varTheta_m)
159+
$$
160+
其中,$T(x;\varTheta_m)$表示决策树;$\varTheta_m$为决策树的参数;$M$为树的个数
161+
162+
163+
164+
回归问题的提升树算法:
165+
166+
输入:训练数据集$T=\{ (x_1,y_1),(x_2,y_2), \dotsb , (x_N,y_N) \} , \space x_i \in \chi \sube R^n, \space y_i \in Y \sube R$
167+
168+
输出:提升树$f_M(x)$
169+
170+
算法步骤:
171+
172+
1. 初始化$f_0(x)=0$
173+
174+
2. 对$m=1,2,\dotsb,M$
175+
176+
* 计算残差
177+
$$
178+
r_{mi}=y_i - f_{m-1}(x_i), \space i=1,2,\dotsb,N
179+
$$
180+
181+
* 拟合残差$r_{mi}$学习一个回归树,得到$T(x;\varTheta_m)$
182+
183+
* 更新$f_m(x)=f_{m-1}(x)+T(x;\varTheta_m)$
184+
185+
3. 得到回归问题提升树
186+
$$
187+
f_M(x)=\sum_{m=1}^M T(x;\varTheta_m)
188+
$$
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# 集成学习
2+
3+
集成学习:构建并结合多个学习器来完成学习任务(多分类器系统)
4+
5+
结构:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来
6+
7+
8+
9+
同质(homogeneous)
10+
11+
> “决策树集成”中全是决策树,“神经网络集成”中全是神经网络
12+
>
13+
> 基学习器(base learner) ---> 基学习算法(base learning algorithm)
14+
15+
16+
17+
异质(heterogenous)
18+
19+
> 个体学习器由不同学习算法组成:组件学习器(component learner)
20+
21+
22+
23+
研究核心:如何产生并结合“好而不同”的个体学习器
24+
25+
26+
27+
分类:
28+
29+
1. 个体学习器间存在强依赖关系、必须串行生成的序列化方法
30+
31+
> Boosting
32+
33+
2. 个体学习器间不存在强依赖关系、可同时生成的并行化方法
34+
35+
> Bagging和“随机森林”(Random Forest)
36+
37+
38+
39+
## 1 Boosting
40+
41+
将弱学习器提升为强学习器的算法
42+
43+
44+
45+
代表算法:AdaBoost算法
46+
47+
48+
49+
## 2 Bagging
50+
51+
自助采样法(bootstrap sampling)
52+
53+
过程:给定m个样本的数据集,随机取一个再放回,重复m次,形成采样集;总共T个采样集,再基于采样集训练基学习器,再将这些基学习器结合。
54+
55+
56+
57+
样本扰动
58+
59+
## 3 随机森林(RF)
60+
61+
在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
62+
63+
64+
65+
样本扰动+属性扰动
66+
67+
## 4 结合策略
68+
69+
1. 平均法averaging(回归问题)
70+
71+
> 简单平均法(Simple averaging)
72+
>
73+
> 加权平均法(weighted averaging)
74+
75+
2. 投票法 voting(分类问题)
76+
77+
> 绝对多数投票法(majority voting):必须占一半以上
78+
>
79+
> 相对多数投票法(plurality voting):最多票数即可
80+
>
81+
> 加权投票法(weighted voting)
82+
83+
3. 学习法
84+
85+
> Stacking

0 commit comments

Comments
 (0)