随机森林,GBDT,Adaboost原理及python实现

随机森林 python实现

GBDT python实现

Adaboost python实现

  • 装袋(bagging)又称自助聚集(boot strap aggregating),
    是一种根据均匀分布概率从数据集最中有放回的重复抽样的技术。每个自助样本集都和原始数据集一样大,自助样本D_{i}大约包含63%的原训练数据。
  • 决策树桩(decision stump)
    仅基于单个特征来做决策,仅包含一层的二叉决策树

#1、随机森林
##1.1、随机森林的过程:

  1. 从N个训练样本中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的样本作预测,评估其误差;
  2. 对于每一个节点,随机选择m个特征,根据这m个特征,计算其最佳的分裂方式。
  3. 每棵树都会完整成长而不会剪枝(Pruning,这有可能在建完一棵正常树状分类器后会被采用)。
  4. 对于新数据,经过每棵树决策,最后投票确认分到哪一类。

用N来表示训练用例(样本)的个数,M表示特征数目。
输 入 特 征 数 目 m , m 的 可 选 l o g M , M / 3 , s q r t ( M ) , M , 一 般 情 况 m &lt; &lt; M 输入特征数目m,m的可选logM,M/3,sqrt(M),M,一般情况m&lt;&lt;M mmlogMM/3sqrt(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

  • (a) 、 使 用 权 值 分 布 D m 的 训 练 数 据 集 学 习 , 得 到 基 分 类 器 使用权值分布D_{m}的训练数据集学习,得到基分类器 使Dm
    G m ( x ) : χ → { − 1 , + 1 } G_{m}(x):\chi \rightarrow \{-1,+1\} Gm(x):χ{1,+1}

训 练 数 据 集 可 以 根 据 权 值 分 布 D m 从 T 中 有 放 回 重 复 抽 样 训练数据集可以根据权值分布D_{m}从T中有放回重复抽样 DmT
基分类器可以用 ID3,C4.5,CART等算法得到。

  • (b)、 计 算 G m ( x ) 在 数 据 集 上 的 分 类 误 差 率 : 计算G_{m}(x)在数据集上的分类误差率: Gm(x)
    e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G x ( x i ) ≠ y i ) e_{m}=P\left (G_{m}(x_{i})\neq y_{i}\right )=\sum_{i=1}^{N}w_{mi}I(G_{x}(x_{i})\neq y_{i}) em=P(Gm(xi)̸=yi)=i=1NwmiI(Gx(xi)̸=yi)

分类误差率为分错样本的权值和。

  • ©、 计 算 G m ( x ) 的 系 数 a m 计算G_{m}(x)的系数a_{m} Gm(x)am
    a m = 1 2 l o g 1 − e m e m a_{m}=\frac{1}{2}log\frac{1-e_{m}}{e_{m}} am=21logem1em
