相关性分析(二)之离散特征

信息熵

基础

  1. x i x_i xi的自信息: 反映特征的某个值,具有非负、单调减、可加和不确定性。表示收到某消息获得的信息量(即,收到某消息后获得关于某事件发生的信息量),公式如下:
    I ( x i ) = f [ p ( x i ) ] = − l o g r p ( x i ) , r = 2 I(x_i)=f[p(x_i)]=-log_rp(x_i),r=2 I(xi)=f[p(xi)]=logrp(xi)r=2
  2. 条件的自信息量:
    I ( x i / y i ) = − l o g r p ( x i / y i ) , r = 2 I(x_i/y_i)=-log_rp(x_i/y_i),r=2 I(xi/yi)=logrp(xi/yi)r=2
  3. 联合自信息量:
    I ( x i y i ) = − l o g r p ( x i y i ) I(x_iy_i)=-log_rp(x_iy_i) I(xiyi)=logrp(xiyi)

I ( x i y i ) = − l o g r p ( x i y i ) = − l o g r p ( x i ) p ( y i ∣ x i ) = I ( x i ) + I ( y i ∣ x i ) I(x_iy_i)=-log_rp(x_iy_i)=-log_rp(x_i)p(y_i|x_i)=I(x_i)+I(y_i|x_i) I(xiyi)=logrp(xiyi)=logrp(xi)p(yixi)=I(xi)+I(yixi)
I ( x i y i ) = − l o g r p ( y i ) p ( x i ∣ y i ) = I ( y i ) + I ( x i ∣ y i ) I(x_iy_i)=-log_rp(y_i)p(x_i|y_i)=I(y_i)+I(x_i|y_i) I(xiyi)=logrp(yi)p(xiyi)=I(yi)+I(xiyi)

互信息

互信息的定义

信源发出的消息 x i x_i xi的概率 p ( x i ) p(x_i) p(xi)称为先验概率,信宿收到 y j y_j yj,利用收到 y j y_j yj推测信源发出的 x i x_i xi的概率,称为后验概率,有时候也称为条件概率。

互信息的公式

互信息即已知一个变量,在此基础上又知道一个消息,这个消息减少了这个变量多少不确定性。
I ( x i ; y j ) = I ( x i ) − I ( x i ∣ y j ) = − l o g r p ( x i ) + l o g r p ( x i ∣ y j ) = l o g r p ( x i / y j ) p ( x i ) I(x_i;y_j)=I(x_i)-I(x_i|y_j)=-log_rp(x_i)+log_rp(x_i|y_j)=log_r\frac{p(x_i/y_j)}{p(x_i)} I(xi;yj)=I(xi)I(xiyj)=logrp(xi)+logrp(xiyj)=logrp(xi)p(xi/yj)
I ( x i ; y j ) = I ( y j ) − I ( y j ∣ x i ) I(x_i;y_j)=I(y_j)-I(y_j|x_i) I(xi;yj)=I(yj)I(yjxi)
I ( x i ; y j ) = l o g r p ( x i , y j ) p ( x i ) p ( y j ) = I ( x i ) + I ( y j ) − I ( x i , y j ) I(x_i;y_j)=log_r\frac{p(x_i,y_j)}{p(x_i)p(y_j)}=I(x_i)+I(y_j)-I(x_i,y_j) I(xi;yj)=logrp(xi)p(yj)p(xi,yj)=I(xi)+I(yj)I(xi,yj)

互信息量=自信息量-条件信息量

通信之前,x和y相互独立,有 p ( x i , y j ) = p ( x i ) p ( y j ) p(x_i,y_j)=p(x_i)p(y_j) p(xi,yj)=p(xi)p(yj),不确定性 − l o g r p ( x i ) p ( y j ) = I ( x i ) I ( y j ) -log_rp(x_i)p(y_j)=I(x_i)I(y_j) logrp(xi)p(yj)=I(xi)I(yj),但在通信过程中,存在信道转移概率 p ( y j ∣ x i ) p(y_j|x_i) p(yjxi),此时,联合概率 p ( x i , y j ) = p ( y j ∣ x i ) p ( x i ) p(x_i,y_j)=p(y_j|x_i)p(x_i) p(xi,yj)=p(yjxi)p(xi),发 x i x_i xi y j y_j yj的不确定性 I ( x i , y j ) = − l o g r p ( x i , y j ) I(x_i,y_j)=-log_rp(x_i,y_j) I(xi,yj)=logrp(xi,yj)

