赞
踩
是什么导致了我们对某个特征的评价是 “好” 还是 “坏”呢?
- 一个好的特征应该是和分类结果有相关关系的;也就是说这个特征能够对最终分类的结果其一定程度的作用。
- 很显然在这个例子中如果你只看 a 1 a_1 a1 的值你就能够得出 c c c 的值,这种情况下,我们就说 a 1 a_1 a1 和 c c c 的相关性很大。而它也就是一个对于 c c c 分类任务而言很好的特征
- 当 P ( A , C ) P ( A ) ( C ) > > 1 \frac{P(A,C)}{P(A)(C)}>>1 P(A)(C)P(A,C)>>1 的时候,属性 A A A 和属性 C C C 是有正向的相关关系的
- 当 P ( A , C ) P ( A ) ( C ) ≈ 1 \frac{P(A,C)}{P(A)(C)}\approx1 P(A)(C)P(A,C)≈1 的时候,属性 A A A 和属性 C C C 是相互独立的
- 当 P ( A , C ) P ( A ) ( C ) < < 1 \frac{P(A,C)}{P(A)(C)}<<1 P(A)(C)P(A,C)<<1 的时候,属性 A A A 和属性 C C C 是有负相关关系的
- 这个实例中,属性 a 1 a_1 a1 有两种不同的值 Y , N Y,N Y,N,类别属性 c c c 也有两种不同的值 Y , N Y,N Y,N。所以我们求算 a 1 a_1 a1 和 c c c 之间的 PMI 应该计算 4 个,即 P M I ( a 1 = Y , c = Y ) , P M I ( a 1 = Y , c = N ) , P M I ( a 1 = N , c = Y ) , P M I ( a 1 = N , c = N ) PMI(a_1=Y, c=Y),PMI(a_1=Y, c=N),PMI(a_1=N, c=Y),PMI(a_1=N, c=N) PMI(a1=Y,c=Y),PMI(a1=Y,c=N),PMI(a1=N,c=Y),PMI(a1=N,c=N)
- 拿其中的一个 P M I ( a 1 = Y , c = Y ) PMI(a_1=Y, c=Y) PMI(a1=Y,c=Y) 举例:
同样的方式,我们可以求算相同条件下 a 2 a_2 a2 属性和 c c c 的逐点互信息:
好的特征的判断标准
- 与某类别属性有正向的关联:知道特征 a a a 可以对判断 c c c 的类别更加有信心
- 与某类别属性有反向的关联:知道特征 a ˉ \bar{a} aˉ(not a a a) 可以对判断 c c c 的类别更有信心
Note: 0 l o g 2 0 = 0 0log_20=0 0log20=0
对于 a 1 a_1 a1 和 c c c 的互信息计算过程可以如下表示:
根据互信息的公式:
用同样的方法我们可以得到 a 2 a_2 a2 特征和 c c c 的互信息:
如果 a , c a,c a,c 相互独立的话,则有: P ( a , c ) = P ( a ) P ( c ) P(a,c)=P(a)P(c) P(a,c)=P(a)P(c)
依然使用 σ ( ⋅ ) \sigma(\cdot) σ(⋅) 表示某个格子中的数值,进而我们可以得到如下推导:
- E ( W ) E(W) E(W) 是我们按照假设的期望值,即,在两个属性独立的情况下应该得到的数值
- 而实际上我们会根据计算得到一个 O ( W ) O(W) O(W),它代表了实际的观察值
- 如果 O ( W ) > > E ( W ) O(W)>>E(W) O(W)>>E(W) 代表 a a a 和 c c c 伴随出现的程度比随机状态更加紧密——是一种可预测的状态 (predictive)
- 如果 O ( W ) < < E ( W ) O(W)<<E(W) O(W)<<E(W) 代表 a a a 和 c c c 伴随出现的程度不如随机情况——是一种可预测的状态 (predictive)
- 如果 O ( W ) ≈ E ( W ) O(W)\approx E(W) O(W)≈E(W) 代表 a a a 和 c c c 之间的关系几乎是随机的——不可预测的 (not predictive)
根据 O ( W ) , E ( W ) O(W),E(W) O(W),E(W) 我们可以计算卡方 χ 2 \chi^2 χ2 的值,根据下列公式:
- 得到的 χ 2 \chi^2 χ2 值越大,代表两个属性 a , c a,c a,c 之间的依赖性越大;也就越不支持原假设(两个属性相互独立)
- O a , c = σ ( a , c ) = 2 , E a , c = ( W + Y ) ( W + X ) W + X + Y + Z = ( 2 ⋅ 2 ) 4 = 1 O_{a,c}=\sigma(a,c)=2,~ E_{a,c}=\frac{(W+Y)(W+X)}{W+X+Y+Z}=\frac{(2\cdot2)}{4}=1 Oa,c=σ(a,c)=2, Ea,c=W+X+Y+Z(W+Y)(W+X)=4(2⋅2)=1
用红色框里面的来计算 E ( ⋅ ) E(\cdot) E(⋅) 用蓝框中的部分来计算 O ( ⋅ ) O(\cdot) O(⋅)
- 拿出每一个单独的特征进行训练和测试
- 选出能够导致最好结果的属性 O O O
- 进行下列操作直到模型收敛:
- 训练和评估这个单一的最佳属性 O O O 并且以 O O O 为基础分别加上剩下的所有单一属性来构成包含两个属性的特征集合 { O , T } , { O , H } , { O , W } \{O,T\}, \{O,H\},\{O,W\} {O,T},{O,H},{O,W}
- 再选出最佳的特征子集,然后以当前筛选出的特征子集为基础,以剩下的单个特征为原料不断地将这个集合不断扩大
- 停止条件:表现不再提高(accuracy)
从上面的过程我们可以看到,经过不断迭代,最终到收敛的时候会选择出最佳的前 n n n 个特征构成特征集合(假设特征空间一共有 m m m 个特征)
假设全部 m m m 个特征都能够参与构成最后使用的特征空间,那么 wrapper 的这过程的时间复杂度可以用如下公式计算: m + ( m − 1 ) + . . . + 1 = m ( m + 1 ) 2 m+(m-1)+...+1=\frac{m(m+1)}{2} m+(m−1)+...+1=2m(m+1)
在实际的应用中收敛其实会更早到来,不会用尽所有的 m m m 个特征,模型可能会很快的选择出一个最优的特征子集并完成收敛
这个过程假设所有的特征之间是相互独立的
- 将所有的特征都用于模型的训练
- 删掉某一个特征,然后对模型重新训练和评估
- 进行如下的操作直至收敛:
- 从剩下的所有特征中分别单独删除单个的特征,对模型进行重新训练和评估
- 删除掉那个删掉之后让模型退化程度最小的特征(删除那个最可有可无的特征)
- 结束条件:性能的下降到某一个阈值 ϵ \epsilon ϵ 之下
处理方式1:
使用独热编码;
sunny | overcase | rainy |
---|---|---|
100 | 010 | 001 |
处理方式2:
feature_importance_
可以得到每个特征的重要程度,根据这些特征重要程度的排名,可以筛选出最重要的特征子集Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。