目录
1.决策树
条件分支结构if-else大家一定十分熟悉了,决策树其实就是一个if-else的过程
(图片来源:deaplearning.ai - Andrew Ng)
如果现在要分类猫和狗,对于最初样本,脸型是否是圆的?是划分为一类,不是则划分为另一类,耳朵是否是竖的?是划分为一类,不是则划分为另一类,按照这个划分,成功分类出样本中的10只猫狗。
怎样选择节点划分特征呢?
1)分类树
目标是计算类别的决策树,上面分类猫狗的任务正是一个分类树
对于离散变量(比如脸是不是圆的):信息增益,信息增益率,基尼系数
香农对信息量的定义:
p代表事件发生的概率,概率越大,信息越少,也就是不确定性越大,那么信息越多。
信息熵:
信息量的数学期望,将logP(x)换成1-P(x)就是基尼系数
信息增益:
D的信息熵和A给定条件下D的信息熵之差,用来衡量不确定性减少程度
决策树中表现为当前节点划分之前的信息熵 - 当前节点划分后的信息熵
信息增益率:
信息增益与变量信息熵的比值,以消除类别数目多的变量在信息增益上的优势
基尼增益:
只是将信息熵中的logP(x)换成了1-P(x),和信息增益类似,计算速度更快
优先选择增益大的变量做划分
对于连续变量(数值):尝试不同的阈值
尝试不同的阈值计算增益,选择增益大的阈值做划分
2)回归树
目标是计算数值的决策树
与分类树使用的增益不同,回归树使用划分后数值的方差作为衡量标准,选择方差小的做划分
如何预测结果?
分类树将从满足输入的叶节点中选择最多的类别作为结果,回归树将从满足输入的叶节点中取平均值作为结果。
2.随机森林
随机森林属于集成学习,是由多棵决策树构成的森林,随机森林很好的避免了过拟合,而且其非线性的预测表现往往十分出色。
1)随机有放回抽样:
构建每棵决策树时,不再使用整体样本,而是从n个总样本中随机有放回的抽取n个样本(没错),这样用来构造每棵决策树的样本不尽相同。
2)随机候选特征:
构建决策树时,从所有特征中随机选择m个(mtry)作为候选特征,再进行节点的划分。
3)综合预测
对于分类问题:
由每棵决策树(分类树)的结果"投票",得票最多的分类作为预测的类别。
对于回归问题:
由每棵决策树(回归树)的结果平均
机器学习工程师去哪里露营?
-- 随机森林
3.Xgboost
人们常说Xgboost的效果特别好,Xgboost和随机森林类似(随机森林使用了子模型独立的bagging策略,Xgboost使用了子模型有关联的boosting策略),Xgboost在每次生成新的树时,针对性的训练之前预测不好的样本,构建每棵决策树时不断优化树的构建。
1)定义损失
定义一个损失衡量先前的预测误差
2)贪心优化
逐棵树进行学习,不断拟合之前树的偏差
因为有针对性的对之前拟合较差的样本做训练,Xgboost拟合速度往往更快
4.总结
决策树家族在不同的实现中有着各种各样的优化,如剪枝,停止分裂的时机,决策树还有各种各样的变体,如梯度提升树,这些树的机器学习算法有着各种各样的库实现,强大的同时很容易使用。