Skip to content

Ensemble Learning

Written by

Nauxniqnah

信息熵

信息的不确定性

H(X)=-\sum_{i=1}^{n}P(x_{i})logP(x_{i})

条件熵

在给定随机变量Y的条件下,随机变量X的不确定性

H(X|Y)=-\sum_{i=1}^{n}P(X={i}|Y=v)logP(X={i}|Y=v)

信息增益

在一个条件下,信息不确定性减少的程度,一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。

I(X,Y)=H(X)-H(X|Y)

根据天气情况预测是否打高尔夫球

OutlooktempHumidityWindPlay Golf
RainyHotHighFALSENo
RainyHotHighTRUENo
OvercastHotHighFALSEYes
SunnyMildHighFALSEYes
SunnyCoolNormalFALSEYes
SunnyCoolNormalTRUENo
OvercastCoolNormalTRUEYes
RainyMildHighFALSENo
RainyCoolNormalFALSEYes
SunnyMildNormalFALSEYes
RainyMildNormalTRUEYes
OvercastMildHighTRUEYes
OvercastHotNormalFALSEYes
SunnyMildHighTRUENo
Play GolfFrequencyProbabilityEntropy
No50.36-0.531
Yes90.64-0.410
Overall141-0.940

Outlook:

OutlookYesNoFrequencyProbabilityEntropy
Rainy2(0.40)3(0.60)50.36-0.971
Overcast4(1.00)0(0.00)40.29-0.000
Sunny3(0.60)2(0.40)50.36-0.971
Conditional\ entropy = 0.36*0.971+0.29*0+0.36*0.971=0.69
Information\ gain=0.940-0.69=0.25(最佳分类特征)

Temp:

TempYesNoFrequencyProbabilityEntropy
Hot2(0.50)2(0.50)40.29-1.000
Mild4(0.67)2(0.33)60.43-0.918
Cool3(0.75)1(0.25)40.29-0.811
Conditional\ entropy = 0.29*0.1+0.43*0.918+0.29*0.811=0.92
Information\ gain=0.940-0.92=0.02

Humidity:

Information\ gain=0.940-0.79=0.15

Wind:

Information\ gain=0.940-0.89=0.05

基尼指数

表示在样本集合中一个随机选中的样本被分错的概率,Gini指数越小表示集合中被选中的样本被参错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。当集合中所有样本为一个类时,基尼指数为0。

Gini(P)=\sum_{k=1}^{K}P_k(1-P_k)=1-\sum_{k=1}^KP_k^2,\ k表示选中样本属于第k个类别的概率

回归树

回归树的分类标准:标准方差

回归树使用某一特征将原集合分为多个子集,用标准方差衡量子集中的元素是否相近,越小表示越相近。

Boosting

Bagging

结合策略

  • 平均法
  • 投票法
  • 学习法

随机森林 Radom Forest

Radom Forest = Bagging + Decision Tree

AdaBoost

关注点放在被错误分类的样本上,减少上一轮被正确分类的样本权值,提高被错误分类的样本权值。AdaBoost采用加权投票的方法,分类误差小的分类器的权重大,而分类误差大的弱分类器的权重小。

  • 先通过对N个训练样本的学习得到第一个
  • 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;
  • 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
  • 最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。

BDT 提升树

GBDT

梯度提升+决策树,利用损失函数的负梯度拟合基学习器。

XGBoost和GDBT区别

  • GBDT 在函数空间中利用梯度下降法进行优化、XGBoost 在函数空间中用牛顿法进行优化。
  • GDBT没有正则项,XGBoost有正则项。
  • 对每颗子树增加一个参数,使得每颗子树的权重降低,防止过拟合,增加这个参数叫shrinkage方法。对特征进行降采样,灵感来源于随机森林,除了能降低计算量外,还能防止过拟合。
  • 增加处理缺失值的方案(通过枚举所有缺失值在当前节点是进入左子树,还是进入右子树更优来决定一个处理缺失值默认的方向)。
  • 对每个特征进行分块(block)并排序,使得在寻找最佳分裂点的时候能够并行化计算.这个结构加速了split finding的过程,只需要在建树前排序一次,后面节点分裂时直接根据索引得到梯度信息。这是xgboost比一般GBDT更快的一个重要原因。
  • out-of-core 通过将block压缩(block compressoin)并存储到硬盘上,并且通过将block分区到多个硬盘上(block Sharding)实现了更大的IO 读写速度,因此,因为加入了硬盘存储block读写的部分不仅仅使得xgboost处理大数据量的能力有所提升,并且通过提高IO的吞吐量使得xgboost相比一般实利用这种技术实现大数据计算的框架更快。

Previous article

Ajax data crawling

Next article

macOS:"无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件。"的解决办法

Join the discussion

Leave a Reply

Your email address will not be published. Required fields are marked *