![这里写图片描述](https://img-blog.csdn.net/20161117153234155)
- (d)、$更新训练数据集的权值分布D_{m+1}:$

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=1Nwmiexp(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=1MamGm(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=1MamGm(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=1MamGm(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)mxGm(x){1,1}amm

  • 损失函数为指数损失(exponential loss function)

(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[yf(x)](4.2)

假 设 经 过 m − 1 次 迭 代 , 得 到 f m − 1 ( x ) 假设经过m-1次迭代,得到f_{m-1}(x) m1fm1(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)=fm1(x)+amGm(x)(4.3)

  • 目 标 是 在 第 m 步 得 到 的 a m 和 G m ( x ) 使 目 标 函 数 在 训 练 数 据 集 上 最 小 , 4.3 带 入 4.2 得 : 目标是在第m步得到的a_{m}和G_{m}(x)使目标函数在训练数据集上最小,4.3带入4.2得: mamGm(x)使,4.34.2
    (4.4) ( a m , G m ( x ) ) = a r g   m i n a m , G m ∑ i = 1 N e x p [ − y i ( f m − 1 ( x i ) + a m G m ( x i ) ) ] (a_{m},G_{m}(x))=arg\ \underset{a_{m},G_{m}}{min}\sum_{i=1}^{N}exp \left [-y_{i} \left ( f_{m-1}(x_{i})+a_{m}G_{m}(x_{i}) \right ) \right ]\tag{4.4} (am,Gm(x))=arg am,Gmmini=1Nexp[yi(fm1(xi)+amGm(xi))](4.4)

N为训练数据集的记录数目

  • 式 子 4.4 能 化 简 成 如 下 格 式 : 式子4.4能化简成如下格式: 4.4
    (4.5) ( a m , G m ( x ) ) = a r g   m i n a , G ∑ i = 1 N w ˉ m i   e x p [ − y i a G ( x i ) ] (a_{m},G_{m}(x))=arg\ \underset{a,G}{min}\sum_{i=1}^{N}\bar{w}_{mi}\ exp \left [-y_{i}aG(x_{i}) \right ]\tag{4.5} (am,Gm(x))=arg a,Gmini=1Nwˉmi exp[yiaG(xi)](4.5)

1 、 在 等 式 右 边 a 和 G 是 变 量 , 寻 找 使 目 标 函 数 最 小 的 a 和 G 成 为 a m 和 G m 1、在等式右边a和G是变量,寻找使目标函数最小的a和G成为a_{m}和G_{m} 1aG使aGamGm
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}),随每一轮迭代而发生变化。 2mwˉmi=exp(yifm1(xi)),wˉmiaGfm1(xi)
3 、 x a + b = x a ⋅ x b 3、x^{a+b}=x^a\cdot x^b 3xa+b=xaxb

  • 使式子最小的G(x)由下式得到:
    (4.6) G m ∗ ( x ) = a r g   m i n G ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) G^{*}_{m}(x)=arg \ \underset{G}{min}\sum_{i=1}^{N}\bar{w}_{mi}I(y_{i}\neq G(x_{i}))\tag{4.6} Gm(x)=arg Gmini=1NwˉmiI(yi̸=G(xi))(4.6)

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(yifm1(xi))m

  • 损失函数表示为:
    (4.7) ∑ i = 1 N w ˉ m i e x p [ − y i a G ( x i ) ] \sum_{i=1}^{N}\bar{w}_{mi}exp[-y_{i}aG(x_{i})]\tag{4.7} i=1Nwˉmiexp[yiaG(xi)](4.7)

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

  • 4.7改写成如下形式:
    (4.8) = ∑ y i = G ( x i ) 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_{y_{i}\neq G(x_{i})}\bar{w}_{mi}\ e^{a}\tag{4.8} =yi=G(xi)wˉmi ea+yi̸=G(xi)wˉmi ea(4.8)

∑ 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 ea=wˉmieayi̸=G(xi)wˉmi ea

  • 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} =(eaea)i=1NwˉmiI(yi̸=G(xi))+eawˉ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ˉmi4.9

(4.10) = ( e a − e − a ) ⋅ A + e − a ⋅ B =(e^{a}-e^{-a})\cdot A + e^{-a}\cdot B\tag{4.10} =(eaea)A+eaB(4.10)

  • 对 a 求 导 并 令 导 数 为 0 , 求 的 a : 对a求导并令导数为0,求的a: a0a

(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=21lnBA1BA=21lnem1em(4.11)

  • 其 中 , e m 为 分 类 误 差 率 : 其中,e_{m}为分类误差率: em
    (4.12) e m = A B = ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) ∑ w ˉ m i = ∑ i = 1 N w m i I ( y i ≠ G ( x i ) ) e_{m}=\frac{A}{B}=\frac{\sum_{i=1}^{N}\bar{w}_{mi}I(y_{i}\neq G(x_{i}))}{\sum\bar{w}_{mi}}=\sum_{i=1}^{N}w_{mi}I(y_{i}\neq G(x_{i}))\tag{4.12} em=BA=wˉmii=1NwˉmiI(yi̸=G(xi))=i=1NwmiI(yi̸=G(xi))(4.12)
  • 更 新 模 型 f m ( x ) : 更新模型f_{m}(x): fm(x)
    (4.13) 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.13} fm(x)=fm1(x)+amGm(x)(4.13)
  • 更 新 权 值 w ˉ m + 1 , i : 更新权值\bar{w}_{m+1,i}: wˉm+1,i:
    (4.14) w ˉ m + 1 , i = w ˉ m , i e x p ( − y i a m G m ( x ) ) \bar{w}_{m+1,i}=\bar{w}_{m,i}exp(-y_{i}a_{m}G_{m}(x))\tag{4.14} wˉm+1,i=wˉm,iexp(yiamGm(x))(4.14)

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(yifm1(xi))

参考链接1
例子分析

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值