Python社区  »  机器学习算法

轻松搞定机器学习中的概率统计知识

人工智能头条 • 1 年前 • 155 次点击  
大家好,我是 Evan,这次分享是我第一次在 GitChat 进行分享,我的主题是《机器学习中的概率统计知识》。在这次分享中,我会尽力地总结自己在学习和工作中学到用到的机器学习相关概率统计知识,我希望我的 Chat 能做到知识的全面、具体和深入,给大家启发,让大家受益~
这篇文章可能篇幅比较长,大家可以根据标题目录来阅读(同时可能有一些些错误,欢迎大家指出)。

一、机器学习为什么要使用概率

主要总结为两个原因:
  1. 我们借助概率论来解释分析,机器学习为什么是这样的,有什么依据,同时反过来借助概率论来推导出更多机器学习算法。很多人说机器学习是老中医、星座学,最主要的原因是,机器学习中的很多不可解释性,我们应用概率知识可以解释一部分,并不断地探索概率在机器学习算法中的应用,可以说概率论的发展推动机器学习算法的发展。
  2. 机器学习通常必须处理不确定量,有时也可能需要处理随机(非确定性的)量。不确定性和随机性可能来自多个方面。
不确定性有三种可能的来源。
  • 被建模系统内在的随机性:例如一个假想的纸牌游戏,在这个游戏中我们假设纸牌被真正混洗成了随机顺序。假如这个时候你要对这个游戏建模(预测抽的牌点数也好,预测怎么玩才会赢也罢),虽然牌的数量和所有牌有什么是确定的,但是若我们随机抽一张,这个牌是什么是随机的。这个时候就要使用概率去建模了。
  • 不完全观测:例如一个游戏节目的参与者被要求在三个门之间选择,并且会赢得放置在选中门后的奖品。其中两扇门通向山羊,第三扇门通向一辆汽车。选手的每个选择所导致的结果是确定的,但是站在选手的角度,结果是不确定的。在机器学习中也是这样,很多系统在预测的时候,是不确定的,这个时候我们就要用一个“软度量”即概率去描述它。
  • 不完全建模:假设我们制作了一个机器人,它可以准确地观察周围每一个对象的位置。在对这些对象将来的位置进行预测时,如果机器人采用的是离散化的空间,那么离散化的方法将使得机器人无法确定对象们的精确位置:因为每个对象都可能处于它被观测到的离散单元的任何一个角落。也就是说,当不完全建模时,我们不能明确的确定结果,这个时候的不确定,就需要概率来补充。

1.1 深入讨论概率在人工智能发展中的作用

背景:Yann LeCun 在 Cognitive Computational Neuroscience(CCN)2017 上发表了题为“为什么大脑能短时间内学习如此多东西?”(How does the brain learn so much so quickly?)的演讲。在演讲中他提到,他已经做好放弃概率论的准备(“I’m perfectly ready to throw probability theory under the bus.”,原话见 YouTube 视频)。他觉得因果关系才是理解世界的基石,才是通向人工智能捷径。
首先这是一个开放性的讨论问题,观点可能非常地多,下面主要聊聊我的观点。
先看概率论的直观局限性。概率论存在的问题与预测的有效性密切相关,请看下面的 GIF 动图:
enter image description here
从图中我们可以很明显看出,它们的分布不同,但右侧显示的统计测量的方法和结果却是相同的。换句话说,如果你的预测是基于概率分布所计算出的期望值(目前很多机器学习算法或者理论就是这样),那么你很容易就被骗了。
创建这些分布的方法和我们在深度学习中发现的渐进方法类似,主要使用摄动方法(Perturbation Method)和模拟退火(Simulated Annealing)。从这个角度看,如果你想骗过一个统计学家,那么深度学习方法会是一个非常方便的工具。
直观总结概率归纳法的问题:在于它是一种“不成熟的优化”。也就是说这种数学方法中考虑了不确定性。所以当我们使用这种数据方法来预测时,就受到了潜在的不确定性处理机制的影响。
然后,说说因果(我不做因果,但之前实验室有老师教授们主要做因果)。
我现在把因果关系作为物理现实和人类对现实的理解的根本基石,把概率关系看作是推动我们理解世界的因果机制的表层现象。—— Judea Pearl
我认为,概率论在机器学习应用得好,但其局限性是具体存在的,但推断因果关系也许是重要补充。文章论证可以参考:《“无人问津” 的贝叶斯网络之父 Judea Pearl 在 NIPS 2017 上到底报告了啥》。
当前机器学习的表现提升,依赖于大量参数的调优,而这一过程,是非常缓慢和低效的。类比达尔文演化。老鹰和蛇花了数百万年才演化出了独特的视觉系统。而人类在差不多一千年左右的时间里就发明了眼镜和望远镜。这是因为人类具备代表环境的心智表示,可以根据自己的意愿对这个心智表示进行操作,想象出和当前环境不同的假象环境——也就是说,人类会问“要是……会怎么样”的问题,包括“要是我这么做,会怎么样?”和“要是我当初那么做了,会怎么样?”
“要是……会怎么样”,背后其实隐含着因果推断。Pearl 将因果推断分为三个层次:关联(association)、介入(intervention)和反事实(counterfactual)。关联(association)、介入(intervention)都可以做到,但反事实需要推断因果关系,概率机器学习几乎不可能完成。
这一小段可以看做是一种讨论,大家可以辩证地看待,同时因果和概率统计、机器学习算法等也有密切关系,有兴趣的同学可以了解,因这篇文章重点不在此,故只是简述。

