我们所处的这个世界时刻在变化着,也就随时有不确定的事件发生,“永远不变的是变化”。但是人类对这个世界的认识需要有一个基本的“锚”或者说“锚定的方法”,否则我们就会充满不安全感。概率是其中一个非常重要的手段。通俗来说, 概率就是对不能完全确定的事物的一个相对确定描述,这也是机器学习中重要的理论基石。 本章围绕和机器学习相关的内容展开:概率、几率、期望、概率函数、概率密度函数、条件概率、贝叶斯公式等,如图1-1所示。包括定义、概念、现实意义和含义理解。
图 1-1
在统计学里,概率(Probability)和几率(Odds)是两个很基础的概念,用来描述某件事情发生的可能性,但是两者又有实质性区别。期望就更为重要了,本章我们先弄清基础理论中的基础概念。
概率描述的是某事件 A 发生的次数与所有事件发生的次数之比。 公式为
图 1-2
概率 P 是一个0~1的实数, P =0表示一定不会发生, P =1表示一定会发生。
几率(Odds)指的是事件发生的概率与事件不发生的概率之比。 公式为
以掷骰子为例,如图1-2所示。掷出点数是6的概率为
,出现其他点数的概率为
,根据几率的计算公式,可以得到掷出点数为6这一事件的几率为
更通俗的解释:平均来看,掷出6点的成功概率和失败概率之比为1:5。和概率论中的其他概念一样,几率也是在赌博中产生的一个概念。假设甲乙二人掷骰子对赌,若甲出1块钱赌掷6点,乙需要投注5块钱才能保证公平。
为什么这里要把这两个概念单独讲下呢,一是为了进行一个清晰的区分;二是因为几率涉及两个概率的比较,在类似逻辑回归等分类模型中扮演着重要的角色。
为了直观地比较两者之间的关系,表1-1展示了概率0.01~0.99与几率及Logit的数据对应关系。
表 1-1
注意
(1)当概率 P =0.5时,几率等于1(等分)。
(2)概率 P 的变化范围是[0,1],而几率的变化范围是[0,+∞)。
(3)为了让几率的值也能够以0为中心点,可以对几率取自然对数,也就是将概率 P 从范围[0,1]映射到(-∞,+∞)。 几率的对数称为 Logit ( 即逻辑回归模型中的 Logit, 逻辑回归模型将在第 2 部分详细讲解 )。
把表1-1的内容在笛卡儿坐标系中进行展示。可以直观地看到一条规律的曲线,而且以坐标(0.5,0)沿纵轴反对称,如图1-3和图1-4所示。
Logit的一个很重要的特性就是没有上限和下限——这为建模带来了极大的方便。 同时可以看到在 P =0.5时,Logit=0。我们将会在逻辑回归中学习Logit的使用。
图 1-3
图 1-4
喜欢玩德州扑克的朋友,在看一些教学视频时,经常听到一句话:“如果想在德州扑克中长期盈利,那么一定要选择+EV的决策”,这里的EV就是Expected Value,也就是期望值。
对于期望值可以简单理解为:在长期游戏过程中,某个行为平均每次带来的收益。
+EV也就是期望值大于0,说明这个行为在长期游戏中能获得收益。
-EV也就是期望值小于0,说明这个行为在长期游戏中损失筹码。
一个简单的EV计算公式如图1-5所示,即
其中,Win%为获胜概率;Win$为获胜时的收益(钱);Lost%为失败概率;Lost$为失败时的损失(钱)。
图 1-5
为简单起见,下面用抛硬币的例子进行说明。如果抛到人像面,将赢3元。如果抛到数字面,将损失1元。
利用上面的公式:EV=50%×3-50%×1=1,也就是说,长期情况下玩家在这个游戏中平均每次赢1元。 需要注意的是,这个EV值必须要用“长期”这个限定条件,不能单次计算。也就是说,期望值永远关注的是长期结果,而不是短期。
上面是用一个简单事件的两种可能性作为例子,那么如果这种事件有很多种可能性时,平均如何来表示呢?表示的方法就是每一种事件的概率乘以对应事件的结果,然后进行累加(加权平均)。
比如拿掷骰子来说,如果掷出几点就可以赢几块钱的话,因为每个点被掷出的概率是1/6,所以最终的数学期望是:
,在掷了无数次后,每一次投掷收到的钱平均是3.5元,最终总的钱数是3.5×次数。
如果 x 是连续变量,那么把∑变成积分符号∫即可。
总结一下: 期望值是对随机变量(随机变量的定义见1.2节内容)中心位置的一种度量。 是试验中每次可能的结果乘以其结果的概率的总和。期望值亦是随机变量概率的平均值。特别需要记住的是“长期”这个条件。
期望值会用在很多地方,比如信息论里面的信息熵(见第3讲)等。
在很多文章或者专业书籍中,经常可以看到几个术语:随机变量、概率函数、概率分布、概率分布函数、概率密度函数,它们又有自己不同的符号,非常容易混淆。下面就讲解几个概念的区别。
一般用 X 代表一个变量,那么普通变量就是当 X 确定是某一性质或者事件时,其对应的结果/变化就是确定的,而随机变量就是这个对应的结果是不确定的,也就是存在一定的不确定性。
例如,100个人从1开始编号,一直到100,每个人分配一个编号,这个编号就是 X ,然后进行分组,分为10组,分组的规则可以是:
(1)按照编号的尾数进行分组。
(2)按照抽签的方式进行分组。
可以看到,第一个规则(函数)在 X 确定后,对应的结果(组别)也是确定的,例如,33号就必定分配到第3组。这个情况下, X 是一个普通变量。第二个规则在 X 确定后,对应的分组结果是不确定的,第1组到第10组都有可能,而且概率都是1/10,也就是说这时 X 是一个随机变量。
如果微积分是研究变量的数学,那么概率论与数理统计是研究随机变量的数学
。
如果随机变量的值可以逐个列举出来,则为离散型随机变量。如果随机变量
X
的取值无法逐个列举,则为连续型变量
。
比如说一个骰子有几个面,这个面是可以列举出来的,如1~6。如果要问人类的身高有多少,只能说出一个范围,而无法逐个列举出来(不能限定为整数,整数只是为了方便,不是完全精确的身高)。所以骰子的面值是一个离散型随机变量,而人类的身高是一个连续型随机变量。
研究一个随机变量,不只是要看它能取哪些值,更重要的是它取各种值的概率如何
。
比如针对一个骰子,不仅需要看每一次骰子掷出来的点数,还要看在无数次投掷骰子之后,这些点数在所有掷出来的点数中的占比,也就是概率。如果能够用一个函数表示,那么这个函数就是概率函数:
上式中的 X 表示随机变量,也称为自变量, p i 表示因变量,整个函数就是骰子的概率函数。确切地说,这个是离散型随机变量的概率函数。因为连续型随机变量是无法穷尽取值的,所以需要用另外的表示方法,也就是后面要讲的概率密度函数(PDF)。
分布这个词一般出现在“××民族大约有多少人,分布在×××区域,其中百分之多少的人在×××地方,其余百分之多少分布在×××地方”,图1-6为浙江省杭州市每100人的人口分布图。分布包含一个空间的概念,那么对应到概率分布,表示的是以下两种很重要的信息。
图 1-6
(1)可以得到哪些值。
(2)得到这些值的概率分别是多少(对离散型随机变量而言),对连续型随机变量则是得到给定区间值的概率。
比如,对于掷骰子来说,其概率分布如表1-2所示。
表 1-2
表1-2中的 X 代表点数随机变量的取值, p i 是每个 X 相应取值下的概率取值。
知道了概率分布,如何用函数表示出来呢?这就要用到概率分布函数。
下面是离散型随机变量概率分布函数的定义。
设离散型随机变量 X 的分布为
则有:
由于 F ( x )是取小于等于 x 的诸多 x k 值的概率之和,故又称 F ( x )为累积概率函数。
大家看到上面出现一个
F
(
x
)函数,而且是“累积概率函数”,它是
X
≤
x
的一个概率之和,对于骰子的概率分布来说
。所以概率分布函数就是累积概率函数。
因为连续型随机变量无法把 X 的值全部列举出来,有点类似一个物理实体一样,是连在一起的一团东西。表示一个物体的量有质量、体积和密度,通过比较密度就可以知道物体的差异,所以对于连续型随机变量的概率函数,又称为概率密度函数。那么知道了概率密度函数,在一定取值范围内对其进行累加,是不是就是概率分布函数呢?确实是这样,类似于知道了密度,对其进行一定的积分就可以求出质量;知道了质量,对其进行一定的微分就可以知道密度。相应地,知道了概率密度函数(概率函数),针对某个 X 的范围求积,就可以得到这个范围的概率分布函数,知道了概率分布函数,针对某个 X 值求导,就可以知道这个值对应的概率密度函数。
理解了上面的这段话,再来看专业的解释,就会好懂了。
《概率论与数理统计》中的定义:
“密度函数”这个名字的由来可解释如下,取定一个点
x
,按照分布函数的定义,事件{
x
<
X
≤
x
+
h
}的概率(
h
是大于0的常数)应为
F
(
x
+
h
)-
F
(
x
),所以,比值[
F
(
x
+
h
)-
F
(
x
)]/
h
可以解释为在
x
点附近
h
这么长的区间(
x
,
x
+
h
)内,单位长所占有的概率。令
h
→0,则这个比值的极限,即
F′
(
x
)=
f
(
x
),也就是
x
点处(无穷小区段内)单位长的概率。或者说,它反映了概率在
x
点处的“密集程度”
。你可以设想一条极细的无穷长的金属杆,总质量为1,概率密度相当于杆上各点的质量密度。
结合图1-7我们可能更容易理解,上面的 f ( x )就是概率密度函数,而 F ( x )就是概率分布函数,两者之间的关系是:
图1-7(a)是 F ( x )连续型随机变量的概率分布函数,图1-7(b)是 f ( x )连续型随机变量的概率密度函数,它们之间的关系是,概率密度函数是分布函数的导函数。
图1-7的两张图放在一起对比,就会发现,如果用图1-7(b)中的面积来表示概率,通过图形就能很清楚地看出,哪些取值的概率更大,是不是看起来特别直观!所以 在表示连续型随机变量的概率时 , 用 f ( x ) 这个概率密度函数来表示 , 是非常有道理的 , 因为它可以更容易看到哪些值的概率更大或者更小 。而图1-7(a)的概率分布函数 F ( x )却无法直观地看到这个特征。
机器学习中有很多基于概率的应用,使用比较多的是概率函数以及概率密度函数,所以理清上面的几个概念,对于理解算法是相当有益处的。
图 1-7
如果我们能够得到世界上所有事物(事件和物体)的联合概率或者条件概率,那么决策就容易多了。贝叶斯公式体现的就是这两者的关系。下面的内容主要解释这个关系是如何建立的。
很多人会觉得条件概率和联合概率非常初级,地球人都应该知道。但是在实际计算中,却经常算不对或者搞混掉。所以在这里通过具体的例子来说明一下,大家也可以根据例子先自己进行计算,然后看看是否和我们的理解一致。
图 1-8
如图1-8所示,有4个苹果,两种口感。我们不纠结苹果的颜色的深浅,简单分成红和青两种颜色,口感也简单分成好吃和不好吃两种。把 x 设置为颜色, y 设置为口感,那么现在就有了如下样本:
请计算 P ( x , y )和 P ( y | x )的值。
由于样本数据比较少,所以我们通过手工来计算这两个概率值。
先计算联合概率,也就是 P ( x , y ),其结果如表1-3所示。
表 1-3
这个估计大家都不会计算错, P ( x , y )是计算指定 x , y 同时出现的次数在总数据中的比例。比如取 x =1, y =0来计算,会发现(1,0)在4个苹果中出现了2次,所以其结果是2/4。其他取值也如此计算即可。
下面计算条件概率 P ( y | x ),也就是在某个 x 值下,出现不同 y 的次数在 x 值相同的总次数中的比例。具体的计算结果如表1-4所示。
表 1-4
你计算对了吗?
因为对于 P ( y | x )来说,譬如我们取 y =0, x =1,即计算 P ( y =0| x =1),在 x =1时,在所有样本中出现了3次,在这3个样本中, y =0是两个,所以 P ( y =0| x =1)=2/3。
现在我们来看一看 P ( x , y )和 P ( y | x )有什么关系?
根据概率论知识,我们知道 P ( x , y )= P ( y | x ) P ( x ),也就是说( x , y )的联合概率是在 x 单独出现的概率基础上,再乘以在 x 出现的情况下出现 y 的概率。可以用表1-3和表1-4的值进行验证。
同样地, P ( x , y )= P ( x | y ) P ( y ),也就是说:
变换一下格式:
上面的这个公式,就叫作贝叶斯公式。其推导过程非常简单,公式推导不是主要目的,而是要明白这个公式的现实含义是什么。
提示
联合概率虽然可以体现数据相对最真实的情况,但是在变量比较多时,其数量就会大幅上升,譬如 m 个变量,每个变量有 n 1 , n 2 , … , n m 种不同的值,其组合会达到 n 1 × n 2 × … × n m 种,导致计算量大幅上升, 而如果用条件变量来计算的话,计算量相对就会少很多,因此有时候可以通过计算条件概率来简洁地获得联合概率的效果。
18世纪英国业余数学家托马斯·贝叶斯(Thomas Bayes,1702—1761)提出过一种看上去似乎显而易见的观点:“ 用客观的新信息更新我们最初关于某个事物的信念后,我们就会得到一个新的、改进了的信念。 ”它的数学原理很容易理解,简单说就是:如果你看到一个人总是做一些好事,则会推断那个人多半会是一个好人。当你不能准确地知悉一个事物的本质时,可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。用数学语言表达就是:支持某项属性的事件发生得越多,则该属性成立的可能性就越大。与其他统计学方法不同,贝叶斯方法建立在主观判断的基础上,你可以先估计一个值,然后根据客观事实不断修正。
1774年,法国数学家皮埃尔-西蒙·拉普拉斯(Pierre-Simon Laplace,1749—1827)独立地再次发现了贝叶斯公式。拉普拉斯给出了我们现在所用的贝叶斯公式的表达,如图1-9所示。
图 1-9
该公式表示在 x 事件发生的条件下 y 事件发生的条件概率,等于 y 事件发生条件下 x 事件发生的条件概率乘以 y 事件的概率,再除以 x 事件发生的概率。公式中, p ( x ) p ( y )也叫作已有的经验(先验概率), p ( x | y )称为可能性(似然), p ( y | x )叫作更新的经验(后验概率)。严格地讲,贝叶斯公式至少应被称为“贝叶斯 - 拉普拉斯公式”。
把图1-9所示的公式换两个参数后的表示形式如下:
其中 m 表示数据, θ 表示某个分布的参数,意思就是,我们在未获取数据之前先假设数据的概率为某一分布,之后随着数据的不断累积,先验概率的影响越来越小,数据比重则越来越大。给定先验概率的目的在于,数据比较少的情况下,统计可能会出现偏差,而先验概率可以纠正这种偏差。
长期以来,贝叶斯方法虽然没有得到主流学术界的认可,但其实经常会不自觉地应用它来进行决策,而且还非常有效。比如炮兵在射击时会使用贝叶斯方法进行瞄准。炮弹与子弹不同,它的飞行轨迹是抛物线,瞄准的难度更大,因此炮兵会先根据计算和经验把发射角调整到一个可能命中的瞄准角度(先验概率),然后再根据炮弹的实际落点进行调整(后验概率),经过2、3次射击和调整后炮弹就能够命中目标了,如图1-10所示。
在日常生活中,我们也常使用贝叶斯方法进行决策。比如在一个陌生的地方找餐馆吃饭,因为之前不了解哪家餐馆好,似乎只能随机选择,但实际上并非如此,我们会根据贝叶斯方法,利用以往积累的经验来提供判断的线索。经验告诉我们,通常那些坐满了客人的餐馆的食物要更美味些,而客人寥寥的餐馆,食物可能不怎么样还可能会被宰。这样,就常常通过观察餐厅的上座率来选择餐馆就餐。这就是根据先验知识进行的主观判断。在吃过以后对这个餐馆有了更多实际的了解,以后再选择时就更加容易了。
图 1-10
所以说, 在认识事物不全面的情况下或者说认知缺陷很大的情况下,贝叶斯方法是一种很好的利用经验帮助人们做出更合理判断的方法。 “大胆假设,小心求证”“不断试错,快速迭代”,这些都可以看成是贝叶斯公式的不同表述。贝叶斯公式更多的是体现一种思想,至于公式中是乘号还是加号,其实并不那么重要了。
在机器学习中,我们经常用贝叶斯公式来解决分类问题,具体例子见第3部分“垃圾邮件判断”案例。
贝叶斯公式不仅在自然科学领域掀起革命,其应用范围也延伸到了关于人类行为和人类大脑活动的研究领域。
这一讲中对概率、几率、期望、概率分布函数、概率密度函数,以及条件概率、联合概率特别是贝叶斯公式进行了了解,理解基础概念是迈入机器学习的必要条件。