开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第十四天,点击查看活动详情
总结:此文为12月更文计划第十四天第二十四篇。
1.认识决策树
决策树思想的来源非常朴素,程序设计中的条件分支结构就是 if-then 结构
最早的决策树就是利用这类结构分割数据的一种分类方法
决策树是一种十分常用的分类方法,是监管学习(Supervised Learning),监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。
图 1 决策树举例
信息的度量和作用:
假设有 32 支球队,每猜一次给一块钱,告诉我是否猜对了,那么我需要掏多少钱才能知道谁是冠军?
我可以把球编上号,从 1 到 32,然后提问:冠军在 1-16 号吗?依次询问
只需要五次,就可以知道结果
香农公式:
香农指出准确的信息量为:
H = -(p1logp1 + p2logp2 + ... + p32logp32)
p1,p2,...p32均为概率
H 的专业术语称之为信息熵,单位为比特。
熵。熵表征的是一个东西的混乱程度、不确定性,该物体越混乱、越不确定,它的熵越大,越整齐、越确定,熵越小
熵的表达式:
五支球队:
如果变为两支球队,每支球队的获胜的概率为50%,那么所需要的信息量为1bit
如何确定特征放置的节点位置?
1. 决策树的划分依据之一信息增益****
特征 A 对训练数据集 D 的信息增益 g(D,A),定义为集合 D 的信息熵 H(D)与特征 A 给定条件下 D 的信息条件熵 H(D|A)之差,即公式为
H(D)是初始信息熵大小,H(D|A)是因为条件加入后带来的确定性增加
H(D) 是整体熵,H(D|A) 条件熵
注:信息增益表示得知特征 X 的信息而使得类 Y 的信息的不确定性减少的程度
降低不确定性,提高确定性
H(D|A) 条件熵 越小越好
加入某个条件之后带来的信息增益g(D,A)越大越好
哪一个特征的信息增益越大就将其放到决策树的顶部。可以提高预测的准确率
数学公式的计算在这里就不多做叙述,写代码的过程中只需要调用接口
以上的方法为决策树最早使用的方法ID3,这种方法偏向特征值数目多的特征
还有其他方法C4.5,CART等,目前最常用的是基尼系数(Gini)
决策树的优缺点以及改进
优点:
简单的理解和解释,树木可视化。
需要很少的数据准备,其他技术通常需要数据归一化,标准化
缺点:
1.树太过于复杂
在训练集上训练的树太复杂,在测试集上表现得不好(过拟合)
2.决策树生成不太稳定。数据稍微的变化也可能会产生不同的树
改进:
1.剪枝
2.*随机森林—解决过拟合,用多棵决策树。(这里不再叙述)
预剪枝:
减少树的高度,开始的时候指定树的深度
对应参数为:max_depth
修改拆分内部节点所需要的最小样本数
对应参数为:min_samples_split
熵达到某一个值就停止分割叶子节点
对应参数为:min_impurity_decrease