决策树(Decision Tree)

决策树(Decision Tree)

本文学习内容来自西瓜书和机器学习导论。

什么是决策树

1111

目的:产生一棵泛化能力强的决策树。泛化能力强指对非训练集的样本进行预测时仍能保持较高的准确性。

思想:分治(divide and conquer)

算法

22222

\((x_1,y_1)\)表示第一个样本,\(x_1\)为该样本在各个属性中值的集合\(\{x_{11},x_{12}...x_{1n}\}\),\(y_1\)指该样本的类别(好瓜or坏瓜)。

图中算法为递归算法,共有三处可返回递归

  1. line 2~3:当前节点下的所有样本均属于同一类别,将此节点记为叶节点,并标记出分类结果。
  2. line 5~7:当前节点下属性值为空(不再有可以用于划分的属性),或者所有样本在所有属性上取值相同,此时无法进行下一步划分,那么将此节点记为叶节点,分类结果为大多数样本的类别
  3. line 11~12:当前无样本,无法划分,将其记为叶节点,分类结果为其父节点中大多数样本的类别

第二点使用的是当前节点的后验分布。

后验分布:
\[ g(\theta|x)=c_xL(\theta,x)g(\theta) \]
其中\(\theta\)为我们要估计的参数,这里可以理解为用于判断样本类别的函数,\(x\)为已知的参数,可以理解为我们现在对这些样本的属性值和类别都已知。\(c_x\)为\(f(x)\)的倒数,这里可视为常数。\(L(\theta,x)\)为最大似然估计。\(g(\theta)\)为先验分布。

第三点把父节点的样本分布作为当前节点的先验分布。

以上是我对西瓜书上内容的理解,不太准确,希望大神不吝赐教。

然后我们来介绍决策树的第一个算法:ID3。

ID3(Iterative Dichotomiser 3)

如何选择最优划分属性

在非叶节点中,我们需要找到一个属性,通过样本在该属性上取值的不同,将其分类,最终得到我们的决策树。

那么如何来评判这个属性是否适合用来划分样本集呢?

信息熵(Information Entropy)

信息熵度量样本的纯度,信息熵越小代表样本越纯。

样本 性别
{1,2,3}
{4,5,6}
样本 性别
{1,2,3,4,5}
{6}

以上两个样本集均为6个人,第一个样本集男女各为3人,第二个样本集男生达到5人,女生只有1人。我们称第二个样本集的纯度较高。
\[ Ent(D) = -\sum_{k=1}^\gamma p_k \log_2p_k \]
其中,\(D\)表示所有用于计算样本。\(p_k\)表示样本属于第\(k\)个类别的概率。\(\gamma\)表示样本*有多少种不同的类别。

若所有样本均属于同一类别,此时我们记:\(0\log_20\equiv0\)。

仅仅了解信息熵是不够的,我们需要判断如果使用某个属性作为划分属性,那么是否会使分类后的样本纯度提高。

信息增益(Information Gain)

对于某个属性\(a\)以及样本集\(D\),我们可以计算信息增益:
\[ Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}·Ent(D^v) \]
其中\(|D|\)表示\(D\)中样本的数量,\(|D^v|\)表示样本集中在\(a\)属性上值为\(v\)的样本数量

信息增益越大,表示用此属性进行划分后的样本集纯度提高程度越大。所以我们要找到:
\[ a^*=\mathop{\arg\max}_aGain(D,a) \]
举个例子,对于西瓜书P76表4.1:

3333333

\(\gamma=2\),好瓜or坏瓜。
\[ Ent(D) = -\frac{8}{17}·\log_2\frac{8}{17}-\frac{9}{17}·\log_2\frac{9}{17} \]

我们选择属性“色泽 ”,可以看到:

\(V=3\),分别为“青绿”,“乌黑”,“浅白”。

\(|D_1|=6\),“青绿”,其中好瓜3个,坏瓜3个。
\[ Ent(D_1)=-\frac{3}{6}·\log_2\frac{3}{6}-\frac{3}{6}·\log_2\frac{3}{6} \]
\(|D_2|=6\),“乌黑”,其中好瓜4个,坏瓜2个。
\[ Ent(D_2)=-\frac{4}{6}·\log_2\frac{4}{6}-\frac{2}{6}·\log_2\frac{2}{6} \]
\(|D_3|=5\),“浅白”,其中好瓜1个,坏瓜4个。
\[ Ent(D_3)=-\frac{1}{5}·\log_2\frac{1}{5}-\frac{4}{5}·\log_2\frac{4}{5} \]
则:
\[ Gain(D=全集,a=“色泽”)=Ent(D)-\frac{6}{17}Ent(D_1)-\frac{6}{17}Ent(D_2)-\frac{5}{17}Ent(D_3) \]
然后我们在所有的属性中找到最优的属性,作为此节点的划分属性。然后对分类后的每一个样本子集递归计算最优划分属性。

如果?

序号 居住地 学业 性别
1 北京 初中
2 北京 高中
3 上海 初中
4 上海 高中
上一篇:PHP html_entity_decode() 函数


下一篇:CAD关于图层设置CAD实体对象,到指定层上操作(com接口网页版)