前言
上一次谈到『假设检定』(Hypothesis Testing),它可以检定一项实验是否有显着性的效果,但是,我们要蒐集多少样本才能验证实验的可靠度呢? 这时就要借助『检定力分析』(Power Analysis)来帮我们解决这个问题。
假设检定与检定力分析
回顾一下假设检定之混淆矩阵(Confusion Matrix),详细的说明请参阅这一篇。
图. 假设检定之混淆矩阵(Confusion Matrix)
假设检定是在避免『型一误差』(Type I Error),即效果不显着时(H0为真),我们却误认为实验有效(H1为真),相对的,『型二误差』(Type II Error)是当效果显着时(H0为假),却误认为实验无效(H1为假),检定力分析希望避免此一错误,亦即当效果显着时,我们有多少机率可以侦测到此一效果,因此,两者是互补的分析方法。
『型二误差』以β表示,检定力(Power) 等于 1 - β。 例如Power = 0.2,就表示只有20%的机率,可以侦测到效果是显着的,因此建议检定力通常设为 0.8 或更高。
样本数计算
检定力与样本大小(n)、效应值(effect size)高度相关,三者在给定的临界值(α)下,形成一等式的关係。
效应值(effect size)是指干预组和控制组之间差异量,其绝对值越大表示效应越强,也就是差异越明显。因此,科学家 Cohen 定义下表说明效应值(Cohen's d)的效果:
效应值(d) = 0.2,表示希望干预组比控制组差异达20%,若效应值设的很小,表示我们希望能侦测到很小的差异,所以,需要的样本数就要很大。
所以,进一步设定检定力与效应值的水準,就可以知道我们要蒐集多少样本才够,计算很简单,statsmodels 套件直接支援如下:
from statsmodels.stats.power import tt_ind_solve_power# effect_size: 效应值# nobs1: 样本数,设为 None,表示要求算样本数# alpha:临界值(α)# power: 检定力# ratio: 干预组与控制组的样本数比例,若不等于1,nobs1 算出来的是较少的样本数,nobs2 = nobs1 * ratio# alternative: 单尾或双尾检定,单尾再分右尾(larger)及左尾(smaller)tt_ind_solve_power(effect_size=0.2, nobs1 = None, alpha=0.05, power=0.8, ratio=1, alternative='two-sided')
函数传回的结果是每组需要蒐集的样本数,若ratio不等于1,则另一组样本数(nobs2) = nobs1 * ratio。
结论
谈到这里,对于机器学习要蒐集多少样本,準确率/精确率/召回率才具有公信力,构建了一个初步的概念,同时也是这一系列的文章告一段落了(江郎才尽)。