双样本T检验——机器学习特征工程相关性分析实战

最近在做数据分析方面的工作,经常需要检验两组样本之间是否存在差异,所以会遇到统计学中假设检验相关的知识。在机器学习特征工程这一步,笔者最常用到的是假设检验中的卡方检验去做特征选择,因为卡方检验可以做两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。但是笔者今天想介绍一下通过T检验做机器学习中的特征工程,希望能够让大家初步了解到各种假设检验是如何在机器学习项目的特征工程发挥作用。

假设检验简介

统计学中,常见的假设检验有:T检验(Student's t Test),F检验(方差齐性检验),卡方验证等。无论任何假设检验,它们都遵循如下图所示的流程:

  • 做两个假设:一般如果假设对象是两组样本的话,都会假设这两组样本均值相等(T检验的假设),方差满足齐次性(F检验的假设)等。而另一个假设其实就是两组样本均值不相等(T检验的假设),方差不满足齐次性(F检验的假设)等,其实这两个假设就是一对非此即彼的选项。这两个假设在教科书上就叫做原假设H_0,和备择假设H_1
  • 设置一个显著性值:通俗点理解,就是如果真实的情况偏离原假设的程度。
    1.如果真实情况和原假设差异不大(P值高于显著性值),那证明原假设是对的,接受原假设。
    2.如果真实情况和原假设差异太大(P值低于显著性值),那证明原假设错了,我们得拒绝原假设,接受备择假设。
    显著性值的选择是个经验值:一般和样本量有关,样本量越大,显著性值越大,一般几百左右的样本量P值一般选择0.05,样本量在两千左右时P值一般选择0.001,样本量再大,P值就没有作用了,所以做假设检验时样本量一般不会超过5千,样本量超过5千时P值就没什么意义了。
  • 收集证据:用手头的数据去验证第一步定义的假设。这一步就是对样本进行统计计算等操作。
  • 得到结论:结论一般不外乎这两种:
    1.如果P>0.05(上方第二步设定的显著性的值),原假设成立;
    2.如果P< 0.05(上方第二步设定的显著性的值),原假设不成立,备择假设成立。
    假设检验

假设检验与特征相关性分析

熟悉机器学习的同学都知道,特征X和目标Y的数值类型经常会出现两类:1. 连续型数值,2. 离散性数值(类别特征可以编码成离散型特征)。
特征X和目标Y在不同数值类型的组合下,应该采用不同的假设检验手段去做特征相关性分析。下图罗列了特征X和目标Y在各种数值类型组合时最适合的假设检验方法。


假设检验和特征相关分析对照表

T检验简介

T检验分单样本T检验和双样本T检验,单样本T检验检验的是样本的均值是否能代表总体的均值。双样本T检验检验的是两个独立样本所代表的总体数据均值差异是否显著。换句话说就是检验两个总体是否是存在差异。双样本T检验适用条件如下:

  • 两样本均来自于正态总体
  • 两样本相互独立
  • 满足方差齐性,方差齐次性指的是样本的方差在一个数量级水平上(通过方差齐性检验)

接下来按照假设检验流程:
1.原假设:两个独立样本所代表的总体数据均值相同(H_0),备择假设:两个独立样本所代表的总体数据均值不相同(H_1);
2.P值定为0.05;
3.计算两组样本的均值,标准差然后带入下图所示的公式后求得t值,然后查T检验表得到P值。其中\overline x_1\overline x_2 分别指这两组样本的均值,s_1s_2分别代表两组样本的标准差, n_1n_2分别代表两组样本的样本量;
4.如果P< 0.05,则两组数据均值不同,数据间存在差异,如果P> 0.05,则两组数据均值相同。

双样本T检验

双样本T检验特征相关性分析实战

数据载入

导入必要的python包和数据集,这里笔者用的是boston房价预测的数据集。

from scipy import stats
import pandas as pd
from sklearn.datasets import load_boston
data_value = load_boston().data
data_target = load_boston().target
feature = load_boston().feature_names
data = pd.DataFrame({ i:j  for  i, j  in  zip(feature, [data_value[:,index] for  index in range(len(feature))])})
data["Price"] = data_target

数据大致如下图所示,其中Price列是预测值Y,其他列都是特征X列,根据上文假设检验和特征相关分析对照表,我们发现如果X和Y中一个为二分类数值类型时,一个为连续数值类型时即可以使用双样本T检验。

data

下图显示CHAS这列是二分类数值类型,506个样本中CHAS = 0的有471个样本,CHAS = 1的有35个样本,而boston 房价预测数据中Price是连续数值类型,所以我们可以采用双样本T检验去检验CHAS(0或者1)的不同是否会对房价有影响,换句话说就是去检验CHAS这列特征和房价是否有关联。


CHAS的统计结果

准备样本

将CHAS = 0 的房价Price 样本 和 将CHAS = 1 的房价Price 样本 分别抽取出来。

CHAS_0 = list(data[data["CHAS"]==0].Price)
CHAS_1 = list(data[data["CHAS"]==1].Price)
方差齐次性检验

按照T检验的步骤,首先做方差齐次性检验,下方代码就是在做方差齐次性检验,一行代码,so easy。

stats.levene(CHAS_0,CHAS_1)

得到的结果如下所示:
LeveneResult(statistic=4.590342218715871,pvalue=0.03263097600633006)
这里我们只需要关注p value(上文提到的P值),P=0.03小于0.05,证明方差齐次性检验的原假设不成立,说明两组样本方差不满足齐次性。

双样本T检验

接着做双样本T检验,依然是一行代码。注意由于两组样本之间的方差不满足齐次性,需要加一个参数equal_var=False。此API默认为equal_var=Ture。

stats.ttest_ind(CHAS_0,CHAS_1,equal_var=False)

结果如下:
Ttest_indResult(statistic=-3.113291312794837,pvalue=0.003567170098137517)
P=0.003小于0.05,证明双样本T检验的原假设不成立,即两个总体之间的均值存在差异。

结论

下面结果显示:CHAS = 0的这一波房子的房价均值为22,而CHAS = 1的这一波房价的均值为26,说明CHAS = 1的房子比CHAS = 0的房子要贵。所以CHAS这列特征和房价还是很相关。而且T检验也证明其相关性还是很显著,所以这列特征,不能随意扔掉。


结果

但是不知道读者发现没有,采用T检验去做相关性分析,条件十分苛刻——需要一组样本是二分类数值,另一组特征为连续数值。其他类型的数值类型情况就无法采用此法。所以,卡方检验和方差分析应该是最值得推荐的做特征相关性方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容