卡方检验和互信息

在机器学习中,特征选择主要有两个目的:

1. 减少特征数量,提高训练速度

2. 减少噪声特征从而提高模型在测试集上的准确率。一些噪声特征会导致模型出现错误的泛化,容易产生overfitting。

常用的特征选择算法有很多,这里着重介绍其中两个:卡方检验互信息

一、卡方检验

1. 卡方分布

在说卡方检验之前,首先介绍卡方分布。

设 X1, X2, ..., Xn 是来自总体 N(0,1) 的独立样本,那么统计量  $X^{2}=X_{1}^{2}+X_{2}^{2}+...+X_{n}^{2}$  服从自由度为 n 的卡方分布,记为 $X^{2} \sim X^{2}(n)$. 注意,这里的自由度是指公式右端独立变量的个数,与卡方检验中的自由度不同。

卡方分布的性质:

a. 期望  $E(X^{2})=n$

b. 方差 $D(X^{2})=2n$

c. 分位点 $P{X^{2}>X_{\alpha}^{2}(n)}=\alpha$, 如下图所示

2. 卡方检验

即 Χ检验,它是数理统计中常用的检验两个变量独立性的方法。首先假设两个变量时独立的(原假设),然后计算观察值与理论值的偏差。如果偏差足够小,那么就接受原假设,否则,拒绝原假设,接受备择假设。偏差的计算公式如下

$\sum_{i=1}^{n}\frac{(x_{i}-E)^{2}}{E}$    (1)

其中,$x_{i}$是样本的观察值,$E$ 是理论值。计算出来的偏差值与卡方表中的阈值(根据显著性水平$\alpha$确定)对比,如果小于此阈值,则原假设成立,否则,拒绝原假设。

2.1 四格表

顾名思义,四格表,即具有四个格子的表,举个栗子来说明:

某医院分别利用化学疗法和化疗结合放射治疗卵巢癌患者,结果如表,请问两种疗法有无差别?

组别 有效 无效 合计 有效率(%)
化疗组 19 24 43 44.2
化疗加放射 34 10 44 77.3
合计 53 34 87 60.9

表格中最原始的数据有四个(19, 24, 34, 10),其他数据都是由这四个数据推导而来。那么如何利用公式来计算卡方值呢?这里涉及到理论值计算 。假设治疗方法的不同对治疗结果没有影响,即化疗与化疗加放射这两个随机变量之间没有关系。注:卡方检验的自由度,在这里计算方法是:v = (行数-1)(列数-1)

2.2 检验步骤:

a. 建立检验假设

$H_{0}$: 治疗方法对治疗结果没有影响

$H_{1}$: 治疗方法对治疗结果有影响

$\alpha$=0.01

b. 计算理论值

组别 有效 无效 合计
化疗 26.2 16.8 43
化疗加放射 26.8 17.2 44
合计 53 34 87

因为已经假设了治疗方法对治疗结果没有影响。这里仍利用第一个表中总的有效率(即60.9%),化疗组共有43个样本,有效的应该是 43*60.9% = 26.2 。 其他3个同样的计算方法得到。这样,有了观察值和理论值,就可以计算卡方值了。

c. 计算卡方值

把观察值表和理论值表代入到公式(1)中,

$X^{2}=\sum_{i=1}^{n}\frac{(x_{i}-E)^{2}}{E}=\frac{(19-26.2)^{2}}{26.2}+\frac{(24-16.8)^{2}}{16.8}+\frac{(34-26.8)^{2}}{26.8}+\frac{(10-17.2)^{2}}{17.2}=10.01$

d. 查表对比卡方值与阈值

根据查表得知(表可以在书上或者网上查到),$X^{2}_{0.01}(1)=6.63$, (注:$X^{2}_{\alpha}(v)$), 卡方值(10.01) > 阈值(6.63),所以我们拒绝原假设,接受备择假设,即治疗方法对治疗结果有影响。

3. Python 实现

在Python中实现卡方检验有两种方法,一种是利用scipy,另一种是利用 sklearn。

3.1 scipy

import scipy
from scipy.stats import chisquare
chisquare([5, 2, 0, 13, 14])

# Power_divergenceResult(statistic=23.941176470588239, pvalue=8.2072801249491787e-05)

具体关于 chisquare 的用法请参考scipy的doc.

3.2 sklearn

TBD

二、互信息(Mutual Information)

1. 定义

互信息是用来评价一个事件的出现对于另一个事件的出现所贡献的信息量,互信息的定义如下

$I(Y;X)=\sum_{y_{i} \in Y} \sum_{x_{i} \in X} P(X=x_{i}, Y=y_{i})log_{2}\frac{P(X=x_{i}, Y=y_{i})}{P(X=x_{i}) P(Y=y_{i})}$

在对文本进行特征选择的时候,X表示某个词,Y表示类别,$x_{i}$表示这个词的取值(0, 1),分别是出现和不出现;$y_{i}$表示类别,可以为两类或者多类。

对文本特征提取$x_{i}$的取值只能是出现和不出现两种情况。使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率较低的词条与该类的互信息较大。通常互信息作为特征词与类别之间的测度,如果特征词属于该类,它们的互信息最大。特征项和类别的互信息体现了特征项与类别的相关程度,是一种广泛用于建立词关联统计模型的标准。