二、从连续及离散随机变量到概率分布

2.1 随机变量

随机变量可以随机地取不同值的变量。我们通常用小写字母来表示随机变量本身,而用带数字下标的小写字母来表示随机变量能够取到的值。例如,  和 都是随机变量  可能的取值。
对于向量值变量,我们会将随机变量写成 X ,它的一个值为 。就其本身而言,一个随机变量只是对可能的状态的描述;它必须伴随着一个概率分布来指定每个状态的可能性。
随机变量可以是离散的或者连续的。离散随机变量拥有有限或者可数无限多的状态。注意这些状态不一定非要是整数;它们也可能只是一些被命名的状态而没有数值。连续随机变量伴随着实数值。
注意:下面很多在知识点都会分离散和连续的分别讲述,但其实原理类似。
当随机变量是离散的,我们称是离散型随机变量,如果是连续的,我们会说是连续型随机变量。
举例:
比如,一次掷 20 个硬币,k 个硬币正面朝上,k 是随机变量,k 的取值只能是自然数 0、1、2…20,而不能无限取小数如 3.5、无理数如 √20,因而 k 是离散型随机变量。
公共汽车每 15 分钟一班,某人在站台等车时间 x 是个随机变量,x 的取值范围是 [0,15],它是一个区间,从理论上说在这个区间内可取任一实数如 3.5、√20 等,因而称这随机变量是连续型随机变量。

2.2 概率分布

给定某随机变量的取值范围,概率分布就是导致该随机事件出现的可能性。而从机器学习的角度来说的话,概率分布就是符合随机变量取值范围的某个对象属于某个类别或服从某种趋势的可能性。

三、独立性、条件独立性及马尔可夫性质

3.1 独立性

两个随机变量 x 和 y,如果它们的概率分布可以表示成两个因子的乘积形式,并且一个因子只包含 x 另一个因子只包含 y,我们就称这两个随机变量是 相互独立的:


3.2 条件独立性

如果关于 x 和 y 的条件概率分布对于 z 的每一个值都可以写成乘积的形式,那么这两个随机变量 x 和 y 在给定随机变量 z 时是条件独立的(conditionally independent):


我们可以采用一种简化形式来表示独立性和条件独立性:
x⊥y 表示 x 和 y 相互独立,x⊥y | z 表示 x 和 y 在给定 z 时条件独立。

3.3 马尔可夫性质(Markov property)

当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态。换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔可夫过程。
数学上,如果 为一个随机过程,则马尔可夫性质就是指:


举个例子:
假设天气预报一共有三种情况,下雨,刮风,晴天。 就是当你在 n-1 天的时候刮风,在 n 的时候下雨的概率有多少,这时候的概率只与 n-1 的时候的状态相关。

四、期望、方差、协方差、相关系数及四分位数

在概率论和统计学中,数学期望是试验中每次可能结果的概率乘以其结果的总和。它是最基本的数学特征之一,反映随机变量平均值的大小。
离散随机变量:假设 X 是一个离散随机变量,其可能的取值有 ,各个取值对应的概率取值为 ,则其数学期望被定义为:


举个栗子具体说明。
某城市有 10 万个家庭,没有孩子的家庭有 1000 个,有一个孩子的家庭有 9 万个,有两个孩子的家庭有 6000 个,有 3 个孩子的家庭有 3000 个。
则此城市中任一个家庭中孩子的数目是一个随机变量,记为 X。它可取值 0、1、2、3。
其中,X 取 0 的概率为 0.01,取 1 的概率为 0.9,取 2 的概率为 0.06,取 3 的概率为 0.03。
则它的数学期望是:
enter image description here
即此城市一个家庭平均有小孩 1.11 个。
连续型随机变量:
假设 X 是一个连续型随机变量,其概率密度函数为 ,则其数学期望被定义为:


方差 :
概率中,方差用来衡量随机变量与其数学期望之间的偏离程度;统计中的方差为样本方差,是各个样本数据分别与其平均数之差的平方和的平均数。数学表达式如下:


