3_决策树算法梳理

信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)

• 定义:分类决策树模型是一种描述对实例进行分类的树形结构(可以是二叉树或非二叉树). 其中内部节点(非叶子节点)表示一个特征或属性,叶子节点表示一个类.【或者说,内部节点是每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别】
!决策过程! 使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果.
决策树可以看成一个if-then规则集合,其中内部结点的特征对应着规则的条件,而叶节点的类对应着规则的结论.

• 如何构建决策树?
当给定练数据,由上图可以看出每一次子结点的产生,是由于在当前层数选择了不同的特征来作为分裂因素造成的。每一层选择了指定的特征之后,我们就可以继续由该特征的不同属性值进行划分,依次一直到叶子结点。
!!特征是以什么标准来选择的呢?
所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。而判断“纯”的方法不同引出了我们的ID3算法,C4.5算法以及CART算法,这些下面会详细介绍!

• 如果属性用完了怎么办?
在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点.

信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)

1)信息熵:
在信息论中熵代表对随机变量不确定性的度量。对一组数据来说,熵越大,数据的不确定性越高,熵越小,数据的不确定性越低。

信息熵的公式如下:
在这里插入图片描述
Pi: 在这里Pi指的是,在一个系统中,可能会有k类信息,每类信息所占的比例(注意这里是比例,不是概率,因为这个训练集中类别信息是确定的),就叫做Pi;

负号的解释:因为Pi本身都是小于1的,那么log(Pi)就是小于1的,为了抵消负号的影响,因此需要在其前面加上负号。

我们拿一个特例来解释信息熵,假如有5个类别,若干个数值,数值的分类比例可以表示为:{1,0,0,0,0},这种情况下的信息熵就为:H=-1.log(1)=0,熵达到最小值,即其不确定性最低,确定性最高,因为它每个样本都属于第一类。

那么现在我们就可以知道,决策树中如何划分的基本方向,就是经过划分之后使得信息熵降低,即数据的确定性变高,划分出来的信息熵,是所有其他划分方法中得到的信息熵的最小值,得到的这个划分的维度及维度下的阈值,即构建了决策树。
2)联合熵
联合熵就是度量一个联合分布的随机系统的不确定度。
3)条件熵
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。
4)信息增益
表示特征X使得类Y的不确定性减少的程度。(分类后的专一性,希望分类后的结果是同类在一起)
5)基尼不存度
从一个数据集中随机选取子项,度量其被错误的划分到其他组里的概率。
结论:
• 基尼不纯度可以作为衡量系统混乱程度的标准;基尼不纯度越小,纯度越高,集合的有序程度越高,分类的效果越好;
• 基尼不纯度为0 时,表示集合类别一致;
• 在决策树中,比较基尼不纯度的大小可以选择更好的决策条件(子节点)。

决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景

算法有ID3,C4.5,CART

1.ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。

2.C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进。C4.5在生成过程中,用信息增益比来选择特征。

3.CART是在给定输入随机变量XX条件下输出随机变量YY的条件概率分布的学习方法。

• 应用场景
银行贷款申请、房产开发商房子的选址。

回归树原理

1.分类树:
在这里插入图片描述
分类树利用二分划分数据。将特征值等于切分点值的数据划分为左子树,将特征值不等于切分点值的数据划分为右子树。

2.回归树:
在这里插入图片描述
回归树也利用二分划分数据。与分类树不同的是,回归树将特征值大于切分点值的数据划分为左子树,将特征值小于等于切分点值的数据划分为右子树。

决策树防止过拟合手段

过拟合通常表现为决策树深度太深,子节点众多,决策树的损失函数:
在这里插入图片描述
|T|表示叶子节点数量,
Nt表示第t个叶子节点对应的样本数量,
Ht(T)表示第t个叶子节点的熵
a越大,惩罚越大,树越简单

剪枝
在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:
先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝

模型评估

决策树适用分类指标:P,R,F1,ROC曲线,使用交叉验证
回归树适合回归指标:MAE,MSE,RMSE,R平方,Adjusted R平方,MAPE,RMSPE

自助(boostrap) 方法中,训练记录采用有放回抽样,使得它等概率地被重新抽取。如果原始数据有N个记录,可以证明,平均来说,大小为N的自助样本大约包含原始数据中63.2%的记录。这是因为一个记录被自助抽样抽取的概率是1-(1-1/N)N,当N充分大时,该概率逐渐逼近1-e-1=0.632。没有抽中的记录就称为检验集的一部分,将训练集简历的模型应用到检验集上,得到自助样本准确率的一个估计εt。抽样过程重复b次,产生b个自助样本。  按照如何计算分类器的总准确率,有几种不同的自助抽样法。常用的方法之一是.632自助(.632 boostrap)

sklearn参数详解,Python绘制决策树

class sklearn.tree.DecisionTreeClassifier(criterion ='gini',splitter ='best',max_depth = None,min_samples_split = 2,min_samples_leaf = 1,min_weight_fraction_leaf = 0.0,max_features = None,random_state = None,max_leaf_nodes = None,min_impurity_decrease = 0.0,min_impurity_split = None,class_weight = None,presort = False )
 
criterion:特征选择标准,可选参数,默认是gini
splitter:best是根据算法选择最佳的切分特征。random找局部最优的划分点。
max_depth:树的最大深度。None表示划分到所有叶子结点都是纯的或小于最小样本量
min_samples_split :节点可以划分的最小样本量
min_samples_leaf:叶子节点所需的最小样本数。
min_weight_fraction_leaf :计算权重,默认大家权重一样
max_features :寻找最佳分割时考虑的特征数量
random_state:随机数种子
max_leaf_node: 最大的叶节点数量
min_impurity_decrease:节点划分最小不纯度,小于该值不再分裂
min_impurity_split:节点的不纯度高于该值,才进行分裂
class_weight:类别权重
presort :数据是否预排序,默认False,数据量小可以改成True

python绘制决策树

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()#加载数据
clf = tree.DecisionTreeClassifier()#初始化模型
clf = clf.fit(iris.data, iris.target)#训练模型
with open("iris.dot", 'w') as f: f = tree.export_graphviz(clf, out_file=f)#存储决策树
 
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("iris.pdf")
 
from IPython.display import Image
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=iris.feature_names, class_names=iris.target_names, filled=True,rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
clf.predict(iris.data[:1, :])