Spark MLlib 决策树算法(一)——理论基础

决策树算法进行分类的基本依据

在本文的内容中主要参考《Spark MLlib 机器学习算法、源码及其实战详解》介绍了一些决策树的基本理论知识,只要内容为决策树的特征选择。在特征选择中主要以信息熵作为特征选择的主要依据进行处理依据。

1 决策树

决策树(Decision Tree)是一个树结构(可以是二叉树或者非二叉树),决策树又节点和有向边组成。
决策树节点类型分类:内部节点,叶子节点。内部节点表示属性,外部节点表示一个类。其每一个内部节点表示一个特征属性上的测试,每一个分支代表这个特征属性在某个值阈上的的输出,而每个叶子节点代表一个类型。
决策树分类的本质:从训练集上归纳出一组分类规则,通常采用启发式学习的方法,即局部最优。具体做法是每一次挑选feature时都挑选当前条件下最优的那个featrue作为划分规则。
决策书学习的三个步骤:
(1)特征选择
(2)决策树生成
(3)决策树的修剪

2 特征选择

特征选择的标准:找出局部最优秀特征,判断这个特征对当前数据集的分类效果。也就是按照这个特征进行分类之后,数据集是否更加有序(不同类的数据尽量被分开)
在当前节点用哪个属性特征作为判断进行切分(也叫分类规则),取决于切分后节点数据集合中类别的有序纯度。

衡量节点的有序纯度:
(1)熵
(2)基尼
(3)方差

(1)熵

1)信息量

信息量是由一个事情发生的概率决定的。经常发生的事情没有什么信息量。在信息论中,香农用概率表示一个事件包含的信息量的大小,大概率事件发生的信息量较小,小概率事件包含有较大的信息量。(我们不妨这样理解,每一种类型的时间包含的信息量的总数是相同的,因为其经常发生所有每一个时间发生所携带的信息量较小。)
信息量的具体定义如下:

Ie=log2pi

根据上述的公式可知:当 pi 的值越大时, Ie 的值越小。
例如,有26个英文字母,每个字母在文章中出现的次数是平均数,则每一个字母的信息来量大小为:

Ie=log2126=4.7

而每个汉字有2500个假如每个汉字出现的次数是平均数,那么每一个汉字的信息量为:
Ie=log212500=11.3

2)信息熵

信息熵:信息量的期望,信息熵的公式如下:

H(x)=E(I(x))=i=1np(xi)I(xi)=i=1np(xi)logbp(xi)

值得注意的是:在上述公式中的 b 可以取值为2可以取值为其他值,当取值为2时单位为bit

条件熵的公式:
H(x|y)=i=1np(xi|y)logbp(xi|y)

表示在已知某一个特定的条件 y 的情况下,信息 xi 的不确定程度(熵)。

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 D1...Dn ,那么 H(D|A) 就是所有 H(Di) 的期望(平均值):
H(D|A)=i=1n|Di||D|H(Di)

4)信息增益比

信息增益只是一个相对的值,因此信息增益的大小在一定程度上依赖于信息熵 H(D) 的大小,为了更好地反应信息增益判断分类的依据,我们通过信息增益比来反映这一个过程。
信息增益比的定义如下:特征A对训练数据集D的信息增益比 gR(D,A) 定义为其信息增益 g(D,A) 与分裂信息熵 splitinfo(A) 之比,具体的计算公式如下:

gR(D,A)=g(D,A)splitinfo(A)

其中 splitinfo(A)=H(A)=vj=1|Dj||D|log2(|Dj||D|)

(2)基尼

定义公式如下:

i=1Cfi(1fi)

其中, fi 是一个分区内部第 i 个标签的频率, C 是该分区中的类别总数。 Gini 是不纯度度量的是类型别分错的可能性(类型的概率乘以分错的概率)

(3)方差

方差定义的公式:

1Ni=1N(yiμ)

其中, yi 是某个实例的标签, N 是实例的总数, μ 是所有实例的均值。对应的信息增益比可以参考熵的中的概念。

发布了15 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/redhatforyou/article/details/71191208