协方差:
在概率论和统计学中,协方差被用于衡量两个随机变量 X 和 Y 之间的总体误差。数学定义式为:


简单相关系数:
又叫相关系数或线性相关系数,一般用字母 r 表示,用来度量两个变量间的线性关系。定义式:
enter image description here
其中,Cov(X,Y) 为 X 与 Y 的协方差,Var[X] 为 X 的方差,Var[Y] 为 Y 的方差。
四分位数:
四分位数是将数据样本分成四个相等部分的值。利用四分位数,可以快速评估数据集的散布和中心趋势——这是了解数据的重要前期步骤。
具体来说,第一个四分位数(Q1)表示 25% 的数据小于等于此值;第二个四分位数(Q2)表示中位数,50% 的数据小于等于此值;第三个四分位数(Q3)表示 75% 的数据小于等于此值;最后,四分位间距表示第一个四分位数与第三个四分位数之间的距离(Q3-Q1)。因此,它跨越数据中间部分(即 50%)。

4.1 Python 实践均值、方差、协方差

import numpy as np

#均值
np.mean(arr)

#中位数
np.median(arr)

# 方差
np.var(arr)

# 协方差 
np.cov(arr1,arr2)[0,1]

#相关系数
np.corrcoef(arr1,arr2)

#众数
counts = np.bincount(arr)
np.argmax(counts)

# 求众数的第二种方式
from scipy import stats
stats.mode(arr)[0][0]
继续深入这部分的内容,可能应用最多的就是 Kaggle 等竞赛的数据分析了。具体例子这里先不举,贴个连接,大家可以看下他们是怎么利用上面的知识去分析数据和理解数据的:
https://www.kaggle.com/c/titanic/kernels

五、条件概率、联合概率、全概率公式及边缘概率

5.1 条件概率

其记号为 P(A|B),表示在给定条件 B 下 A 事件发生的概率。
举个例子:
P(第二次投硬币是正面 | 第一次投硬币是正面) 就是在“第一次投硬币是正面”时“第二次投硬币是正面”的概率。
不过,既然举了这个例子,那么就顺带问一下:
你以为 P(第二次投硬币是正面 | 第一次投硬币是正面) 的结果是多少呢?
1/4?
错。答案是 1/2,是不是很意外?
看完下面的两种情况你就明白了。
条件概率的两种情况如下。
  1. B 事件的结果不会影响到 A 事件的发生。如上面的例子,两次投币正面向上的概率不会相互干扰。所以 A 事件发生的概率 = A 事件单独发生的概率。记为:P(A|B) = P(A)。
  2. B 事件的结果会影响 A 事件的发生。如:若头天下雨,则第二天下雨的可能性会增大。即:A 事件在 B 事件之后发生的概率 > A 事件单独发生的概率。记为:P(A|B) > P(A)。

5.2 条件概率链式法则

任何多维随机变量的联合概率分布,都可以分解成只有一个变量的条件概率相乘的形式:


这个规则被称为概率的链式法则或者乘法法则。它可以直接从条件概率的定义中得到。例如,使用两次定义可以得到:
p(a,b,c)=p(a|b,c)p(b,c)
p(b,c)=p(b|
c)p(c)
p(a,b,c)=p(a|b,c)p(b|c)p(c)
联合概率
联合概率为两个事件同时发生的概率。记为:P(A and B) 或直接 P(AB)。
然后,因为两个事件的发生会有先后,所以联合概率可以进一步描述为:
“事件 A 发生的概率”和“事件 A 发生后,事件 B 发生的概率”。于是:P(A and B)= P(A)P(B|A)。
结合刚才“条件概率的两种情况”,可以得出:P(A and B) 根据不同的情况有如下两种结果。
  1. P(A and B) = P(A)P(B) —— A 和 B 的结果互不影响,即:P(B|A) = P(B)。
  2. P(A and B) = P(A)P(B|A) ——反之。
由于篇幅有限不能完全展示,
有兴趣的同学可以扫描二维码继续阅读

网上关于机器学习中的数学基础知识的文章非常混杂。有些文章推荐太过全面,比如推荐《MIT 线性代数》,《微积分入门》,《概率论入门》等系列课程和书籍,这对初学者非常的不友好。而有些文章又过于简略,机器学习虽说不用精通各类数学知识,但全面理解相关数学基础也是非常关键的,很多作者想一篇文章概括所有在机器学习中重要的数学基础是很不现实的。
为此,我想利用一场 Chat 对机器学习中基础的概率统计知识进行全面的梳理,并结合相关机器学习算法进行巩固。
本场 Chat 您将了解如下内容:
  1. 机器学习为什么要使用概率统计;
  2. 机器学习中涉及的主要概率统计知识基础;
  3. 结合机器学习算法讲述概率统计知识的应用。



点击「阅读原文」,也可以~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51018
 
155 次点击  
分享到微博