2. Python实现

好像有一个包可以用,minepy,具体的没有研究,可以搜下,github上有这个项目。

时间: 2024-11-05 14:46:02

卡方检验和互信息的相关文章

数据挖掘方法

1.布雷格曼散度:是一种类似距离度量的方式,用于衡量两者之间差异的大小.Bregman 散度是损失或者失真函数.考虑如下情况:设点是点的失真或者近似的点,也就是说可能是由添加了一些噪声形成的,损失函数的目的是度量用近似近似导致的失真或者损失,因而Bregman散度可以用作相异性函数. 2.挖掘方向: 内容挖掘:用户信息:(界面内容挖掘) 结构挖掘:网页的先后顺序拓扑结构(界面的超链接挖掘) 使用挖掘:使用情况-->用户的访问模式和知识(日志.用户注册信息),提高站点的质量 3.日志信息挖掘的基本

特征工程之特征选择

特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡.因此没有统一的方法.这里只是对一些常用的方法做一个总结.本文关注于特征选择部分.后面还有两篇会关注于特征表达和特征预处理. 1. 特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征:另一块是我们从业务特征中自己去寻找高级数据特征.我们就针对这两部分来分别讨论. 2.  选择合适的特征 我们首先看当业务已经整理好各种特

特征选择(important)

一.特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征:另一块是我们从业务特征中自己去寻找高级数据特征.我们就针对这两部分来分别讨论. 二.选择合适的特征 我们首先看当业务已经整理好各种特征数据时,我们如何去找出适合我们问题需要的特征,此时特征数可能成百上千,哪些才是我们需要的呢? 第一步是找到该领域懂业务的专家,让他们给一些建议.比如我们需要解决一个药品疗效的分类问题,那么先找到领域专家,向他们咨询哪些因素(特征)会对该

特征工程-特征选择

转自:https://www.cnblogs.com/pinard/p/9032759.html 1. 特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征:另一块是我们从业务特征中自己去寻找高级数据特征.我们就针对这两部分来分别讨论. 2.  选择合适的特征 我们首先看当业务已经整理好各种特征数据时,我们如何去找出适合我们问题需要的特征,此时特征数可能成百上千,哪些才是我们需要的呢? 第一步是找到该领域懂业务的专家,让他们

零基础数据挖掘组队学习第三次打卡

Task3特征工程 常见的特征工程包括: 异常处理: 通过箱线图(或 3-Sigma)分析删除异常值: BOX-COX 转换(处理有偏分布): 长尾截断: 特征归一化/标准化: 标准化(转换为标准正态分布): 归一化(抓换到 [0,1] 区间): 针对幂律分布,可以采用公式: log(1+x1+median)log(1+x1+median) 数据分桶: 等频分桶: 等距分桶: Best-KS 分桶(类似利用基尼指数进行二分类): 卡方分桶: 缺失值处理: 不处理(针对类似 XGBoost 等树模

特征选择: 卡方检验、F 检验和互信息

特征选择是特征工程中的重要一环,其主要目的是从所有特征中选出相关特征 (relevant feature),或者说在不引起重要信息丢失的前提下去除掉无关特征 (irrelevant feature) 和冗余特征 (redundant feature).进行特征选择的好处主要有以下几种: 降低过拟合风险,提升模型效果 提高训练速度,降低运算开销 更少的特征通常意味着更好的可解释性 不同的模型对于无关特征的容忍度不同,下图来自< Applied Predictive Modeling > (P48

单特征选择---卡方检验、F 检验和互信息

参考文献: [1]特征选择: 卡方检验.F 检验和互信息 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/11122995.html

卡方检验原理

最近导师让做一个文本分类的东西,偶然间看到卡方检验,不懂(感觉自己实在是水到家,博客里讲的基础的东西,到我这里就是漫天找资料学),于是找了些博客文章,总结了下,有所体会. 引子 首先讲一下什么是卡方检验.卡方检验按照定义来说就是:检验实际的数据分布情况与理论的分布情况是否相同.这样讲比较抽象,这里讲个具体的例子: 拿某地区的年降水天数来说明.比如一年365天中该地区有180天降水,那么该地区的降水概率近似等于50%,那么对于每个月份来讲,是否降水的概率达到了预期的50%(也就是 15天)呢? 卡

《spss统计分析与行业应用案例详解》:实例十二 卡方检验

卡方检验的功能与意义 SPSS的卡方检验是非参数检验方法的一种,其基本功能足通过样本的 频数分布来推断总体是否服从某种理论分布或某种假设分布,这种检验过程是通过分析实际的频数与理论的频数之间的差别或是说吻合程度来完成的. 相关数据 随机抽取100名某地新生婴儿性别.研究该地区新生婴儿男女比例是否存在明显的差别. 分析过程 分析-非参数检验-卡方 精确 选项 结果 描述性统计量 卡方检验频数表 卡方检验统计量表 卡方值是0.04,自由度是1,渐进显著性水平为0.841,远大于5%.所以该地区新生婴