数据挖掘——使用统计显著性检验选择模型

bigdataway 提交于 周五, 04/20/2018 - 19:37

在上一篇中学习巩固了模型评估部分, 这一篇完成模型选择部分,这里主要讲「使用统计显著性检验选择模型」,「基于成本和 ROC 曲线比较分类器」我还不熟悉,就先不讲了。

上课在讲这一节的时候,我也刚好在看 t 检验相关的,本想使劲听一下的,结果老师直接跳过了,因为他对统计相关的也不熟悉就不献丑了。杨老师真是谦虚。

不过我很感兴趣就去弄明白了,然后现在记录一下。如果只是看了 t 检验,也许我还是比较模糊,现在结合书上的模型选择,就进一步加深了知识的融会贯通。

学习也是这样,需要「知行合一」。

我也不知道这里「知行合一」用对没有,哈哈哈,感觉就是这样,知道的也和实际操作一致,将知道的运用到实践中,一点点浅显的见解。

t 检验简单介绍

以下都是目前我浅显的认识,写得也比较混乱,错误的地方还望指教。

通过计算得到的「统计量」,与统计学家建立的一些随机变量的概率分布进行比较,可以得到在多少百分比的概率下得到目前的结果。

比较后,发现出现结果的概率比显著性水平小,那么就是在很罕见的情况下才会出现,那么就不是巧合,而是具有统计显著性(即拒绝零假设)。相反,比较后发现出现结果的几率比显著性水平大,不具有统计显著性(无法拒绝零假设)。

上面说的计算出来的「统计量」就是 t 值,显著性水平就是「阿尔法水平」,p 值就是出现这种结果的概率。

t 检验根据样本数,有两种比较常用的情况:

  • 单样本检验
  • 双样本检验

用 t 检验研究一个调查的步骤:

  • 研究类型:1)先验检验,后验检验;2)纵向检验(一段时间内的重复跟踪研究);3)相依样本 t 检验
  • 自变量
  • 因变量
  • 零假设
  • 对立假设
  • t 检验:单尾正负方向,双尾
  • 计算均值差异
  • 根据「df(自由度)」和「阿尔法水平」找出 t 临界值
  • 根据标准偏差得到标准误差
  • 计算 t 统计量
  • 决策:可以比较,1)t 统计量和 t 临界值的大小;2)p 值和「阿尔法水平」
  • Cohen’s d
  • r^2(注意:这里公式里面的 t 是 t 统计量)
  • 置信区间(注意:这里的 t 是按照双尾查找到的 t 临界值)

通过这个过程,就可以对一个调查作出决策。

简单的例子

比如我们想要调查一个法律效应是否具有效力,该条款将对开车时使用手机的行为进行处罚。随机选择了一个地方的 10 个乡镇,统计了通过该法律前一年以及后一年,因为开车时使用手机引发的交通事故的数量。预想该法律的实施,会降低由开车时使用手机引发的交通事故的数量。

首先研究类型是「相依样本检验」以及「先验后验检验」,后面的根据上面的步骤一步一步计算即可。

t 检验用于模型选择

下面就进入主题了。依据《数据挖掘概念与技术》做的笔记整理。

模型是否真的有差别?

假设已经由数据产生了两个分类模型 M1 和 M2。并且已经进行了 10-折交叉验证(一种模型评估方法,具体可参见上一篇文章),得到了每个模型的平均错误率。

那么如何确定那个模型更好?

直观的,可以比较两个模型的平均错误率,但是,这种平均错误率只是对未来数据真实总体上的错误估计。M1 和 M2的平均错误率看上去可能不一样,但是差别可能不是统计显著的,可能是偶然的。

那么,这两个模型是否有“真正的”差别?我们要用「t 检验」对两个模型进行统计显著性检验。

首先,我们对两个模型 M1 和 M2 分别做 10 次 10-折交叉验证,分别得到了 M1 和 M2 的 10 个平均错误率。再分别对 M1 和 M2 的这 10 个数据取平均值,得到了每个模型的平均错误率分别是 err(M1)-barerr(M2)-bar

注意:使用的是单个检验集,对 M1 和 M2 使用相同的检验集。

解决步骤:

0)这是一种相依样本 t 检验

1)自变量是使用不同的模型

2)因变量是平均错误率差异

3)零假设是:M1 的平均错误率 = M2 的平均错误率

4)对立假设:M1 的平均错误率 != M2 的平均错误率

5)这是一种「双尾 t 检验」

6)样本量 k 为 10,因为进行了 10 次 10-折交叉验证,所以自由度为 9;选择阿尔法水平为 0.05;查找 t 表,找出 t 临界值为:正负 2.162(注意是双尾,所以查找 阿尔法水平是 0.025 的值)

