EDA365电子论坛网

标题: 基于互信息的特征选择算法MATLAB实现 [打印本页]

作者: uqHZau    时间: 2020-11-4 13:43
标题: 基于互信息的特征选择算法MATLAB实现

+ O. H! c3 P8 }& ]; J- A: D在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。不同于相关系数,互信息并不局限于实值随机变量,它更加一般且决定着联合分布 p(X,Y) 和分解的边缘分布的乘积 p(X)p(Y) 的相似程度。互信息(Mutual Information)是度量两个事件集合之间的相关性(mutual dependence)。互信息最常用的单位是bit。
3 F% W  e) B# l  ~$ P4 E, b* b7 d3 u( Q3 h' P# m( f; Z/ v
互信息的定义0 f; ]0 s4 X/ j2 o9 l) y. m
正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:' t9 [7 x2 a/ H& ^) h+ I! Y; \

, Z1 c8 o' L9 }! I9 s' `$ \8 V7 r3 p8 s其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。
. z/ }8 A- R4 m5 F
6 l3 `' R, J: f4 P$ D# A$ b
0 S- a8 M6 z# ?% n- V, ^7 P1 y6 O' D8 v9 o3 B* b/ p2 O
在连续随机变量的情形下,求和被替换成了二重定积分:
$ d: _7 T2 P6 n3 H: I# e7 _1 P
" _) ^2 Z, ^6 U4 V# a
- T3 {5 D4 N- R8 E# `. g4 Q% k3 U
9 e: a3 r3 Z' [4 v其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。
. P+ B1 T, ]! Y, z* ^& X  r  p
* P7 L5 _+ W8 B: }% m互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。
: ^2 W4 l, w9 a! j2 a! }* G% |$ R  E' f2 H0 c2 m) e2 a! x! {  A
直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)
6 V. _) Y5 o  K; v) `) X
+ q; Q# y) P) v. {' W  Y互信息是 X 和 Y 联合分布相对于假定 X 和 Y 独立情况下的联合分布之间的内在依赖性。于是互信息以下面方式度量依赖性:I(X; Y) = 0 当且仅当 X 和 Y 为独立随机变量。从一个方向很容易看出:当 X 和 Y 独立时,p(x,y) = p(x) p(y),因此:% T8 E$ s1 B5 ^2 d
" P2 j& W7 e. {2 N$ z! D# k

/ g$ b2 c8 q& A- l2 U" o( f! J4 a7 r8 r# @! ~; `
此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。- x3 V- I& h" S' D7 `& W5 x* |

  }% b0 D+ C( B! Z) b互信息特征选择算法的步骤
9 ]( j3 J7 F. X: U# L7 E缺点
+ ^' Q0 H+ b! x2 t此种特征选择方法是最大化特征与分类变量之间的相关度,就是选择与分类变量拥有最高相关度的前k个变量。但是,在特征选择中,单个好的特征的组合并不能增加分类器的性能,因为有可能特征之间是高度相关的,这就导致了特征变量的冗余。3 r: D/ G, L, ]: \

. G+ q: N1 S8 J: M  A代码
1 _- s# q; j7 f# U2 H注意使用的数据集是dlbcl,大概五千多维,可以从UCI上下载,最终选择前100特征进行训练。
9 U0 T8 I. Q- E$ S3 A
) M/ n3 A/ Q- K8 o& i, n主函数代码:
2 A2 k( N! J2 `6 x8 I7 K6 G* y4 L) J) k8 e: g1 P) r5 u
   
& U2 K7 g/ D' [0 G9 \9 p9 x6 r' U
mutInfFS.m
# k5 y2 l8 U2 x2 ]: D% D/ l4 O
( p" U2 ]6 H! G0 j: \
, y2 r- _- U% U) i3 N- ?0 U
- C  o  J2 Q1 z/ ]; Xmuteinf.m
3 \0 T& V% b0 k) F
& Y% n8 e7 ?% R+ S. \( b   2 K+ k3 q) \3 C
: ?& c# S. L2 G8 l, D) z+ p
前100个特征的效果:
, e3 z" ~8 y) j, R' I
& \0 @; u. `- ], \$ x# q- q6 yAccuracy: 86.36%, Error-Rate: 0.14
1 \4 Z+ {8 O" @* V# G/ h9 p  V, _. L
8 Y6 V9 ~. d( w9 i9 a) q选择前两个特征进行训练(压缩率接近100%,把上述代码中的K设为2即可)的二维图:
; D; }$ Z% q: t$ F% G7 I1 Z# b& Q8 T* M
7 i; }7 Y9 m  P$ |$ `9 ]

" J8 H; g% |3 f7 v& s& j$ Z9 lAccuracy: 75.00%, Error-Rate: 0.25
作者: ExxNEN    时间: 2020-11-4 14:52
基于互信息的特征选择算法MATLAB实现




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2