决策树
1.1决策树模型
决策树是一种典型的分类方法
比如说有一组数据,特征量是“是不是折耳”、“是不是圆脸”、“有没有胡须”,输入特征x是这三项,预测目标输出y为“是不是猫”,x采用分类(离散值)。
决策树模型:
椭圆形的节点都为决策节点,矩形框称为叶子节点。
两边子节点的划分属性不一致原因在于:原样本集经过Ear shape属性判断之后,样本划分为两个部分(Ear shape=Pointy;Ear shap=Floppy),这两个部分再根据熵或Gini系数计算最佳划分属性时,可能会得到不同的结果,即:可能是Face shape 也可能是 Whiskers。而由于经过第二层(Face shape/Whiskers)的划分后样本标签已经纯净(label列均为统一的cat或Not cat),此时该模型训练就结束了,不需要再进行下一个最优划分属性的计算了。
1.2 如何建立一个决策树
决策树是由顶端node不断分裂而形成的。
1.如何选择在每个节点中生成哪些特征?
优先使用information gain最大的特征来分裂,即先用最有效的特征。对于预测是否为猫的例子,优先使用折耳进行分裂。
2.何时停止分裂?
-
当一个node下只有一类时
-
当达到设定层数时
-
当分裂的不纯度的提升不大时
-
当node下数据量过少时
2.1 纯度
Entropy熵:衡量一组数据是否不纯的指标,公式如下:
熵函数通常表示为H,横轴为样本中猫的比例,纵轴为熵的值。数据构成越混乱,熵越大,构成越单一,熵越小。
2.2Information Gain
熵的减少称为信息增益
由分组带来的不确定性的减少叫做Information Gain,公式=
即为分裂之前的信息量减去分裂后的加权平均值。(w:左右分支所占的样本比例)
计算差值而不是分别计算左右分支的熵是为了确定什么时候不再分,防止树太深过拟合,如果差值很小就没有分的必要了。
0.28>0.12>0.03,所以根节点处选择耳朵形状特征。
2.4 One-Hot Encoding
如果一个分类特征可以取k个可能的值,我们通过创建k个二进制特征来实现,这些特征只能取值0或1,这种数据处理方法叫One-Hot Encoding。
2.5 连续型变量
取不同的阈值进行information gain计算,最后得到较高的信息增益,就可以决定在该特征上进行分割。图中会选择重量是否小于等于9来进行分割。
2.6 回归树
决策树不但可以用来分类(是否是猫),也可以用来回归(预测具体数字y)。只不过information gain的计算方法从计算entropy变成了计算variance(方差)。
所有样本的方差是20.51,信息增益为原始方差减加权方差。差值越大,说明你分的越好,与原来分配的更均匀。
3.1 Ensemble模型
因为树模型对数据的变化很敏感,结果不稳定(在分裂时一个数据变化就可能导致分裂是用的特征不一样),集成多个模型可以解决这个问题。
Ensemble模型就是把几个用相同数据训练出来的模型预测出来的结果进行投票,比如两个模型预测是猫,一个模型预测不是猫,最后结果就是猫。
实用的Ensemble模型有随机森林、XGBoost和LightGBM。
3.3 随机森林
随机森林通过下面两种方法创造不同模型,然后集成。
1.通过有放回的随机抽取数据
2.通过使用不同特征量。
3.4 XGBoost
XGBoost是改进版的Boosted Tree,Boosted Tree原理是先训练一个模型,然后把模型预测错的数据拿出来预测下一个模型,这样循环往复,让模型精度越来越高。
XGBoost特点:内置正则化,防止过拟合
结构化数据适合使用决策树,小型树可以可视化。
神经网络适用于结构化和非结构化所有数据,可以用迁移学习,能够轻易结合很多模型。