【决策树_原理理解(一)】

1、概念

决策树是一种常见的机器学习方法,可以解决分类问题(二分类、多分类)、回归问题

一般的,一棵树包含一个根节点,若干个内部节点、叶子节点,每一个叶子节点代表决策的结果,从根节点到每个叶子节点的路径对应了一条判定的策略。

树的生成过程就是决策过程,这个过程是递归的,出现以下三种情况后递归会结束:

1)当前节点的样本属于同一个类别

2)当前节点样本集为空

3)当前节点属性集为空或所有样本在属性上取值相同

2、划分选择

了解了决策树的概念之后,我们希望决策树在每个节点的样本尽可能的属于同一类,即纯度越高,那么有人会问,我们要选哪个属性怎么划分才最合适呢?

这里主要有三种方法:

1)信息增益(ID3算法)

2)信息增益率(C4.5算法)

3)gini系数(CATR树算法)

3、信息增益

1)信息量

首先介绍一个概念,信息量:是对信息的度量。

信息量与随机事件的概率负相关,比较确定发生的事包含的信息量就较少,比如太阳从东边升起这是肯定的事,那么它所产生的信息量就比较少,又或者你告诉别人一件他已经知道的事,那么这件事包含的信息量就比较小了。

接下来我们看一下信息量与概率的具体关系是怎样的。
在这里插入图片描述

2)信息熵

信息量是具体发生的事件带来的信息,而信息熵则是在事件发生之前对可能产生的信息量的期望,即考虑随机事件所有出现情况的发生概率。
在这里插入图片描述

可能有的人还不是很理解为什么信息熵越小,纯度越高,下面我们就给出一个例子理解一下。

我们假设有1000个样本,这些样本有2种类别,现对两类别给出不同的划分,对比一下信息熵


# 制造一组样本数据
import numpy as np
D = 1000 # 假设有1000个样本
Dpair = [(100,900),(150,850),(200,800),(250,750),(300,700),(350,650),(400,600),(450,550),(500,500)] # 样本类别为2
ent = [];X = [];Y = []
for a in Dpair:
    print(a)
    x,y = a
    X.append(x)
    Y.append(y)
    px = x/D
    py = y/D
    enti = -(px*np.log2(px)+py*np.log2(py))
    ent.append(round(enti,3))  

# 绘图    
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['legend.fontsize'] = 10 
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(X,Y,ent,label='parametric curve',marker = "o")
# 添加轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('ent')
# 添加标签值
for i in range(len(Dpair)):
    ax.text(X[i],Y[i],ent[i],(X[i],Y[i],ent[i]),fontsize=6)

在这里插入图片描述
由上图可以看出,如果两个类别的样本量为100、900时,纯度最高,信息熵是最小的0.469,而当两个样本量为500、500时,两个类别很难区分,此时信息熵最大为1。

因此信息熵越小,纯度越高。

3)信息增益

信息熵:随机变量的不确定性

条件熵:一定条件下,随机变量的不确定性

信息增益=信息熵-条件熵,一定条件下,随机变量的不确定性减少程度

我们当然希望不确定性减少程度越大越好,也就是不确定性强的事件变得更确定(纯度更高),即信息增益越大越好。
在这里插入图片描述

信息增益越大,意味着使用属性a来进行划分所获得的纯度提升越大,因此我们可以使用信息增益来进行决策树的划分属性选择。

详细内容请看我公众号~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值