机器学习算法第七篇
主要内容:决策树算法+ID3算法+熵+条件熵+信息增益(熵减)
通俗的讲决策树:
算法目的:
- 求通过训练集计算出一个最合适的决策树模型,并可以对输入的样本进行分类
决策树原理:
- 相同的原因会生产相同类似的结果---->相同的输入特征会产生相同或相似的输出y
决策树的结构:
- 由节点和有向边组成,内部节点表示一个特征或属性,叶子节点表示一个类
分类的过程:
- 从根节点开始,根据节点的分类标准(该标准在决策树生成的时候已经决定了)对样本某一特征进行测试,根据结果,将样本分配到相应的子节点
- 循环进行第1步,直到叶子节点
- 根据叶子节点的分类标记决定该样本的分类(叶子节点的分类由决策树生成的时候决定)
决策树的构建(训练阶段):
- 构建根节点,将所有训练数据存放在根节点
- 选择一个最优的特征,按照这个特征将训练数据集分割成子集,使得各个子集是最好的分类
(这个特征的分类标准即为该节点的分类标准,ID3算法对选择最优的特征采用的是信息增益最大的方法) - 如果某个子集可以很好的对数据进行分类,则对该子集建立叶子节点.
(将子集中数量最多的y的分类标记为叶子节点的分类标记) - 如果某子集不能很好的对自己的数据进行分类,则继续重复2,3步 ,直到所有的数据都被分配到叶子节点
ID3算法:
算法概念:
- ID3算法在决策树构建的时候,选择最优特征的一种算法,它的核心是在决策树各个节点应用信息增益准则选择特征
信息增益准则:
- 对训练集数据,计算他们的每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征
信息增益的计算:
为了更好的计算,先定义下熵和条件熵
熵:表示随机变量不确定性的度量
设
X
是
一
个
取
有
限
值
的
离
散
随
机
变
量
,
其
概
率
分
布
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
3...
n
则
关
于
随
机
变
量
X
的
熵
定
义
为
设X是一个取有限值的离散随机变量,其概率分布P(X=x_i)=p_i,i=1,2,3...n \\则关于随机变量X的熵定义为
设X是一个取有限值的离散随机变量,其概率分布P(X=xi)=pi,i=1,2,3...n则关于随机变量X的熵定义为
(1)
H
(
X
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
H(X)=-\sum_{i=1}^np_ilogp_i\tag1
H(X)=−i=1∑npilogpi(1)
通
常
(
1
)
式
中
对
数
取
2
或
e
为
底
,
若
p
i
=
0
,
则
定
义
−
l
o
g
0
=
0
通常(1)式中对数取2或e为底, 若p_i=0,则定义-log0=0
通常(1)式中对数取2或e为底,若pi=0,则定义−log0=0
由
(
1
)
式
我
们
可
以
知
道
熵
只
与
X
的
分
布
有
段
,
所
有
我
们
也
称
X
的
熵
为
H
(
p
)
由(1)式我们可以知道熵只与X的分布有段,所有我们也称X的熵为H(p)
由(1)式我们可以知道熵只与X的分布有段,所有我们也称X的熵为H(p)
条件熵H(X|Y):表示在一直随机变量X的条件下随机变量Y的不确定性
设
有
随
机
变
量
(
X
,
Y
)
,
其
联
合
概
率
分
布
为
P
(
X
=
x
i
,
Y
=
y
j
)
=
p
i
j
,
i
=
1
,
2
,
3
,
.
.
,
n
;
j
=
1
,
2
,
3...
,
m
则
X
给
定
的
情
况
下
Y
的
条
件
熵
的
定
义
为
:
设有随机变量(X,Y),其联合概率分布为P(X=x_i,Y=y_j)=p_{ij}, i=1,2,3,..,n;j=1,2,3...,m\\ 则X给定的情况下Y的条件熵的定义为:
设有随机变量(X,Y),其联合概率分布为P(X=xi,Y=yj)=pij,i=1,2,3,..,n;j=1,2,3...,m则X给定的情况下Y的条件熵的定义为:
(2)
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)\tag2
H(Y∣X)=i=1∑npiH(Y∣X=xi)(2)
信息增益表示:得知特征X的信息而使得类Y的信息不确定性减少的程度
定
义
特
征
A
对
训
练
集
D
的
信
息
增
益
g
(
D
,
A
)
为
:
定义特征A对训练集D的信息增益g(D,A)为:
定义特征A对训练集D的信息增益g(D,A)为:
(3)
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)\tag3
g(D,A)=H(D)−H(D∣A)(3)
利用信息增益准则挑选特征的原理:
给 定 训 练 数 据 集 D 和 特 征 值 A , 熵 H ( D ) 表 示 对 数 据 D 进 行 分 类 的 不 确 定 性 ( 我 们 希 望 它 越 小 越 好 ) 而 条 件 熵 H ( D ∣ A ) 表 示 在 特 征 A 确 定 的 情 况 下 对 数 据 集 D 进 行 分 类 的 不 确 定 性 ( 一 次 比 较 中 , 我 们 选 条 件 熵 较 小 的 特 征 ) 那 么 他 们 的 差 , 就 表 示 由 特 征 A 发 生 而 使 得 对 数 据 集 D 的 分 类 不 确 定 性 减 少 的 程 度 ( 即 A 发 生 对 D 的 造 成 的 熵 减 ) 显 然 信 息 增 益 ( 熵 减 ) 最 大 的 特 征 具 有 更 强 的 分 类 能 力 , 所 以 我 们 选 信 息 增 益 最 大 ( 熵 减 ) 最 大 的 特 征 ) 给定训练数据集D和特征值A,熵H(D)表示对数据D进行分类的不确定性(我们希望它越小越好 )\\ 而条件熵H(D|A)表示在特征A确定的情况下对数据集D进行分类的不确定性(一次比较中,我们选条件熵较小的特征 )\\ 那么他们的差,就表示由特征A发生而使得对数据集D的分类不确定性减少的程度(即A发生对D的造成的熵减)\\ 显然信息增益(熵减)最大的特征具有更强的分类能力,所以我们选信息增益最大(熵减)最大的特征) 给定训练数据集D和特征值A,熵H(D)表示对数据D进行分类的不确定性(我们希望它越小越好)而条件熵H(D∣A)表示在特征A确定的情况下对数据集D进行分类的不确定性(一次比较中,我们选条件熵较小的特征)那么他们的差,就表示由特征A发生而使得对数据集D的分类不确定性减少的程度(即A发生对D的造成的熵减)显然信息增益(熵减)最大的特征具有更强的分类能力,所以我们选信息增益最大(熵减)最大的特征)
为进一步理解,展开熵 H ( P ) H(P) H(P)与条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X)的具体计算公式:
首先定义下公式所用的小示例
-
设 训 练 集 数 据 D , 则 ∣ D ∣ 表 示 样 本 总 个 数 设训练集数据D,则\vert D\vert表示样本总个数 设训练集数据D,则∣D∣表示样本总个数
-
设 训 练 集 里 有 K 个 分 类 , k = 1 , 2 , . . . , K , 则 ∣ C k ∣ 为 属 于 k 类 的 样 本 总 数 , 即 ∑ i = 1 K ∣ C k ∣ = ∣ D ∣ 设训练集里有K个分类,k=1,2,...,K,则\vert C_k\vert为属于k类的样本总数,即\sum^K_{i=1}\vert C_k\vert=\vert D\vert 设训练集里有K个分类,k=1,2,...,K,则∣Ck∣为属于k类的样本总数,即∑i=1K∣Ck∣=∣D∣
-
设 特 征 A 有 n 个 不 同 的 取 值 { a 1 , a 2 . . . a n } , 则 根 据 A 的 取 值 可 将 D 划 分 为 n 个 子 集 D 1 , D 2 . . . D n , ∣ D i ∣ 为 属 于 D i 的 样 本 总 数 即 ∑ i = 1 n ∣ D i ∣ = ∣ D ∣ 设特征A有n个不同的取值\{a_1,a_2...a_n\},则根据A的取值可将D划分为n个子集D_1,D_2...D_n,\\ \vert D_i\vert为属于D_i的样本总数即\sum^n_{i=1}\vert D_i\vert=\vert D\vert 设特征A有n个不同的取值{a1,a2...an},则根据A的取值可将D划分为n个子集D1,D2...Dn,∣Di∣为属于Di的样本总数即∑i=1n∣Di∣=∣D∣
-
设 子 集 D i 中 的 同 时 也 属 于 类 C k 的 样 本 集 合 , 记 做 D i k , 即 D i k = D i ∩ C k , 记 ∣ D i k ∣ 为 集 合 D i k 样 本 的 个 数 设子集D_i中的同时也属于类C_k的样本集合,记做D_{ik},即D_{ik}=D_i\cap C_k,记\vert D_{ik}\vert为集合D_{ik}样本的个数 设子集Di中的同时也属于类Ck的样本集合,记做Dik,即Dik=Di∩Ck,记∣Dik∣为集合Dik样本的个数
计算数据集D的熵:
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^K\frac{\vert C_k\vert}{\vert D\vert}log_2\frac{\vert C_k\vert}{\vert D\vert} H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
计算特征A对数据集D的条件熵:
(4) H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = ∑ i = 1 n ( ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ ) H(D|A)= \sum_{i=1}^n\frac{\vert D_i\vert}{\vert D\vert}H(D_i)= \sum_{i=1}^n\left( \frac{\vert D_i\vert}{\vert D\vert} \sum_{k=1}^K\frac{\vert D_{ik}\vert}{\vert D_i\vert}log_2\frac{\vert D_{ik}\vert}{\vert D_i\vert} \right)\tag4 H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=i=1∑n(∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Dik∣)(4)
计算特征A对数据集D的信息增益:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)