不懂概率(probability)是很难学好数据科学,这个章节中我们会学习概率,掌握实际应用,去掉很多学术上的东西。
对应我们的目的,我们应该把概率看成定量不确定性事件,这个事件是从全部事件中选择出来的,而不是把概率看成均值或者抛骰子,全部事件包括各种可能的输出,这些输出的子集就是一个事件。例如,“骰子抛出1个点”或者”骰子抛出的是偶数”。
我们把P(E)当成事件E发生的概率。
我们会使用概率原理建立模型;我们会使用概率原理评估模型;我们会使用概率原理到各处。
一旦你深入进去,就会进入到概率原理的哲学中,但是在这里我们只是把你带进概率的海洋中。
Dependence and Independence
大致上讲,我们说如果知道事件E发生能给我们一些信息来知道事件F是否发生,那么E和F就是相互依赖(Dependence),否则相反,他们就是独立(Independence)。
例如,如果我们抛一枚硬币2次,抛第一次硬币头朝上没有给我们任何信息说第二次抛硬币就一定头朝上或者朝下,这2个事件是独立的。另一方面,事件A:一次抛硬币头朝上,事件B:两次抛硬币头朝下(如果第1次抛硬币头朝上,那么2次抛硬币头朝下是不可能发生的)。事件A与事件B是相互依赖的。
数学上,如果事件E和事件F是独立的,那么2个事件同时发生的概率就是每个事件分别发生概率的乘积:
P(E,F) = P(E)P(F)
从上面的例子可知,第一次抛头朝上(事件A)的概率为1/2,两次抛头朝下(事件B)的概率为1/4,但是事件A与事件B同时发生的概率是0。
条件概率(Conditional Probability)
当事件E与事件F是独立的,我们定义:
P(E,F) = P(E)P(F)
如果他们不是独立的(并且F的概率不是0),那么我们定义“在F发生的条件下”,E发生的概率是:
P(E|F) = P(E,F)/P(F)
我们常常像这样重写:
P(E,F) = P(E|F)P(F)
当E和F是独立,你能这样写:
P(E|F) = P(E)
这个数学表达式的意思是F发生没有给我们任何附加的信息说是否E会发生。
有涉及一个家庭有2个孩子的例子:
1、每个孩子有相同的概率是男孩或者女孩;
2、第2个孩子的性别与第一个孩子的性别是互相独立的。
那么事件”no girls”的概率为1/4,事件”one girl,one boy”的概率为1/2,事件”two girls”的概率为1/4。
现在我们问在事件”the older child is a girl”(G)发生的情况下,事件”both chidren are girls”(B)的概率为:
P(B|G) = P(B,G)/P(G) = P(B)/p(G) = 1/2
因为事件B和事件G(2个都是女孩;第二个孩子是女孩)刚好是事件B。(一旦你知道2个孩子都是女孩,那么第二个孩子肯定是女孩)
我们也能问事件”at least one of the children is a girl”(L)发生的情况下,事件”both children are girls”发生的概率,很惊讶吧,答案和上面不同!
正如上面,事件B和事件L(2者同时发生)就是事件B:
P(B|L) = P(B,L)/P(L) = P(B)/P(L) = 1/3
怎样解释这个例子呢,如果你知道至少有一个孩子是女孩,那么家庭里有一个男孩一个女孩的概率是有2个女孩概率的2倍。
通过随机数产生这个例子:
def random_kid():
return random.choice(["boy", "girl"])
both_girls = 0
older_girl = 0
random.seed(0)
for _ in range(10000):
younger = random_kid()
older = random_kid()
if older == "girl":
older_girl += 1
if older == "girl" and younger == "girl":
both_girls += 1
if older == "girl" or younger == "girl":
either_girl += 1
print "P(both | older):", both_girls / older_girl # 0.514 ~ 1/2
print "P(both | either): ", both_girls / either_girl # 0.342 ~ 1/3
下一章节我们将学习贝叶斯原理、正态分布以及中心极限定理等。