决策数及随机森林
本来以为决策树很简单,所以初次写这篇帖子的时候也没仔细深究,后来学到xgboost的时候有些环节怎么想不明白,后来才知道 原来核心原因还是CART的原理没有搞清楚,于是回来老老实实重写这片帖子,尤其是CART部分!
帖子目录:
1、CART原理
2、信息熵及其他决策树简介
2、随机森林
一、CART原理
CART全称为Classification and Regression Trees,即分类和回归树,既能处理回归问题也能处理分类问题,CART应该是应用最广泛的决策树了,其他高级算法(例如随机森林,Adaboost和xgboost等)的基分类器也是用的CART,所以务必要仔细弄清楚CART的原理,
本节数据集:
1、基尼指数
对于给定的样本D,其基尼指数为 :
image.png
职业_1_1={“学生”},包含3个样本,1个是,2个否
职业_1_2={“老师”,“上班族”},包含4个样本,3个是,1个否
最终:
计算特征职业其他两种情况的基尼指数,选择最小的
对于年龄这个特征,因为年龄属于连续型变量按照数值的大小顺序排为12,18,21,26,29,36,47,可被分为6中情况,
对于第一种情况是{12},{18,21,26,29,36,47}
年龄_1_1={12},包含1个样本,0个是,1个否
年龄_1_2={18,21,26,29,36,47},包含6个样本,包含4个是,2个否
最终:
计算年龄其他5种情况的基尼指数,选择最小的
所有的基尼指数计算出来之后,选择最小那个作为当前节点的分割依据,例如,如果最终职业的第一种情况的基尼指数最小,那么此时的决策树为
注:
a)其中0代表未婚,1代表已婚
b)当前叶子节点各样本类别值的众数即为预测值
c)xgboost会在此处计算gain和权值,可详见下篇帖子
3、回归树
当CART作为回归树的时候,使用样本的最小方差作为分裂节点的依据,追小方差公式为:
举例:根据看电视时间,是否已婚和职业队年龄进行预测
对于职业这个特征,有三种划分情况{“学生”},{“老师”,“上班族”}以及{“老师”,“学生”}、{“上班族”},最后一种为{“学生”,“上班族”}、{“老师”}
对于
1)对于第一种情况R_{1}={“学生”},R_{2}={“老师”,“上班族”}
image.png
职业_1_1={“学生”},包含3个样本,年龄均值为:
最小平方误差计算得:
计算领完两种情况m2=742.6,m3=238.8,m3的值最小,因此此时的决策树为:
注:
a)当前叶子节点各样本y真实值的均值即为预测值
4、sklearn代码
max_depth树的最大深度,min_samples_split 样本数>10,继续分支
image.png
二、信息熵及其他决策树简介
数据集
image.png
0、信息熵
信息熵是最基础的东西
举例:
1)对于西瓜数据集根节点(好瓜) |y|=2,p(好瓜=是)=8/19,p(好瓜=否)=7/19
2)对于变量色泽|y|=3(青绿,乌黑,浅白)
1、信息增益
a是数据集的自变量,V是某一个自变量可分成几个样本集(例如自变量色泽可按照青绿,乌黑和浅白三个属性将变量分为三个样本集,则V=3)
选择信息增益最大的变量作为划分属性,对每个分支节点进行类似的操作,最终得到如下决策树:
决策树.png
2、信息增益率
信息增益准则对可取数值较多的属性有所偏好,为减少这种偏好可能带来的不利影响,选择用增益率作未选取划分属性的标准
信息增益率计算公式: