当前位置: 首页>编程语言>正文

决策树回归matlab 决策树回归原理

1、概念

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

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

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

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

2)当前节点样本集为空

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

2、划分选择

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

这里主要有三种方法:

1)信息增益(ID3算法)

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

3)gini系数(CATR树算法)

3、信息增益

1)信息量

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

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

接下来我们看一下信息量与概率的具体关系是怎样的。

决策树回归matlab 决策树回归原理,决策树回归matlab 决策树回归原理_决策树回归matlab,第1张

2)信息熵

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

决策树回归matlab 决策树回归原理,决策树回归matlab 决策树回归原理_决策树回归matlab_02,第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)

决策树回归matlab 决策树回归原理,决策树回归matlab 决策树回归原理_决策树回归matlab_03,第3张

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

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

3)信息增益

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

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

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

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

决策树回归matlab 决策树回归原理,决策树回归matlab 决策树回归原理_信息熵_04,第4张

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


https://www.xamrdz.com/lan/5z41935537.html

相关文章: