本文主要讨论了推荐系统中小样本的问题,首先提出推荐系统中可能遇到小样本的问题,然后介绍了必要的数据知识——点估计和区间估计,之后结合具体案例解答“多少样本量算是小样本“和“小样本该如何处理”这两个问题。
推荐系统中,构建离线召回列表或利用模型进行pCTR或pCVR打分,就是利用最近一段时期的历史行为预估最近一段时期的未来行为,这里有两个基本假设:
1,历史行为和未来行为具有相同或相近的数据分布;
2,一段时期的历史行为数据可以反映真实的数据分布;
对于假设1,在场景和用户相对稳定的情况下基本成立,不过实际推荐系统中,很多badcase就是因为这个假设不成立,比如某直播平台人气女主播解说篮球吸引了大量用户,推荐系统以为这些用户喜欢篮球,下一时段推荐系统给这些用户推荐其他篮球类节目,发现效果并不好,因为很多是冲着女主播去的。再如某电商平台的“秒杀”场景,上一时段火爆的商品,下一时段已经下架了。关于假设1,这里不展开说,我们的重点是假设2。
关于假设2,一段时期的历史行为数据可以看作真实数据分布的一个采样,真实的数据分布通过这个采样进行估计。我们直观的知道当样本数据量越大则统计特征越可靠,模型泛化能力越强。
以电商商品推荐为例:单位时间内,商品A曝光1万次,点击100次,样本点击率1%;商品B曝光50次,点击1次,样本点击率2%。我们显然不能说,商品B比商品A总体点击率高,更值得被推荐。
对于样本不足的问题,我们也叫小样本问题,后面我们将介绍:
1,多少样本算小样本?
2,如何处理小样本?
假设数据总体数量是N,总体均值u,总体标准差σ,总体点击率ctr,样本大小是n,样本均值u’,样本标准差σ’,样本点击率ctr’。
从总体中随机抽取一个样本(batchsize=n),得到样本均值u’,样本标准差σ’,样本点击率ctr’,这些样本参数都是对总体的一个点估计。样本点击率ctr’是对总体点击率ctr的点估计。
衡量点估计的标准有:无偏性,有效性,相合性。
以相同的抽样方式,获得K组抽样样本,样本大小是n,每组样本按某一置信度,比如说95%,计算出置信区间,那么将会有0.95*K组所计算出来的置信区间中包含有总体待估计参数值。
对于标准正态分布,0.95置信度的区间半径是 1.96 ∗ σ n \frac{1.96*\sigma}{\sqrt{n}} n1.96∗σ,其中 σ n \frac{\sigma}{\sqrt{n}} nσ是标准误差(SE),公式看出,样本足够大时,区间半径就变得很小。
形象地说,区间估计就像在池塘撒网捕鱼,网的半径就是区间,半径大小由置信度、样本大小、样本方差共同决定。样本大小和方差一定时,0.99的置信区间比0.95要大,对于0.95置信区间,一百次网下去,可能会有95次网到我想要的鱼,但是我们并不知道是不是现在这一网捕到的这条。
在推荐场景下,点击-曝光构成的样本数据理论上符合0-1分布。0-1分布是一种特殊的二项分布(n=1),回顾一下0-1分布特性:事件发生概率为p,不发生概率为1-p,期望均值p,方差p(1-p).根据中心极限定理,实验足够多次,样本数据量足够大时,二项分布按概率逼近正态分布。
这里的“足够多”到底是多少呢?其实就是需要多少数据,在误差允许的范围内,可以使得样本以一定程度逼近正态分布。这个“误差”就是样本方差(或标准差),“一定程度”就是置信度。
假设检验是用来判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法。如果能通过假设检验方式,验证样本和总体差异不大,那么就可以说样本量足够多了。
针对小样本问题,也可以用t检验来处理,t检验用于检测样本平均数与总体平均数差距是否显著。t检验适应于:
1,已知总体均值,未知总体标准差;
2,已知样本均值,标准差;
3,总体满足或近似正态分布。
t检验公式:
t = x ˉ − μ 0 σ n − 1 t=\frac{\bar{x}-\mu_0}{\frac{\sigma}{\sqrt{n-1}}} t=n−1σxˉ−μ0
一般当n>30时,也可以用公式:
t = x ˉ − μ 0 σ n t=\frac{\bar{x}-\mu_0}{\frac{\sigma}{\sqrt{n}}} t=nσxˉ−μ0
举例:难产儿出生数n = 35,体重均值 x ˉ \bar{x} xˉ = 3.42, σ {\sigma} σ = 0.40,一般婴儿出生体重 μ 0 \mu_0 μ0= 3.30(大规模调查获得),问相同否?
1,建立假设: H 0 H_0 H0: μ = μ 0 \mu=\mu_0 μ=μ0(零假设); H 1 H_1 H1: μ ≠ μ 0 \mu\neq\mu_0 μ=μ0(备择假设),双侧检验检验水准:α=0.05
2,计算检验统计量:
t = x ˉ − μ 0 σ n = 3.42 − 3.3 0.4 35 = 1.77 t=\frac{\bar{x}-\mu_0}{\frac{\sigma}{\sqrt{n}}}=\frac{3.42-3.3}{\frac{0.4}{\sqrt{35}}}=1.77 t=nσxˉ−μ0=350.43.42−3.3=1.77
υ = n − 1 = 34 \upsilon=n-1=34 υ=n−1=34(其中 υ \upsilon υ是自由度)
3,查t界值表,确定P值:
t α / υ = t 0.025 / 34 = 2.032 > t = 1.77 t_{\alpha}/{\upsilon}=t_{ {0.025}/{34}}=2.032>t=1.77 tα/υ=t0.025/34=2.032>t=1.77
因此,p>0.05,按α=0.05水准,不拒绝 H 0 {H_0} H0.
上面的t检验的例子中,我们已知样本量,检验样本是否跟总体一致。那么,我们也可以假设样本跟总体一致,来反推临界样本量值。至于总体分布,如前所述,根据中心极限定理,0-1分布在样本足够多时服从正态分布,设总体 X X X服从 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),那么统计量 u = X ˉ − μ σ / n u=\frac{\bar{X}-\mu}{\sigma/\sqrt{n}} u=σ/nXˉ−μ服从标准正态分布 N ( 0 , 1 ) N(0,1) N(0,1).
t分布公式可以改写为:
n = t 2 σ 2 ( x ˉ − μ 0 ) 2 = t 2 σ 2 e r r 2 n=\frac{ {t^2}{\sigma^2}}{(\bar{x}-\mu_0)^2}=\frac{ {t^2}{\sigma^2}}{err^2} n=(xˉ−μ0)2t2σ2=err2t2σ2
其中, σ \sigma σ是样本标准差,err是误差。
试看下面的例子:
举例:某电商app中某个广告位最近1小时的行为数据120条,其中点击行为18条,样本点击率15%,请问该点击率是否能反映真实点击率?
1,假设置信度95%,边际误差3%(也就是点击率置信区间 [ 12 % , 18 % ] [12\%,18\%] [12%,18%]),查t分布表,当样本趋于无穷大时,t=1.96,也就是标准正态分布 N ( 0 , 1 ) N(0,1) N(0,1)分布的95%置信区间对应的x值。
2,带入最小样本公式:
n = t 2 σ 2 e r r 2 = 1.9 6 2 ∗ 0.15 ∗ ( 1 − 0.15 ) 0.0 3 2 ≈ 544 n=\frac{ {t^2}{\sigma^2}}{err^2}=\frac{ {1.96^2}*{0.15*(1-0.15)}}{0.03^2}\approx544 n=err2t2σ2=0.0321.962∗0.15∗(1−0.15)≈544
也就是至少需要544个样本,统计的点击率15%才比较可信,显然120个样本是不够的。
大样本时可以简单地用点估计来估计总体参数,比如上面电商的例子,如果样本量大于544个,我们就可以说该广告位的点击率15%是可靠的。但是,实际场景中,往往会遇到小样本问题。小样本的点估计不可信,区间估计又不能简单作为正态分布区间估计处理。
针对小样本问题,业界常用的是威尔逊置信区间:
p ‾ + z 2 2 n 1 + z 2 2 n ± z 1 + z 2 2 n p ‾ ( 1 − p ‾ ) n + z 2 4 n 2 \frac{\overline p +\frac{z^2}{2n}}{1+\frac{z^2}{2n}} \pm \frac{z}{1+\frac{z^2}{2n}} \sqrt{ \frac{\overline p(1- \overline p)}{n} + \frac{z^2}{4n^2}} 1+2nz2p+2nz2±1+2nz2znp(1−p)+4n2z2
其中, p ‾ \overline p p表示的是样本统计概率,n表示发生的总次数,z表示置信参数,置信度95%时等于1.96。以上面电商app点击率为例,其威尔逊置信区间为:[0.1634-0.0648, 0.1634+0.0648]. 实际我们一般按照下限进行估计,即0.0986,起到一定的打压作用。
参考知乎排序规则