阅读李航《统计学习方法》第五章 决策树笔记
- 决策树是一种基础的分类回归算法(可用于回归哦),不过书中主要讨论了用于分类的决策树。主要提到三类常用的决策树ID3,C4.5,CART
- 决策树为了防止过拟合的问题,使用了剪枝(本质上就是设置了一个参数epsilon:对ID3和C4.5,计算信息增益/信息增益比,如果大于epsilon则作为最优结点,继续发展;对CART而言,计算数据集D labels的gini与特征下gini差值是否小于epsilon,小于则不作为最优结点继续发展了)
- ID3使用信息增益作为特征选择,每次取信息增益最大的特征作为父结点
- C4.5使用信息增益比作为特征选择的指标,是ID3的升级版本,除衡量指标不同外,其他构建流程一致
- CART与ID3、C4.5不同,最优特征的选择不是取衡量指数的最大值,而是取Gini指数最小的特征作为最优特征
- 衡量指标:ID3使用信息增益,C4.5使用信息增益比,CART使用gini指数
- 树杈数量方面:CART是二叉树,其他不是
- CART是二叉树,左分支取值“是”,右分支取值“否”
- 几个概念:熵、条件熵、如果是由数据估计得到的熵和条件熵叫做经验熵,经验条件熵,信息增益,信息增益比,gini指数
ID3逻辑
核心模块:最优特征选择,结果判断
输入数据集,计算每个特征的信息增益(熵-条件熵),比较信息增益最大值与epsilon,
- 如果大于则取信息增益最大的特征作为父节点,做分叉。分叉处理后形成多个数据子集,继续做循环判断,直到循环结束。
- 如果小于,则为单结点树,判断结构为此时子集的结果众数
并不是所有特征都会用到的,决策树起到特征筛选的作用
C4.5
上面流程的信息增益换成信息增益比即可,代码改个函数就好了,其他逻辑不变
CART
数据集输入
因为CART是二叉树,首先把特征组装成新特征,例如年龄(青年,中年,老年),组装完以后一个年龄特征变成三个:(年龄,青年)、(年龄,中年)、(年龄,老年)。如果特征里只有两个值,组装完后还是一个特征,与onehot不同。
计算新特征的gini指数(根据左子树分布与右子树分布计算),比较数据集labels的gini与最小gini的差值,如果小于epsilon,则不做分叉,决策为子集众数。如果大于epsilon,取最小gini特征为父结点,做分叉。分叉处理后形成多个子集,继续做循环,直至整个数据集循环结束。