7)计算样本的标准偏差 S 以及标准误差 SEM

注意这里我们要求的是两个模型平均错误率差异的标准偏差。

首先,两个模型第 i 次做交叉验证得到的平均错误率分别是 err(M1)ierr(M2)i ,差异就是 Di = err(M1)i - err(M2)i ,所有差异(Di)的平均值其实就是 D-bar = err(M1)-bar - err(M2)-bar

所以, S = sqrt{[(D1 - D-bar)^2 + (D2 - D-bar)^2 + ... + (Dk - D-bar)^2]/(k - 1)}

书上这里用的是 k 并不是 k-1 ,根据贝尔赛斯校正系数,求样本的标准偏差是用的应该是 k-1 而不是 k ,这里我保留一丝疑惑,先用我自己认为的 k-1

所以标准误差 SEM = S/(sqrt(k))

8)计算 t 值, t = [err(M1)-bar - err(M2)-bar] / SEM

9)得到了 t 值,第 6 步也找到了 t 临界值,「以我的想法」直接比较两者的大小,如果 t 值没有在 [-2.162, 2.162] 之间,则表示具有统计显著性,拒绝零假设,即对立假设成立,即 M1 和 M2 的平均错误率不相等,即 M1 和 M2 之间的差不是随机的;相反,如果 t 值在 [-2.162, 2.162] 之间,则不能拒绝零假设,则表示 M1 和 M2 的平均错误率相等,即 M1 和 M2 之间的差可能是随机的。

重点来了:

在书上,作者写到「然而,由于 t-分布 是对称的,通常只显示分布上部的百分点。因此,找 z=0.025 的表值。… 」

作者的意思是找「z-检验」的 z 临界值,而不是 t 临界值,然后让 t 统计值与 z 临界值做比较。

这里我不是很明白为什么不用 t 临界值,而是 z 临界值。

10)

后面这些在这个例子中就不用求了。其实也可以把 Cohen's dr^2 算出来,它们都是效应量的度量。

两个检验值

注意刚才一系列的计算都是基于使用了单个检验值,如果我们要使用两个检验值,M1 和 M2 分别用一个,这就要使用 t 检验的独立样本进行计算。

其中样本的标准偏差计算公式发生改变:

S = sqrt(S1^2 + S2^2) ,其中 S1S2 分别是 M1M2 的样本偏差。

标准误差:

SEM = sqrt{[(S1^2) / n1] + [(S2^2) / n2]} ,其中 n1n2 分别是 M1M2 的样本数,这里都为 k

自由度也会变化,有两种,更标准的是前一种:

  • df = (n1 - 1) + (n2 - 1) = n1 + n2 - 2
  • n1-1n2-2 中选择结果更小的,书中写的是第二种

例题

这道例题也来自《数据挖掘概念与技术》中的课后练习题 8.14

问题描述:

假设在两个预测模型 M1 和 M2 之间进行选择。已经在每个模型上做了 10 轮 10-折交叉验证, 其中在第 i 轮,M1 和 M2 都使用相同的数据划分 。M1 得到的错误率为 30.5、32.2、20.7、20.6、31.0、41.0、27.7、28.0、21.5、28.0。M1 得到的错误率为 22.4、14.5、22.4、19.6、20.7、20.4、22.1、19.4、18.2、35.0。评述在 1% 显著水平,一个模型是否显著地比另一个好。

解决

这里就直接跳过前面三个步骤。在某些计算中,使用 Excel 进行计算。保留百分位。

0)M1 的平均错误率 = M2 的平均错误率

1)对立假设:M1 的平均错误率 != M2 的平均错误率

2)这是一种「双尾 t 检验」

3)自由度:9;显著性水平:0.01;查 t 表得到 t 临界值:正负 3.250

因为是双尾,所以查表的时候要查「显著性水平 / 2」的值。

4)用 Excel 算出样本的标准偏差 S = 8.41 ,标准误差 SEM = 2.66

5)计算 t 统计量:

t = (err(M1)-bar - err(M2)-bar) / SEM = 2.50

6)决策,由于 t 值在 t 临界值范围内,所以没有统计显著性,无法拒绝零假设,则表示 M1 和 M2 的平均错误率是一样的,出现差异可能具有随机性。

以上是我自己的计算结果,目前没有找到官方答案进行对比。

总结

文章确实写得比较很乱,我自己都觉得在 t 检验哪里没有写清楚。还有一些问题没有弄明白,比如和书上不一样的地方。表示抱歉。

想成为一个统计学家!!!

最近脸也好了,真开心!