决策树是一种树结构的机器学习模型。因为其决策过程就像一颗倒置的树,所以叫决策树。举个例子,我们假设去水果摊买水果,我们需要分辨水果的种类,这时可以通过如下的一个简单的决策过程:
通过几个特征规则,我们可以构建一颗决策树,来确定水果的种类。
从上图可以看出,树的叶节点就是最终的决策结果,根节点和非叶子节点用于根据某一特征来决策后面的分支路径。那么问题来了,我们怎么构造这样一棵决策树,哪个特征判据应该放在根节点,哪个特征判据应该放在叶子节点?
为合理量化决策树特征判据的选择标准,可以使用信息论中熵的有关知识对样本的纯度进行定量表示和分析。
信息熵(简称熵,entropy)是信息论中定量描述随机变量不确定度的一类度量指标,主要是用来衡量数据取值的无序程度,熵的值越大,则表明数据取值越杂乱无序。
设为一个可取有限个值{ }的离散型随机变量,其概率分布为:,
则随机变量熵定义为:
(1)
如果,则定义。显然,如果的值越大,则随机变量的不确定性就越大。
例如:投掷硬币时,朝上面的是随机变量,其中正面朝上的概率是p,反面朝上的概率为1-p,那么按照(1)式,信息熵是:
(2)
可以通过python绘制这个信息熵函数:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> def entropy(p):
if p in (0,1) :
return 0
h = -p*np.log2(p)-(1-p)*np.log2(1-p)
return h
>>> plot_x = np.linspace(0, 1, 100)
plot_y = np.empty(100)
for i in range(0, 100):
plot_y[i] = entropy(plot_x[i])
>>> plt.plot(plot_x, plot_y)
>