温故而知新-1.决策树,剪枝,RF,adaboost,GBDT,XGBOOST
2018-03-03 18:20
579 查看
4年前开始学习机器学习,选择了最简单的决策树入门,在面试中却常常回答不好,还是太轻视它了。此次再此总结一下。
本文是关键点笔记,不涉及推导
决策树构建原理:1.选择划分属性值2.构建,并停止3.剪枝
1.划分 delta=I(present)-sum(Nvj/N*I(vj)) 如果信息保留最多,划分最好
选择基本公式:
gini=1-sum(pi的平方)
Entropy=-plogp
error = 1-max{pi|i=1...n}
ID3 多元分类树,使用E计算delta 划分
C4.5 多元分类树,使用E计算delta/I(present)划分
CART 二元分类回归树,离散label使用gini系数,连续label使用min sum((y-y')平方)划分
2.停止条件:层数 剩余特征数 不一样的样本个数 delta已经很小了
3.剪枝:
PEP 剪后误判个数变少
MEP 剪后误差变小
CCP 剪后代价变小
损失函数 c(T)=sum(NtHt(T))+a|T| =sum(Nt*sum(pi*logpi)) + a|T| =sum(Nt*sum(pi*logpi)+a)
表示各个节点的信息量*个数的和
c(t) <= c(T) 剪枝后误差小于等于剪前误差,剪枝
关键问题是确定a
假设每个叶子都可以剪,令C(t)=C(T)求出对应叶子的a,a=(h(t)-h(T))/(NT-1)
选择a最小的的节点剪 即找到目前子树最好剪枝结果Ti,一直找到树根
所有最优子树通过数据验证,取损失最小的Ti
随机森林
m=sqrt(特征个数)
bagging 有放回的抽样
adaboost 通过误差率更新各个树的权值
单个分类器权值更新
e=sum(w*i) a=1/2log(1-e)/e wi+1= wi/z*exp(-a*y*Gm(x)) z=sum(w*exp(-a*y*Gm(x))
整体分类:G(x)=sign(sum(a*Gm(x)))
boosting GBDT
损失函数为se,所以其负梯度方向是 y-y'(残差) 把其负梯度值作为下一颗树的输入
选择最小损失的切分点建立当前的树,直到负梯度足够小,所有树建立完毕
预测值是所有树预测值的和
XGBOOST
obj=sumt(l(y,yi-1 + fi))+zta*T+1/2*lmda*sumt(wj*wj)
泰勒2阶展开
obj=sumt(l(y,yi-1))+gi*fi+1/2*hi*fi*fi)+zta&T+1/2*lmda*sumt(wj*wj)
obj=sumj(Gi*wj+1/2(Hi+lamda)*wj*wj)+zta*T
wj=-2Gi/(Hi+lambda)
obj=-1/2*sumj(GI*Gi/(Hi+lamda))) +zta*T
所以分裂节点的gain=-objleft-objright+objall
选择最大gain,进行分裂
形成m颗树,使用m颗树的和作为结果
本文是关键点笔记,不涉及推导
决策树构建原理:1.选择划分属性值2.构建,并停止3.剪枝
1.划分 delta=I(present)-sum(Nvj/N*I(vj)) 如果信息保留最多,划分最好
选择基本公式:
gini=1-sum(pi的平方)
Entropy=-plogp
error = 1-max{pi|i=1...n}
ID3 多元分类树,使用E计算delta 划分
C4.5 多元分类树,使用E计算delta/I(present)划分
CART 二元分类回归树,离散label使用gini系数,连续label使用min sum((y-y')平方)划分
2.停止条件:层数 剩余特征数 不一样的样本个数 delta已经很小了
3.剪枝:
PEP 剪后误判个数变少
MEP 剪后误差变小
CCP 剪后代价变小
损失函数 c(T)=sum(NtHt(T))+a|T| =sum(Nt*sum(pi*logpi)) + a|T| =sum(Nt*sum(pi*logpi)+a)
表示各个节点的信息量*个数的和
c(t) <= c(T) 剪枝后误差小于等于剪前误差,剪枝
关键问题是确定a
假设每个叶子都可以剪,令C(t)=C(T)求出对应叶子的a,a=(h(t)-h(T))/(NT-1)
选择a最小的的节点剪 即找到目前子树最好剪枝结果Ti,一直找到树根
所有最优子树通过数据验证,取损失最小的Ti
随机森林
m=sqrt(特征个数)
bagging 有放回的抽样
adaboost 通过误差率更新各个树的权值
单个分类器权值更新
e=sum(w*i) a=1/2log(1-e)/e wi+1= wi/z*exp(-a*y*Gm(x)) z=sum(w*exp(-a*y*Gm(x))
整体分类:G(x)=sign(sum(a*Gm(x)))
boosting GBDT
损失函数为se,所以其负梯度方向是 y-y'(残差) 把其负梯度值作为下一颗树的输入
选择最小损失的切分点建立当前的树,直到负梯度足够小,所有树建立完毕
预测值是所有树预测值的和
XGBOOST
obj=sumt(l(y,yi-1 + fi))+zta*T+1/2*lmda*sumt(wj*wj)
泰勒2阶展开
obj=sumt(l(y,yi-1))+gi*fi+1/2*hi*fi*fi)+zta&T+1/2*lmda*sumt(wj*wj)
obj=sumj(Gi*wj+1/2(Hi+lamda)*wj*wj)+zta*T
wj=-2Gi/(Hi+lambda)
obj=-1/2*sumj(GI*Gi/(Hi+lamda))) +zta*T
所以分裂节点的gain=-objleft-objright+objall
选择最大gain,进行分裂
形成m颗树,使用m颗树的和作为结果
相关文章推荐
- 决策树-GBDT-RF-Xgboost
- 决策树类的机器学习算法——决策树、Bagging、随机森林、Boosting、AdaBoost、GBDT、XGBoost
- 机器学习-->集成学习-->Xgboost,GBDT,Adaboost总结
- 从决策树到GBDT再到XGBoost
- 从决策树到RF,以及boosting Adaboost到GBDT算感悟
- 从决策树到GBDT梯度提升决策树和XGBoost
- 决策树、CART、GBDT、Xgboost学习笔记
- 从决策树到GBDT & Xgboost(一)
- rf,gbdt,xgboost,lightgbm对比
- RF、GBDT、XGBoost、lightGBM原理与区别
- 关于树的几个ensemble模型的比较(GBDT、xgBoost、lightGBM、RF)
- RF、GBDT、XGBoost面试级整理
- python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)
- RF、GBDT、XGBoost整理
- RF GBDT XGBOOST的区别与联系
- 从决策树到RF,以及boosting Adaboost到GBDT算感悟
- Boosting、RF、GBDT、XGBoost
- RF, GBDT, XGBOOST 之 Random forest
- RF,GBDT,xgboost调参方法整理
- RF、gbdt、xgboost参数