最近在上这方面的课程,简单说下我自己的理解吧!
觉得内容太多,可以直接看最后面部分。
首先分析一下熵和决策树中的纯的关系
- 熵反映的是系统的不确定性,举个简单的例子,总共有十个样本:
(1). 正负各5个
![]()
(2).正样本9个,负样本1个
![]()
我们可以看出明显(2)的样本集的熵小,我自己的理解是如果从(1)的样本集中随机取出一个样本,有可能为正(50%),也很有可能为负(50%),但从(2)中随机取一个样本,很大概率(90%)为正的,更稳定些。
决策树实际上就机器学习的一个算法,任何算法最关键的是算得快(time cost)和占空间少(memory cost)。
2. 算得快及占空间少
现在先看看这个例子,属性为有钱(0或1)和帅不帅(0或者1), 分类为嫁还是不嫁(0或1)。
我们考虑一下可能出现的数据有哪些:
![]()
表1. 所有可能出现的数据,红色为噪声数据,出现次数极少,大部分的数据为黑色的模式,蓝色可能发生,并且出现了产生争端的数据。(虽然没有收集过此方面的数据,但是一般情况下,两个属性的二分类通常都会出现这种情形的数据分布)此时,考虑所有的情形,以帅或者有钱作为初始节点的树的结构为:
![]()
及
![]()
考虑到出现矛盾的情况,根据数据出现的次数,删掉出现次数极少的情形(001,110,见表1),得到以帅或者有钱作为初始节点的树的结构:
![]()
及
![]()
对于(011,010;101,100,见表1)可能出现冲突的请况,根据出现次数多少进行删减(提高accuracy),不妨假设011的次数多于010, 100的次数多于101(其他情况的分析也一样的), 以帅或者有钱作为初始节点的决策树结构:
![]()
及
![]()
此时,从计算时间和储存空间来看,无论用有钱作为初始节点还是帅作为初始节点,都一样。
但考虑到当
(1).属性大于2
(2).收集的数据不够
(3).(010,011)这种模式根本不存在
的时候,会出现以下的情形:
数据只有:
![]()
表2在这种情况下,很显然,用有钱作为初始节点更好,通过有钱直接可以判断嫁不嫁,而如果把帅作为初始节点,如果不帅,还要考虑是否有钱。
![]()
以及
![]()
左右一致显然下面的模型计算量少,存储空间少,以有钱作为初始节点优于帅作为初始节点。
3. 熵和纯
现在我们从熵的角度和纯的角度来分析这个模型:
(1). 熵
![]()
![]()
那么,
![]()
![]()
用钱作为初始node,信息增益大于用帅作为初始node。
(2). 纯
以帅作为初始节点,其帅节点下面只有嫁,而不帅的节点下有嫁和不嫁两种情况。
以有钱作为初始节点,其有钱节点下只有嫁,没钱节点下只有不嫁。
总体而言
以有钱为初始节点,"纯"高或者说该节点(有钱)的子节点(有或没)只出现以一种情况(也就是纯净,单一);
以帅作为初始节点,"纯"低或者说该节点(帅)的子节点(帅不帅)出现(混合)多种情况(也就是不纯,混合)。
4. 整体分析
(1). 表2可以作为一个很有代表性的例子。正常情况下,属性数目多,数据量较少时,数据不可能涵盖所有的情形( ![]()
)。而且当出现冲突数据时,为保证精度,往往删掉出现次数少的数据。
(2). 从纯度而言,纯度越高,越快得到出分类结果,模型越浅,计算速度快,时间消耗少(见2)。当条件概率 ![]()
确定之后,为了保证纯度,数据越少,纯度越高(见3)。
(3). 从熵而言,熵低,模型稳定,体现在分布上就是分布不均匀(见1)。
此处利用1的例子说明,分布越不均匀(比如1/10和9/10),那么会得到数据量很少的一个分类(1/9),从数量上来说,数量少(1/9)往往纯度(干净程度)可能更低。而当数据达到一定程度(9/10和1/2)后,纯度不变。
结论:任何算法的分析都离不开Performance,Time Cost和Memory Cost。此处不考虑过拟合等问题,分析最基础的决策树算法。其实信息增益算法的核心是熵越低=>分布不均匀=>某些分类数据量少=> 出现不同类的少=>纯度高=>计算时间少。
建议读完上面部分再看
回答:
信息增益率的引进则是解决内存空间大小,如果出现这种情形
![]()
信息增益算法会倾向于先将Day作为初始节点,因为该分类下每类的数据量少,而且都只有一类(Y或者N),纯度高。然而得到的图结构就是:
![]()
整个树结构十分庞大,虽然也很浅,计算速度快,但是占内存空间大,才引入信息增益率这个概念。
|