什么是决策树 —— 基本概念
基本的决策树学习过程,可以归纳为以下三个步骤:
问题:基于以下属性,决定是否在餐厅等待桌子:
$、$$、$$$
)决策树可以表示任何输入属性的函数,但使用单条路径来表示每个训练示例的决策树可能会过度拟合数据,无法很好地推广到新的未见过的数据示例。
决策树可以表达输入属性的任何函数。例如,对于布尔函数,函数真值表的每行对应于树中 的一条路径:
简单来说,针对每个训练示例,可以创建一条路径到叶子节点的一致性决策树(除非函数在输入属性上是非确定性的),但这种决策树可能会过度拟合数据,无法很好地泛化到新的未见过的数据示例。因此,更倾向于找到更紧凑的决策树来提高泛化性能。
目的:找到一个与训练示例一致的小树
想法:(递归)选择“最重要”属性作为(子)树的根
想法:一个好的属性将示例拆分为(理想情况下)“全正”或“全负”的子集
根据Patron分类是一个更好的选择
信息熵:计算数据的不确定性
Entropy ( t ) = − ∑ j = 1 m p ( j ∣ t ) log 2 p ( j ∣ t ) \text{Entropy}(t) = - \sum_{j=1}^m p(j|t) \log_2 p(j|t) Entropy(t)=−j=1∑mp(j∣t)log2p(j∣t)
此时:表示某个节点 (即某个特征)的信息不确定性
p ( j ∣ t ) p(j|t) p(j∣t)是节点特征的属于类别的样本的比例
对于包含 p p p 个正例和 n n n 个反例的训练集,其熵可以用以下公式计算:
I ( p p + n , n p + n ) = − p p + n log 2 p p + n − n p + n log 2 n p + n I(\frac{p}{p+n},\frac{n}{p+n}) = -\frac{p}{p+n}\log_2\frac{p}{p+n}-\frac{n}{p+n}\log_2\frac{n}{p+n} I(p+np,p+nn)=−p+nplog2p+np−p+nnlog2p+nn
其中,第一项和第二项分别表示正例和反例的占比, log 2 \log_2 log2 表示以 2 为底的对数。熵的值越高,表示数据集越不确定。
信息增益: 按某个特征划分之后,数据不确定性降低的程度
Gain ( m ) = Entropy ( p ) − ( ∑ i = 1 k ∣ n i ∣ n Entropy ( i ) ) \text{Gain}(m) = \text{Entropy}(p) - (\sum^k_{i=1} \frac{|n_i|}{n}\text{Entropy}(i)) Gain(m)=Entropy(p)−(i=1∑kn∣ni∣Entropy(i))
信息增益能够较好地体现某个特征在降低信息不确定性方面的贡献
信息增益越大,说明信息纯度提升越快,最后结果的不确定性越低
信息增益的局限性,尤其体现在更偏好可取值较多的特征
取值较多,不确定性相对更低,因此得到的熵偏低,但不一定有实际意义
特征Customer ID有最大的信息增益,因为每个子节点的熵均为0
对于训练集, p = n = 6 p=n=6 p=n=6,信息熵为 I ( 6 12 , 6 12 ) = 1 I(\frac{6}{12}, \frac{6}{12})=1 I(126,126)=1 bit。
考虑属性Patrons和Type(以及其他属性)