随机森林 python实现
GBDT python实现
Adaboost python实现
#1、随机森林
##1.1、随机森林的过程:
用N来表示训练用例(样本)的个数,M表示特征数目。
输 入 特 征 数 目 m , m 的 可 选 l o g M , M / 3 , s q r t ( M ) , M , 一 般 情 况 m < < M 输入特征数目m,m的可选logM,M/3,sqrt(M),M,一般情况m<<M 输入特征数目m,m的可选logM,M/3,sqrt(M),M,一般情况m<<M。
##1.2、随机森林的优点有:
#2、GBDT(Gradient Boosting Decision Tree)
偏差方差trade-off,
单棵数深度越浅模型拟合效果越差,方差越小,偏差越大;相反,深度越深模型拟合效果越好,方差越大,偏差越小
对于Bagging算法来说,由于我们会并行地训练很多不同的分类器的目的就是降低这个方差(variance) ,因为采用了相互独立的基分类器多了以后,h的值自然就会靠近.所以对于每个基分类器来说,目标就是如何降低这个偏差(bias),所以我们会采用深度很深甚至不剪枝的决策树。
对于Boosting来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以可以保证偏差(bias),所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。
参考: http://www.jianshu.com/p/005a4e6ac775
#3、AdaBoost
两个问题 : x多维情况如何处理 2 基分类器如何确定
训练数据集为:
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) T={(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})} T=(x1,y1),(x2,y2),...,(xn,yn)
(1)、初始化训练数据的权值分布:
D 1 = ( w 11 , . . . , w 1 i , . . . , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , . . . , i , . . . , N D_{1}=(w_{11},...,w_{1i},...,w_{1N}),\ w_{1i}=\frac{1}{N},\ i=1,2,...,i,...,N D1=(w11,...,w1i,...,w1N), w1i=N1, i=1,2,...,i,...,N
(2)、对 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M
训 练 数 据 集 可 以 根 据 权 值 分 布 D m 从 T 中 有 放 回 重 复 抽 样 训练数据集可以根据权值分布D_{m}从T中有放回重复抽样 训练数据集可以根据权值分布Dm从T中有放回重复抽样
基分类器可以用 ID3,C4.5,CART等算法得到。
分类误差率为分错样本的权值和。
w m + 1 , i = w m i Z m e x p ( − a m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{mi}}{Z_{m}}exp(-a_{m}y_{i}G_{m}(x_{i})) wm+1,i=Zmwmiexp(−amyiGm(xi))
D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , . . . , w m + 1 , i , . . . , w m + 1 , N ) D_{m+1}=(w_{m+1,1},w_{m+1,2},...,w_{m+1,i},...,w_{m+1,N}) Dm+1=(wm+1,1,wm+1,2,...,wm+1,i,...,wm+1,N)
被 分 错 的 及 没 有 被 选 中 的 样 本 在 下 一 轮 中 的 权 值 变 大 被分错的及没有被选中的样本在下一轮中的权值变大 被分错的及没有被选中的样本在下一轮中的权值变大。
其 中 规 范 化 因 子 Z m 根 据 下 式 得 出 : 其中规范化因子Z_{m}根据下式得出: 其中规范化因子Zm根据下式得出:
Z m = ∑ i = 1 N w m i e x p ( − a m y i G m ( x i ) ) Z_{m}=\sum_{i=1}^{N}w_{mi}exp(-a_{m}y_{i}G_{m}(x_{i})) Zm=i=1∑Nwmiexp(−amyiGm(xi))
(3)、构建基本分类器的线性组合:
f ( x ) = ∑ m = 1 M a m G m ( x ) f(x)=\sum_{m=1}^{M}a_{m}G_{m}(x) f(x)=m=1∑MamGm(x)
最终分类器为:
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M a m G m ( x ) ) G(x)=sign(f(x))=sign\left(\sum_{m=1}^{M}a_{m}G_{m}(x) \right) G(x)=sign(f(x))=sign(m=1∑MamGm(x))
#4、Adaboost的推导
(4.1) f ( x ) = ∑ m = 1 M a m G m ( x ) f(x)=\sum_{m=1}^{M}a_{m}G_{m}(x)\tag{4.1} f(x)=m=1∑MamGm(x)(4.1)
其 中 基 分 类 器 G m ( x ) 函 数 为 m 轮 返 回 x 的 预 测 值 , G m ( x ) ∈ { − 1 , 1 } , 系 数 a m 为 m 轮 的 权 重 系 数 。 其中基分类器G_{m}(x)函数为m轮返回x的预测值,G_{m}(x) \in \{-1,1\},系数a_{m}为m轮的权重系数。 其中基分类器Gm(x)函数为m轮返回x的预测值,Gm(x)∈{−1,1},系数am为m轮的权重系数。
(4.2) L ( y , f ( x ) ) = e x p [ − y ⋅ f ( x ) ] L(y,f(x))=exp[-y\cdot f(x)]\tag{4.2} L(y,f(x))=exp[−y⋅f(x)](4.2)
假 设 经 过 m − 1 次 迭 代 , 得 到 f m − 1 ( x ) 假设经过m-1次迭代,得到f_{m-1}(x) 假设经过m−1次迭代,得到fm−1(x)
(4.3) f m ( x ) = f m − 1 ( x ) + a m G m ( x ) f_{m}(x)=f_{m-1}(x)+a_{m}G_{m}(x)\tag{4.3} fm(x)=fm−1(x)+amGm(x)(4.3)
N为训练数据集的记录数目
1 、 在 等 式 右 边 a 和 G 是 变 量 , 寻 找 使 目 标 函 数 最 小 的 a 和 G 成 为 a m 和 G m 1、在等式右边a和G是变量,寻找使目标函数最小的a和G成为a_{m}和G_{m} 1、在等式右边a和G是变量,寻找使目标函数最小的a和G成为am和Gm
2 、 其 中 在 第 m 轮 中 w ˉ m i = e x p ( − y i f m − 1 ( x i ) ) , w ˉ m i 与 a 和 G 无 关 , 但 依 赖 f m − 1 ( x i ) , 随 每 一 轮 迭 代 而 发 生 变 化 。 2、其中在第m轮中\bar{w}_{mi}=exp(-y_{i}f_{m-1}(x_{i})),\bar{w}_{mi}与a和G无关,但依赖f_{m-1}(x_{i}),随每一轮迭代而发生变化。 2、其中在第m轮中wˉmi=exp(−yifm−1(xi)),wˉmi与a和G无关,但依赖fm−1(xi),随每一轮迭代而发生变化。
3 、 x a + b = x a ⋅ x b 3、x^{a+b}=x^a\cdot x^b 3、xa+b=xa⋅xb
1、$I(y_{i}\neq G(x_{i})当括号内为真时返回1,括号内为假时返回0 \ $
2、 w ˉ m i = e x p ( − y i f m − 1 ( x i ) ) , 即 在 第 m 轮 预 测 错 误 样 本 的 上 一 轮 权 值 之 和 , 即 预 测 误 差 \bar{w}_{mi}=exp(-y_{i}f_{m-1}(x_{i})),即在第m轮预测错误样本的上一轮权值之和,即预测误差 wˉmi=exp(−yifm−1(xi)),即在第m轮预测错误样本的上一轮权值之和,即预测误差
y i ∈ { − 1 , 1 } , G ( x i ) ∈ { − 1 , 1 } , y i = G ( x i ) 则 − y i a G ( x i ) = − a ; y i ≠ G ( x i ) 则 − y i a G ( x i ) = a y_{i} \in \{-1,1\}, G(x_{i})\in \{-1,1\},y_{i} =G(x_{i})则-y_{i}aG(x_{i})=-a;y_{i} \neq G(x_{i})则-y_{i}aG(x_{i})=a yi∈{−1,1},G(xi)∈{−1,1},yi=G(xi)则−yiaG(xi)=−a;yi̸=G(xi)则−yiaG(xi)=a
∑ y i = G ( x i ) w ˉ m i e − a = ∑ w ˉ m i e − a − ∑ y i ≠ G ( x i ) w ˉ m i e − a \sum_{y_{i}= G(x_{i})}\bar{w}_{mi}\ e^{-a}=\sum\bar{w}_{mi}e^{-a}-\sum_{y_{i}\neq G(x_{i})}\bar{w}_{mi}\ e^{-a} yi=G(xi)∑wˉmi e−a=∑wˉmie−a−yi̸=G(xi)∑wˉmi e−a
4.8改写成如下形式:
(4.9) = ( e a − e − a ) ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) + e − a ∑ w ˉ m i =(e^{a}-e^{-a})\sum_{i=1}^{N}\bar{w}_{mi}I(y_{i}\neq G(x_{i}))+e^{-a}\sum\bar{w}_{mi}\tag{4.9} =(ea−e−a)i=1∑NwˉmiI(yi̸=G(xi))+e−a∑wˉmi(4.9)
令 A = ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) , B = ∑ w ˉ m i , 4.9 可 以 写 成 如 下 形 式 : 令A=\sum_{i=1}^{N}\bar{w}_{mi}I(y_{i}\neq G(x_{i})),B=\sum\bar{w}_{mi},4.9可以写成如下形式: 令A=∑i=1NwˉmiI(yi̸=G(xi)),B=∑wˉmi,4.9可以写成如下形式:
(4.10) = ( e a − e − a ) ⋅ A + e − a ⋅ B =(e^{a}-e^{-a})\cdot A + e^{-a}\cdot B\tag{4.10} =(ea−e−a)⋅A+e−a⋅B(4.10)
(4.11) a = 1 2 l n 1 − A B A B = 1 2 l n 1 − e m e m a=\frac{1}{2}ln\frac{1-\frac{A}{B}}{\frac{A}{B}}=\frac{1}{2}ln\frac{1-e_{m}}{e_{m}}\tag{4.11} a=21lnBA1−BA=21lnem1−em(4.11)
w ˉ m i = e x p ( − y i f m − 1 ( x i ) ) \bar{w}_{mi}=exp(-y_{i}f_{m-1}(x_{i})) wˉmi=exp(−yifm−1(xi))
参考链接1
例子分析