拓展到三维X,Y,Z联合集:
给定条件 Z k Z_k Zk下, x i x_i xi y j y_j yj之间的互信息量,其定义式:
I ( x i , y j ∣ z k ) = l o g r p ( x i ∣ y j , z k ) p ( x i ∣ z k ) I(x_i,y_j|z_k)=log_r\frac{p(x_i|y_j,z_k)}{p(x_i|z_k)} I(xi,yjzk)=logrp(xizk)p(xiyj,zk)

互信息的性质

  1. 对称性 —— 互易性
  2. 当x和y相互独立时,互信息为0
  3. 互信息可为正值或负值,反映两个事物之间的肯定作用。
    a) 若互信息为正值,通过接收 y j y_j yj判断是否发送 x i x_i xi的确定性变小,能正常通信。
    b) 若互信息为负值,意味着传输中的问题,如信道噪声,干扰等,收到 y j y_j yj判断是否发送 x i x_i xi的不确定性反而变大了。
    I ( x i ; y j ) = I ( x i ) − I ( x i ∣ y j ) = l o g r p ( x i ∣ y j ) p ( x i ) < 0 I(x_i;y_j)=I(x_i)-I(x_i|y_j)=log_r\frac{p(x_i|y_j)}{p(x_i)}<0 I(xi;yj)=I(xi)I(xiyj)=logrp(xi)p(xiyj)<0
    => I ( x i ) < I ( x i ∣ y j ) I(x_i)<I(x_i|y_j) I(xi)<I(xiyj) p ( x i ∣ y j ) < p ( x i ) p(x_i|y_j)<p(x_i) p(xiyj)<p(xi)
  4. 两个事件的互信息量不大于单个事件的自信息量,即
    I ( x i ; y j ) ≤ I ( x i ) I(x_i;y_j)\leq I(x_i) I(xi;yj)I(xi) and I ( x i ; y j ) ≤ I ( y j ) I(x_i;y_j)\leq I(y_j) I(xi;yj)I(yj)

信息熵

对一个信息源发出的不同消息所包含的信息量也不同,所以自信息 I ( x i ) I(x_i) I(xi)是一个随机变量,不能用它作为整个信源的信息测度。

自信息 I ( x ) I(x) I(x)反映的是某个特征的某个值
信息熵 H r ( x ) H_r(x) Hr(x)反映的是某个特征
即将自信息求期望后,会得到信息熵,也就是 H r ( x ) = E ( I ( x ) ) = ∑ i = 1 k p ( x i ) l o g p ( x i ) H_r(x)=E(I(x))=\sum_{i=1}^{k}p(x_i)logp(x_i) Hr(x)=E(I(x))=i=1kp(xi)logp(xi)

定义自信息的数学期望为平均自信息量 H r ( x ) H_r(x) Hr(x),称为信源的信息熵,也叫做信源熵或者香农熵。
H r ( x ) = E ( I ( x ) ) = E ( l o g r 1 p ( x i ) ) = − ∑ i = 1 k p ( x i ) l o g r ( x i ) H_r(x)=E(I(x))=E(log_r\frac{1}{p(x_i)})=-\sum_{i=1}^{k}p(x_i)log_r(x_i) Hr(x)=E(I(x))=E(logrp(xi)1)=i=1kp(xi)logr(xi)
熵还是的自变量是X,表示信源整体,实际上是离散无记忆信源平均不确定度的度量。

在Python中,可以使用sklearn.feature_selection模块中的SelectKBest方法进行相关性分析特征选择。这个方法主要是根据互信息法来选择最佳特征。使用SelectKBest方法需要注意以下两点: 1. 区分离散数据和连续数据:在进行特征选择时,需要考虑特征的类,即特征离散数据还是连续数据。 2. 输出索引或特征名:SelectKBest方法的输出一般为特征的索引,但如果只获得索引对于特征量大的数据集来说不够友好,需要想办法获得特征的名称。 下面是一个示例代码,展示了如何使用SelectKBest方法进行相关性分析特征选择: ``` from sklearn.feature_selection import SelectKBest, mutual_info_classif # 创建SelectKBest对象,指定使用互信息法进行特征选择 selector = SelectKBest(score_func=mutual_info_classif, k=12) # 使用fit方法进行特征选择,传入特征矩阵X和目标变量y selector.fit(X, y) # 通过get_support方法获取选择的特征的索引 selected_features_indices = selector.get_support(indices=True) # 根据索引从原始特征矩阵X中选择特征 selected_features = X[:, selected_features_indices] ``` 这段代码演示了在相关性分析特征选择中使用互信息法的方法。首先,创建了一个SelectKBest对象,并指定score_func参数为mutual_info_classif,k参数为希望选择的特征数量。然后,使用fit方法对特征矩阵X和目标变量y进行特征选择。最后,通过get_support方法获取选择的特征的索引,再根据索引从原始特征矩阵X中选择特征。 希望以上内容对您有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值