决策树(Decision Tree)
来源:互联网 发布:淘宝试用协议怎么同意 编辑:程序博客网 时间:2024/06/05 12:47
1.决策树模型:
决策树定义:分类决策树模型是一种描述对实例进行分类的树形结构;
组成部分:a.结点; 结点分为两种类型:内结点、叶结点;
内部结点表示一个特征或者属性;
叶结点表示一个类。
b.有向边
用决策树进行分类,首先从根节点开始(根节点为实例的某一特征),并对其进行测试,根据测试结果,将实例分配到其子结点(子节点对应着该特征的一个取值);
使用递归的方法对实例进行测试并分配,一直到叶节点结束。
2.决策树与If-then规则:
规则过程:将决策树的根节点到叶节点的每一条路径构建一条规则;
if()——>为条件:路径上内部结点的特征
then——>:叶结点的类
if-then规则集合的性质:互斥且完备;
3.决策树与条件概率分布 :
将条件概率分布定义在特征空间的划分上;特征空间划分为互不交的单元或者区域,并在每一个单元(区域)定义一个类的概率分布;
若X表示特征的随机变量,Y表示类的随机变量,则条件概率表示为P(Y|X);
4.决策树学习:(常用算法:ID3、C4.5、CART)
损失函数为:正则化的极大似然函数;
策略:以损失函数为目标函数的最小化;
为防止过拟合现象(在对未知的数据测试过程中),则对决策树进行剪支;
决策树的生成是考虑局部最优,决策树的剪枝则为全局最优;
5.特征选择:(准则:信息增益、信息增益比)
特征选择在于选取对训练数据具有分类能力的特征;
a.信息增益定义:特征A对训练数据集D的信息增益为 g(D,A), 集合D的经验熵为H(D),在给定特征A的条件下D的经验熵为H(D|A);
信息增益公式为:g(D,A)=H(D)-H(D|A)
下面讲解什么是熵:熵是表示随机变量不确定性的度量;
假设X是一个取有限个值的离散随机变量,其概率分布为:P(X=xi)=pi i=1,2,...n;
则随机变量X的熵定义为:
其中自然对数以2为底或者以e为底;
熵的性质:1.熵依赖于X的分布,但与X的取值无关
2.熵的值越大,表明随机变量的不确定性越大;
假设有随机变量(X,Y),其联合概率分布为:P(X=xi,Y=yj)=pij i=1,2,...n; j=1,2,.....m;
则条件熵H(Y|X)表示:在已知随机变量X的条件下,随机变量Y的不确定性;
在给定X的条件下,Y的条件概率分布的熵对X的数学期望:
信息增益准则的特征选择方法:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征;
决策树学习应用信息增益准则选择特征过程如下:给定训练数据集D,和特征A;经验熵H(D)表示对数据集进行分类的不确定性,而经验条件熵H(D|A)表示 在特征A给定的条件下,对数据集D进行分类的不确定性,则它们的差为信息增益;
信息增益算法:输入(训练数据集D,特征为A , |Ck|为属于类Ck的样本个数,|Di|为iDi的样本个数;
输出(特征A 对训练数据集D的信息增益g(D,A)
(1).计算数据集D的经验熵H(D):
def calc_ent(x): x_value_list = set([x[i]] for i in range(x.shape[0])) ent=0.0 for x_value in x_value_list: p=float(x[x==x_value].shape[0])/x.shape[0] logp = np.log2(p) ent-=p*logp return ent
经验熵其实就是信息量的大小问题,它和变量具体的取值没有任何关系,但是和值的类别多少以及发生概率有关;我们将数据集D看作为一个变量,Ck就是为它的类别,分别为C1,C2.....Ck;然而每一种类别取到的概率为|Ck|/|D|
(2).计算特征A对数据集D的经验条件熵H(D|A):
def calc_condition_ent(x,y): x_value_list = set([x[i]] for i in range(x.shape[0])) ent = 0.0 for x_value in x_value_list: sub_y = y[x==x_value] temp_ent = calc_ent(sub_y) ent += (float(sub_y.shape[0])/y.shape[0])*temp_ent return ent
(3).计算信息增益:
g(D,A)=H(D)-H(D|A)
def calc_ent_grap(x,y): base_ent = calc_ent(y) condition_ent = calc_condition_ent(x,y) ent_grap = base_ent-condition_ent return ent_grap
(4).信息增益比:
由于在分类问题困难时,即为在训练数据集的经验熵大的时候,信息增益值会偏大,反之,信息增益值偏小,
然而可以通过信息增益比来校正这一问题;
def calc_ent_rat(x,y): base_ent = calc_ent(y) ent_grap = calc_ent_grap(x,y) ent_rat = ent_grap/base_ent return ent_rat6.决策树的生成:
(1) ID3算法:(极大似然法进行概率模型)
算法的核心是:在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树;
实现过程:从根结点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或者没有特征可以选择为止,最后得到一个决策树;
(2)算法描述:
输入:训练数据集D,特征集A,阈值e;
输出:决策树T;
若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该结点的类标记,返回T;
若A为空集,则T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
否则,计算A中各特征对D的信息增益,选择信息增益最大的特征Ag;
如果Ag的信息增益小于阈值e,则置T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T;
否则,对Ag的每一可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di,中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对第 i 个子结点,以Di 为训练集,以A-{Ag}为特征集,递归调用步骤(1)~(5),得到子树Ti, 返回Ti;
7.C4.5算法(与ID3算法相似,在生成过程中,用信息增益比来选择特征)
输入:训练数据集D,特征集A,阈值e;
输出:决策树T;
若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该结点的类标记,返回T;
若A为空集,则T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
否则,计算A中各特征对D的信息增益比,选择信息增益最大的特征Ag;
如果Ag的信息增益比小于阈值e,则置T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T;
否则,对Ag的每一可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di,中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对第 i 个子结点,以Di 为训练集,以A-{Ag}为特征集,递归调用步骤(1)~(5),得到子树Ti, 返回Ti;
- 3.决策树Decision Tree
- 决策树(Decision Tree)
- 决策树(Decision Tree)
- 决策树(Decision Tree)
- 决策树decision tree分析
- 决策树(Decision Tree)
- 决策树Decision Tree
- 决策树Decision tree简析
- Decision Tree决策树
- 决策树(Decision tree)
- 决策树(Decision Tree)
- 决策树(Decision tree)
- 决策树(decision tree)
- 决策树Decision tree
- 决策树(Decision Tree)
- 决策树(Decision Tree)
- 决策树decision tree
- Decision Tree(决策树)
- linux部分命令
- Android 颜色设置:透明度换算
- spring上传和下载
- ZigBee(CC2530/CC2531)双串口配置(Z-Stack2.5版本以上)
- tomcat9.0免安装配置
- 决策树(Decision Tree)
- CGI environment variables
- 剑指Offer_面试题40_数组中只出现一次的数字
- javafx自定义窗体(高级篇)
- java设计模式之原型模式
- 第二章 进程管理 2.1 进程基本概念
- 学习曲线
- Vue 通讯组件
- 智能小车27:4个Protel小技巧