决策树算法进行分类的基本依据
在本文的内容中主要参考《Spark MLlib 机器学习算法、源码及其实战详解》介绍了一些决策树的基本理论知识,只要内容为决策树的特征选择。在特征选择中主要以信息熵作为特征选择的主要依据进行处理依据。
##1 决策树
决策树(Decision Tree)是一个树结构(可以是二叉树或者非二叉树),决策树又节点和有向边组成。
决策树节点类型分类:内部节点,叶子节点。内部节点表示属性,外部节点表示一个类。其每一个内部节点表示一个特征属性上的测试,每一个分支代表这个特征属性在某个值阈上的的输出,而每个叶子节点代表一个类型。
决策树分类的本质:从训练集上归纳出一组分类规则,通常采用启发式学习的方法,即局部最优。具体做法是每一次挑选feature时都挑选当前条件下最优的那个featrue作为划分规则。
决策书学习的三个步骤:
(1)特征选择
(2)决策树生成
(3)决策树的修剪
##2 特征选择
特征选择的标准:找出局部最优秀特征,判断这个特征对当前数据集的分类效果。也就是按照这个特征进行分类之后,数据集是否更加有序(不同类的数据尽量被分开)
在当前节点用哪个属性特征作为判断进行切分(也叫分类规则),取决于切分后节点数据集合中类别的有序纯度。
衡量节点的有序纯度:
(1)熵
(2)基尼
(3)方差
###(1)熵
####1)信息量
信息量是由一个事情发生的概率决定的。经常发生的事情没有什么信息量。在信息论中,香农用概率表示一个事件包含的信息量的大小,大概率事件发生的信息量较小,小概率事件包含有较大的信息量。(我们不妨这样理解,每一种类型的时间包含的信息量的总数是相同的,因为其经常发生所有每一个时间发生所携带的信息量较小。)
信息量的具体定义如下:
$I_{e} =-log_{2} p_i $
根据上述的公式可知:当$p_i$的值越大时,$I_e$的值越小。 例如,有26个英文字母,每个字母在文章中出现的次数是平均数,则每一个字母的信息来量大小为: $$I_e=-log_2\frac{1}{26}=4.7$$ 而每个汉字有2500个假如每个汉字出现的次数是平均数,那么每一个汉字的信息量为: $$I_e=-log_2\frac{1}{2500}=11.3$$ ####2)信息熵
信息熵:信息量的期望,信息熵的公式如下:$$H(x)=E(I(x))=\sum_{i=1}^{n}{p(x_i)I(x_i)}=-\sum_{i=1}^{n}p(x_i)log_bp(x_i)$$ 值得注意的是:在上述公式中的$b$可以取值为2可以取值为其他值,当取值为2时单位为bit 条件熵的公式: $$H(x|y)=-\sum_{i=1}^{n}p(x_i|y)log_bp(x_i|y)$$ 表示在已知某一个特定的条件$y$的情况下,信息$x_i$的不确定程度(熵)。 ####3)信息增益 分类前,数据中可能出现各种类的情况,比较混乱,不确定性强,熵比较高;分类后,不同类的数据得到较好的划分,在一个划分中大部分数据是同一类的数据,比较有序,不确定性降低,熵比较低。信息增益就是用于评价这种熵的变化。
信息增益:特征$A$对训练数据集$D$的信息增益为$g(D,A)$,定义为集合$D$的经验熵$H(D)$与特征$A$在给定条件$D$的经验条件熵$H(D|A)$之差,即: $$g(D,A)=H(D)-H(D|A)$$ 在上述公式中,$H(D)$根据信息熵的公式计算得到,而$H(D|A)$,$D$根据$A$划分为$n$份$D_1...D_n$,那么$H(D|A)$就是所有$H(D_i)$的期望(平均值): $$H(D|A)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}H(D_i)$$ ####4)信息增益比 信息增益只是一个相对的值,因此信息增益的大小在一定程度上依赖于信息熵$H(D)$的大小,为了更好地反应信息增益判断分类的依据,我们通过信息增益比来反映这一个过程。 信息增益比的定义如下:特征A对训练数据集D的信息增益比$g_R(D,A)$定义为其信息增益$g(D,A)$与分裂信息熵$splitinfo(A)$之比,具体的计算公式如下: $$g_R(D,A)=\frac{g(D,A)}{splitinfo(A)}$$ 其中$splitinfo(A)=H(A)=-\sum_{j=1}^{v}\frac{|D_j|}{|D|}log_2(\frac{|D_j|}{|D|})$ ###(2)基尼 定义公式如下: $$\sum_{i=1}^{C}f_i(1-f_i)$$ 其中,$f_i$是一个分区内部第$i$个标签的频率,$C$是该分区中的类别总数。$Gini$是不纯度度量的是类型别分错的可能性(类型的概率乘以分错的概率) ###(3)方差 方差定义的公式: $$\frac{1}{N}\sum_{i=1}{N}(y_i-\mu)$$ 其中,$y_i$是某个实例的标签,$N$是实例的总数,$\mu$是所有实例的均值。对应的信息增益比可以参考熵的中的概念。