1、信息熵
H ( x ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(x) = -\sum_{i=1}^n p(x_i)log_2p(x_i) H(x)=−∑i=1np(xi)log2p(xi) ---------注意负号
x i 表 示 x 取 值 为 x i x_i表示x取值为x_i xi表示x取值为xi
p ( x i ) 表 示 值 为 x i 出 现 的 概 率 p(x_i)表示值为x_i出现的概率 p(xi)表示值为xi出现的概率
概率越大,或者越小,信息熵的值是减小的。
概率 = 0.5 的时候,最不确定,信息熵是最大的,所以
l
o
g
2
log_2
log2。
2、条件熵
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X) = \sum_{x∈X} p(x)H(Y|X=x) H(Y∣X)=∑x∈Xp(x)H(Y∣X=x)
对熵加一个条件
3、信息增益(ID3)
即为熵和条件熵的差
{ H ( D ) = − ∑ d ∈ D p ( d ) l o g 2 p ( d ) , 数据集的熵 H ( D ∣ A ) = ∑ d ∈ D p ( d ) H ( A ∣ D = d ) , 数据集在A特征上的条件熵 g a i n ( D , A ) = H ( D ) - H ( D ∣ A ) , 信息增益 \begin{cases} H(D) = -\sum_{d∈D} p(d)log_2p(d),& \text {数据集的熵} \\H(D|A) = \sum_{d∈D} p(d)H(A|D=d) ,& \text {数据集在A特征上的条件熵}\\ gain(D,A)=H(D)-H(D|A) ,& \text {信息增益} \end{cases} ⎩⎪⎨⎪⎧H(D)=−∑d∈Dp(d)log2p(d),H(D∣A)=∑d∈Dp(d)H(A∣D=d),gain(D,A)=H(D)-H(D∣A),数据集的熵数据集在A特征上的条件熵信息增益
D为整个数据集,A为某个特征,d为类别
对一个确定的数据集来说,H(D)是确定的。
H(D|A)在A特征一定的情况下,随机变量的不确定性越小,信息增益越大,这个特征的表现就越好。
所以,信息增益就是在得知特征A一定的情况下,D不确定性的减少程度。
简单来说,就是加入了A特征后,可分辨性增加了多少!
eg.是否买过头绳
D
(
d
∈
{
1
,
0
}
)
D(d ∈\{1,0\})
D(d∈{1,0})这个问题,知道了A性别后,会变得很容易分类了。
缺点:
1.信息增益考察的是特征对整个系统的贡献,没有到具体的类别上,所以一般只能用来做全局的特征选择,而没法针对单个类别做特征选择。
2.只能处理离散型特征值
3.算法天生偏向选择分支多的属性,容易导致overfitting。
4、信息增益比(C4.5)
信息增益如果遇到特征选取的值过多(身份证、日期等),导致分支过多,容易过拟合。
解决办法:对树分支过多的情况进行惩罚。
除以A特征的熵正好抵消了特征变量(身份证、日期等)的复杂程度,可以减小过拟合的可能性。
g a i n r a t e ( D , A ) = g a i n ( D , A ) H A ( D ) gain_{rate}(D,A) = \frac{gain(D,A)}{H_A(D)} gainrate(D,A)=HA(D)gain(D,A)
5、基尼系数(CART)
类似信息熵,可以衡量数据的不纯度,信息越不确定,值越大。
G i n i ( D ) = 1 − ∑ i = 1 n p i 2 Gini(D)=1−∑_{i=1}^np^2_i Gini(D)=1−∑i=1npi2
Gini系数就是信息熵在x=1的地方一阶泰勒展开得到 f ( x ) = 1 − x f(x)=1-x f(x)=1−x,也是等价无穷小。
g i n i = ∑ k p k l o g ( p k ) = ∑ k p k ( 1 − p k ) = ∑ k p k − ∑ k p k 2 = 1 − ∑ k p k 2 gini=\sum_k p_kl og(p_k) = \sum_k p_k (1 - p_k) = \sum_k p_k - \sum_kp_k^2 = 1-\sum_kp_k^2 gini=∑kpklog(pk)=∑kpk(1−pk)=∑kpk−∑kpk2=1−∑kpk2。
与信息增益类似,我们可以计算如下表达式:
Δ
G
i
n
i
(
X
)
=
G
i
n
i
(
D
)
−
G
i
n
i
X
(
D
)
ΔGini(X)=Gini(D)−Gini_X(D)
ΔGini(X)=Gini(D)−GiniX(D)
加入特征X以后,数据不纯度减小的程度。
明显,在做特征选择的时候,我们可以取ΔGini(X)最大的那个
借鉴:
1、https://www.jianshu.com/p/268c4095dbdc
2、https://blog.youkuaiyun.com/bitcarmanlee/article/details/51488204