注册 登录
    • 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

特征选择(3)-卡方检验

bigdata admin 89次浏览 0个评论 扫描二维码

上一篇说明从皮尔逊系数选择,这次使用卡方检验的方法来选择特征,使用假设检验的方式。

首先还是从卡方检验的原理,一切还是从白话文说起。

一个案例:

某医疗机构为了了解呼吸道疾病与吸烟是否有关,进行了一次抽样调查,共调查了 515 个成年人,其中吸烟者 220 人,不吸烟者 295 人.调查结果是:吸烟的 220 人中有 37 人患呼吸道疾病(简称患病),183 人未患呼吸道疾病(简称未患病);不吸烟的 295 人 中有 21 人患病,274 人未患病. 问题:根据这些数据能否断定“患呼吸道疾病与吸烟有关”?

 患病未患病合计
吸烟37183220
不吸烟21274295
合计58457515

计算吸烟患病的概率为17%,不吸烟患病的概率7%,从这其中如何判断吸烟与患病之间的关系?

独立假设检验

H0:吸烟与患病之间没有关系

H1:吸烟与患病之间存在关系

H0和H1之间的假设是对立的,所以在结果中要么接受要么拒绝

若假设H0成立,就需要数据去证明这个假设。

现在抽象化上面的表格,所有的数字使用字母来代替

 患病未患病合计
吸烟aba+b
不吸烟cdc+d
合计a+cb+da+b+c+d

如果吸烟与患病之间没什么关系那么吸烟患病的概率与不吸烟患病的概率基本上相等

$$ \frac{a}{a+b}\approx\frac{c}{c+d}$$

由此可以得到

$$ad-bc\approx0$$

现在只要上述这个式子成立那么H0假设就可以被接受,完成假设检验。

假设\(n=a+b+c+d\),可以将吸烟患病,吸烟不患病,不吸烟患病,不吸烟不患病的人数计算出来

首先给出四个事件说明且各个事件之间相互独立

\(p(A),p(B),p(C),p(D)\),分别表示吸烟,患病,不吸烟,不患病

那么吸烟患病的概率为

$$p=p(AB)=p(A)*p(B)$$

因此得到如下相关计算结果,就死之前描述的四种情况的人数:

吸烟患病:\(n*\frac{a+b}{n}*\frac{a+c}{n}\)

吸烟不患病:\(n*\frac{a+b}{n}*\frac{b+d}{n}\)

不吸烟患病:\(n*\frac{c+d}{n}*\frac{a+c}{n}\)

不吸烟不患病:\(n*\frac{c+d}{n}*\frac{b+d}{n}\)

如果实际观测值与由事件 A、B 相互独立的假设的估计相差不大,那么,我们就可以 认为这些差异是由随机误差造成的,假设不能被所给数据否定,否则应认为假设不能接受.

举个例子:上述吸烟患病计算出来的人数与实际的人数a如果相差不大的话证明当前的数据是由随机误差导致的,因此H0假设要被接受,不能被拒绝。

怎样刻画实际观测值与估计值的差异呢?统计学中采用如下的量(称为\(x^2\) 统计量)来刻画这个差异

卡方计算的公式是:

$$ x^2=\sum\frac{(A-T)^2}{T}=\frac{n*(ad-bc)^2}{(a+b)(a+c)(b+d)(c+d)}$$

由上述公式可以计算出对应的卡方值,计算出卡方值之后需要去查寻对应的表,该表根据计算出来的卡方值可以得到发生H0事件的概率,如果概率很低则表示可以拒绝H0

给个例子,假设把a=7,b=183 ,c=21,d=274

则相应的卡方值结果为11.8,通过查表可以得到

$$p(x^2>6.635)\approx0.01$$

当前卡方值更大,所以要拒绝H0假设,至此可以得到结论,吸烟和患病是有关联的。

自由度的计算是\(k=(行数-1)(列数-1)\)

自由度k \ P value (概率)0.950.900.800.700.500.300.200.100.050.010.001
1
0.0040.020.060.150.461.071.642.713.846.6410.83
2
0.100.210.450.711.392.413.224.605.999.2113.82
3
0.350.581.011.422.373.664.646.257.8211.3416.27
4
0.711.061.652.203.364.885.997.789.4913.2818.47
5
1.141.612.343.004.356.067.299.2411.0715.0920.52
6
1.632.203.073.835.357.238.5610.6412.5916.8122.46
7
2.172.833.824.676.358.389.8012.0214.0718.4824.32
8
2.733.494.595.537.349.5211.0313.3615.5120.0926.12
9
3.324.175.386.398.3410.6612.2414.6816.9221.6727.88
10
3.944.866.187.279.3411.7813.4415.9918.3123.2129.59

sklearn函数剖析

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
SelectKBest(chi2, k=2).fit_transform(irisdata.data,irisdata.target)

部分结果如下
array([[ 1.4,  0.2],
       [ 1.4,  0.2],
       [ 1.3,  0.2],
       [ 1.5,  0.2],
       [ 1.4,  0.2],
       [ 1.7,  0.4],
       [ 1.4,  0.3],
       [ 1.5,  0.2],

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明特征选择(3)-卡方检验
喜欢 (0)
[xiaocui]
分享 (0)

您必须 登录 才能发表评论!