您的位置:首页 > 其它

机器学习 基本算法 (5 (adaboost、 Gradient boost

2017-04-01 17:12 417 查看

adaboost

boosting: 增强的 adaboost 适应的增强

适应的增强 就是给你好多个弱的方案,让你经过不断地适应增强 得到一个新的好方案。

就是让孩童来讨论一个问题,比如什么是太阳 一人只能说一条

那就有很多说法 太阳是圆的,发光的 等等

但每个人说法都是片面的 弱的

adaboost的所求目标



这里 我们要得个每个 弱方案的权重 和弱方案

对第一个方案,给每一个样本都赋予一个权重 w,这些权重变成了D向量

用任意的弱方法 做分类。

因为是弱方法,肯定会有很多错误。错误率 e e=没做对的做对的

好了 这个弱方案的权重就订下来了 做对越多 权重越高

(但弱方案 权重高也高不到哪去,这是为了防止 被独占了发言权)

权重随你定 这边用 12ln1−ee

做错的 Dt+1i=DtieaSum(D)

好了 新的方案也找出来了 开始进行下一轮讨论

直到完成目标

Gradient boost

在分类问题中adaboost可以很有作用 但是如果是回归的问题 就不能用adaboost这样来做

Gradient boost 梯度优化 既然不能直接优化 ,我改用梯度不就行了,梯度下降来拟合数据

adaboost 每轮直接定权重 Gradient boost 计算残差(实值和计算值的差) 梯度逼近残差

转化成数学计算 就是算下面这个



找一个最优的属性划分,使得两侧的真实值与各自平均值的差的平方和最小。然后求每个值的余数,进行下一次划分。

然后再确定权重



值得注意的是 求出g权重后 最后还要对η最优化 ,不过η只需要求导即可。

Gradient boost就是每次都是整体取 最优 而adaboost是把当前次的做到最好

代码

#Import Library
from sklearn.ensemble import GradientBoostingClassifier
# X  Y for training data set and x_test_dataset
# Create Gradient Boosting Classifier object
model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)

model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: