小样本分析

来源:互联网 发布:php简历模板 编辑:程序博客网 时间:2024/04/28 03:10

近期无事,只好思考一下人生,打发一下时间。谁叫工作的最大用处就是不让自己无聊呢?

问题提出:经常有人说当样本到10万级别时就和全集统计结果基本一样了云云。鄙人愚钝,想问:第一这是怎么证明的,“基本一样”隐含的不是严格意义上的一样又意味着多少的差距?第二样本集只有几个几十个怎么办?请读者先恕我不顾经验之谈之罪;接下来让我们一起从数学出发,真正的面对以上问题。

 

小样本问题一直存在,只是被忽略:数据挖掘中面对小样本集合的情形并不少见。比如基于统计的自然语言处理中考虑一个词A的后面出现词B的概率时,如果词A比较偏僻,可能统计了千万篇文章也就那么五六次,这个时候算出的词B的概率可信吗。在协同过滤中,考虑两个人的相似性时,如果一个人只买了1个产品,另一个只买了2个,假设有一个相同,根据距离公式(常见的为向量余弦)算出相似度可信吗?我们往往都会采取一定的措施来优化(削弱)样本较小的时候计算的结果,常见的就是分母加上一个常量(样本小时,明显削弱原计算结果,样本大时则几乎不影响)。这是一种非常跛足的处理方法(实际中还是非常有效的),因为从数学上根本就没任何依据。

投石问路:我们先从简单问题开始。有一个袋子里面有2个球,随机拿出一个来,是红球(不放回),那么再拿出一个,这个球还是红球的概率是多少?请读者们仔细想想怎么回答这个概率问题。

恢复常规问题:上面一个问题有点奇怪,让人觉得无解,我稍作调整。有一个袋子里面有2N个球,随机取N个出来(不放回),都是红球,那么再拿一个出来还是红球的概率是多少?N取值1万。这回大家是否觉得问题太简单?

其实第一个问题和第二个问题属于同一类问题,之所以第一个看起来复杂,主要是因为我们很少问这个问题。而本文要说的就是小样本也是样本,也能代表全集的属性。

 

回归第一问题:下面我们将从数学的角度去认真对待第一个问题。

我们先把拿出来的红球放回去,让袋子里面有2个球。我们知道里面有一个红球。也就是只有如下两种情况:

A:两个红球。                            取出红球概率为 1            

B:一个红球,一个非红球。    取出红球概率为 0.5

假设AB发生的概率相等(因为我们对AB一无所知,最好假设概率相同);现在我们取出了一个红球,我们可以通过某个概率论里面的公式或者原理【具体是什么忘了,但是肯定没错】知道:A情况发生的概率为 1/(1+0.5)=o.6667,B发生的概率为0.5/(1+0.5)=0.3333。于是不难得到结论:再拿出红球的概率为0.6667。

仿真:看到这个结论,概率论90分以下的读者估计是接受不了的。我们可以编程做一个仿真实验。我们设定AB两个变量(代表两个球),以概率P0.5为A、B赋值为1(红色)0(非红色),0.5都为红色。从A、B中任意选取一个,如果值为1则对另一个量进行统计。当统计次数达到几万次时,看看1出现的概率的统计结果是多少。如果有心实现了仿真的朋友可以留言贴出你的概率结果,供其他朋友参考。

 

第一问题到这里就算结束了,下面就是一个抽象和引申到一般问题的过程,今天就先不提了,我要去买点草稿纸准备一下。一般性的双色问题:有M个球,取出N个,其中K个是红色,再取一个是红色的概率是多少?



0 1