相信你对变量这个概念并不陌生,数学方程式和编程代码里经常会用到变量。那什么是变量呢?我们在概率中常说的随机变量( random variable)和普通的变量(variable)又有什么不同呢?

这些问题其实很简单,我一说你就明白了。

在没有发生运算之前,普通变量的值并不会发生变化,也就是说,它可以取不同的值,但是一旦取值确定之后,它总会是一个固定的值,除非有新的运算操作。而随机变量的值并不固定,比如说,某个随机变量可能有 10% 的概率等于 10,有 20% 的概率等于 5,有 30% 的概率等于 28 等等。

我们上节说了,随机变量根据其取值是否连续,可分为离散型随机变量和连续型随机变量。举几个例子,抛硬币出现正反面的次数以及每周下雨的天数,都是离散的值,所以对应的随机变量为离散型。而汽车每小时行驶的速度和银行排队的时间,都是连续的值,对应的随机变量为连续型。换句话,从计算的角度来说,我们可以直接求和得出的,就是“离散的”,需要用积分计算的,就是“连续的”。

而随机变量的取值对应了随机现象的一种结果。正是结果的不确定性,才导致了随机变量取值的不确定性,于是我们就引入了概率。我们可以说,每种值是以一定的概率出现的。

概率分布

随机变量的每种取值的出现都遵从一定的可能性,把这个可能性用具体的数值表示出来就是概率。如果将随机变量所有可能出现的值,及其对应的概率都罗列出来,我们就能获得这个变量的概率分布。

我们拿最简单的抛硬币事件来看。从理论上说来,出现正面和反面的概率都是 50%(我们假设不存在硬币站立的情况)。

我们可以通过一小段 Python 代码,做个模拟实验,验证一下这个分布。

import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdef flip_coin(times):data_array = np.empty(times)weights_array = np.empty(times)weights_array.fill(1 / times)for i in range(0, times): #抛times次的硬币data_array[i] = random.randint(0, 1) #假设0表示正面,1表示反面data_frame = pd.DataFrame(data_array)data_frame.plot(kind = 'hist', legend = False) #获取正反面统计次数的直方图data_frame.plot(kind = 'hist', legend = False, weights = weights_array).set_ylabel("Probability") #获取正反面统计概率的直方图plt.show()flip_coin(10)

该代码随机生成若干次的 0 或 1(0 表示硬币正面朝上,1 表示硬币反面朝上)。下表是我生成 10 次的结果,其中正面 4 次,反面 6 次。

对应的正反面次数和概率直方图如下,而概率的直方图就表示了其概率分布。

通过修改 flip_coin 函数中的数字,我们可以修改抛硬币的次数。我又尝试“抛了”100 次,得到的结果是正面 47 次,反面 53 次。

接下来是抛 10000 次的结果,正面是 4982 次,反面是 5018 次。

你可能已经发现了,根据计算机模拟的结果所统计的概率,并不是精确的正反面各 50%。如果你运行同样的代码,也会发现类似的情况。这是因为理论上的概率,是基于无限次的实验。而我们这里实验的次数是有限的,是一种统计采样。

从 10 次、100 次到 10000 次,我们能看到,概率会变得越来越稳定,越来越趋近于正反各 50% 的分布。也就是说,统计的采样次数越多,越趋近于我们理论上的情况。因此,从这个统计实验我们可以看出,概率分布描述的其实就是随机变量的概率规律。

抛硬币正面次数、每周下雨天数这种离散型随机变量,对应的概率分布是很好理解的,但是对于连续型的随机变量,如何理解它们的概率分布呢?

如果我们把连续的值离散化,你会发现这个问题其实不难理解。就拿汽车每小时行驶的公里数来说吧。现实生活中我们通过汽车的仪表盘所读取速度,都是整数值,例如每小时 60 公里。也许比较高档的车会显示数字化的速度,带有小数位,但实际上汽车最精确的速度是一个无限位数的小数,是从 0 到最高公里数的一个任意数值。所以仪表盘所显示的数字,是将实际速度离散化处理之后的数字。除了仪表盘上的速度,汽车行驶在时间维度上也是连续的。类似地,我们还需要对时间进行离散化,比如每分钟查看仪表盘一次并读取速度值。

好的,理解了这些之后,我同样使用代码来随机一些行驶速度的数据。第一次模拟,假设我们手头上有一辆老爷车,它的仪表盘最小刻度是 5,也就是说,它只能显示 55、60、65 这种公里数。然后我们每 1 分钟采样一次(读一次仪表盘),那么 1 小时内我们将生成 60 个数据。示例代码如下:

def check_speed(time_gap, speed_gap, total_time, min_speed, max_speed):times = (int)(total_time / time_gap) #获取读取仪表盘的次数data_array = np.empty(times)weights_array = np.empty(times)weights_array.fill(1 / times)for i in range(0, times):if (speed_gap < 1):data_array[i] = random.random() * max_speed #随机生成一个最高速和最低速之间的速度else:data_array[i] = random.randint(0, max_speed / speed_gap) * speed_gap #随机生成一个最高速和最低速之间的速度,先除以speed_gap然后乘以speed_gap进行离散化data_frame = pd.DataFrame(data_array)bin_range = np.arange(0, 200, speed_gap)data_frame.plot(kind = 'hist', bins = bin_range, legend = False) #获取时速统计次数的直方图data_frame.plot(kind = 'hist', bins = bin_range, legend = False, weights = weights_array, ).set_ylabel("Probability") #获取时速统计概率的直方图plt.show()check_speed(1, 5, 60, 0, 200)

对生成的 60 个数据,我们统计其出现在每个速度区间的频次以及相应的概率。

我们将频次和概率以直方图的形式来展示。

第二次模拟,假设我们把车升级到当今的主流车,仪表盘的最小刻度已经到 1 了,然后时间维度上,我们细分到 0.1 分钟,那么 1 小时我们将生成 600 个数据。我们还可以进行第三次、第四次、甚至是无穷次的模拟,每次模拟的时候我们都将行驶速度的精度进一步提升、将时间间隔进一步缩小,让两者都趋近于 0,那么我们的模拟就从离散逐步趋近于连续的值了。

随机变量的概率分布由离散型的直方图变为了连续型的曲线图。通过下面的图,你可以看到这整个演变的过程。

当速度间隔和时间间隔(精度)逐步缩小的时候,直方图的分组(bin)就越小,所以你会看到 x 轴上的数据越浓密,y 轴上的数据越平滑。当间隔或精度无穷小并趋近于 0 的时候,y 轴的数据就会随着 x 轴连续变化而变化。

不过,当时间间隔小于数秒时,我们需要考虑随机产生的数据是否具备真实性,毕竟现实中汽车的速度不可能在数秒中从 0 到 200 公里,因此临近两次的采样数据不能相差太大。

上面我通过两个模拟实验,分别展示了离散型和连续型概率的分布。其实,人们在实际运用中,已经总结出了一些概率分布,我这里挑几个最常见的给你讲解。

首先我们来看看离散分布模型。常用的离散分布有伯努利分布、分类分布、二项分布、泊松分布等等,这里我重点给你介绍两个。

第一个是伯努利分布(Bernoulli Distribution),这是单个随机变量的分布,而且这个变量的取值只有两个,0 或 1。伯努利分布通过参数λ来控制这个变量为 1 的概率,我把具体的公式列出来,并画了张图便于你理解。

或者写作:

其中 x 只能为 0 或 1。

从这个图也可以看出,之前抛硬币的概率分布就属于伯努利分布。

另一个是分类分布(Categorical Distribution),也叫 Multinoulli 分布。它描述了一个具有 k 个不同状态的单个随机变量。这里的 k,是有限的数值,如果 k 为 2 的时候,那么分类分布就变成了伯努利分布。我把这个分布的公式和图解都列了出来。

离散型随机变量的状态数量是有限的,所以可以通过伯努利和分类分布来描述。可是对于连续型随机变量来说,状态是无穷多的,这时我们就需要连续分布模型。比较经典的连续分布有正态分布、均匀分布、指数分布、拉普拉斯分布等等。如果你只需要掌握一个的话,那肯定是正态分布。

这个分布可以近似表示日常生活中很多数据的分布,我们经常使用它进行机器学习的特征工程,对原始数据实施标准化,使得不同范围的数据具有可比性。所以,如果想要学习机器学习,一定要掌握正态分布。

正态分布(Normal Distribution),也叫高斯分布(Gaussian Distribution)。我把这个分布的公式列在这里:

在这个公式中有两个参数,μ表示均值,σ表示方差。看这个公式不太直观,我们来看一看对应的分布图。

从这个图可以看出,越靠近中心点μ,出现的概率越高,而随着渐渐远离μ,出现的概率先是加速下降,然后减速下降,直到趋近于 0。蓝色区域上的数字,表示了这个区域的面积,也就是数据取值在这个范围内的概率。例如,数据取值在 [-1σ, μ] 之间的概率为 34.1%。

现实中,很多数据分布都是近似于正态分布的。例如人类的身高体重。拿身高来说,大部分人都是接近平均值身高,偏离平均身高越远,相对应的人数越少。这也是为什么正态分布很常用的原因。

正态分布可以扩展到多元正态分布或多维正态分布(Multivariate Normal Distribution),不过最实用的还是一元标准正态分布,这种分布的μ为 0,σ为 1。在专栏后面的内容里,我会详细介绍如何使用这种分布,进行特征值的标准化。

期望值

理解了概率分布,你还需要了解期望值。为什么要了解期望值呢?

期望值,也叫数学期望,是每次随机结果的出现概率乘以其结果的总和。如果我们把每种结果的概率看作权重,那么期望值就是所有结果的加权平均值。它在我们的生活中十分常见,例如计算多个数值的平均值,其实就是求期望值,只不过我们假设每个数值出现的概率是相同的。

上一节,我提到如何使用概率来解决复杂度分析,通过概率的加权平均来获得平均时间复杂度,就是时间复杂度的期望值。当然,这个概念能帮助你解决的实际问题远不止这些。

在我看来,一个问题只要满足两个要素,我们就可以考虑使用期望值:

第一个要素,在这个问题中可能出现不同的情况,而且各种情况的出现满足了一定的概率分布;

第二个要素,每种情况都对应一个数值,这个数值代表了具体的应用含义。

如果你觉得这个还是过于抽象,我再回到本节的案例给你讲解。我先给你提个问题:给定了行驶速度的概率分布,如何计算汽车在 1 小时内每分钟行驶的平均速度?我们还从比较容易理解的离散型随机变量开始。

没错,这个问题的答案就是使用 1 小时所行驶的总距离除以 60 分钟。以之前的每分钟读取仪表盘、仪表盘最小刻度是 5 为例。概率分布如下图。

1 小时行驶的总距离为每种速度乘以用该速度行驶的时间的乘积之总和。

1 小时内每分钟平均的行驶速度为总距离除以 60 分钟。

将上述式子变化一下,我们可以得到:

你会发现,每分钟的平均值,就是每种速度的加权平均,而每种速度的权重就是其在概率分布中出现的概率。汽车可能按照不同的速度行驶,每种速度都有一个出现的概率,就是我前面提到的第一个要素。而每种速度所对应的每分钟多少公里这个数值,就是第二个要素。结合这两个要素,计算得到的平均值,也是汽车每分钟行驶速度的期望值。

那么,对于连续型的随机变量,这种期望值应该如何计算呢?我们需要使用下面的积分公式:

总结

通过这讲的内容,你对概率的基本知识应该有所了解。本讲中,我通过抛硬币和汽车驾驶的例子,讲述了概率论中一些最基本,也是最重要的概念,包括随机现象、随机变量、概率分布和期望值。

离散型的随机变量在计算机编程中的应用更为广泛。它可以和排列组合的思想结合起来,通过不同排列或组合的数量,计算每种情况出现的概率。如果把这种概率和每种情况下的复杂度数值结合起来,就可以计算复杂度的期望值。

另外,离散型概率也可以运用在机器学习的分类算法中。例如,对于文本进行分类时,我们可以通过离散型随机变量,表示每个分类或者每个单词出现的概率。当然,仅靠今天的内容,还不足以让我们打造一个分类算法。我们还需要了解联合概率、条件概率、贝叶斯定理等重要的概念。

上一节我介绍了随机现象、随机变量以及概率分布这些比较简单的概念。学习这些概念是为了做什么呢?其实就是为了更精确地描述我们生活中的现象,用数学的视角看世界,以此解决其中的问题。

但是实际生活中的现象并非都会像“投硬币”那样简单。有很多影响因素都会影响我们去描述这些现象。比如,看似很简单的“投硬币”,我们其实只是考虑最主要的情况,粗暴地把硬币出现的情况一分为二。比如说,不同类型的硬币是否会影响正反面的概率分布呢?站立的情况如何考虑呢?再比如说,在汽车速度的例子中,经过的交通路线,不同的路线是否会影响速度的概率分布呢?

一旦影响因素变多了,我们需要考虑的问题就多了。想要解决刚才那几个问题,更精确地描述这些现象,我们就需要理解几个新的概念,联合概率、条件概率以及贝叶斯法则。从数学的角度来说,这些概念能描述现实世界中更为复杂的现象,建立更精细的数学模型。比如,我们后面要讲的朴素贝叶斯算法就是建立在联合概率、条件概率和边缘概率之上的。所以,这一节的内容也非常重要,你一定要认真学习并且掌握。

联合概率、条件概率和边缘概率

最近,我一直在操心儿子的教育问题,所以一直在研究他班级的成绩单。为了弄清我儿子在班级上的成绩排名,我向老师要了张全班成绩的分布表。

这张表中有两个随机变量,一个是学生的性别,一个是分数区间。我们很容易就可以得出,这个班中男生的概率是 P(男生)=10/20=50%,90 分及以上的学生的概率是 P(90-100)=4/20=20%。那全班考了 90 分以上的男生的概率是多少呢?我们只要找到 90 分以上的男生人数,用这个人数除以全班总人数就行了,也就是 P(男生, 90-100)=2/20=10%。

你有没有发现,“90 分以上的男生”这个概率和之前单独求男生的概率或 90 分以上的概率不一样。之前只有一个决定因素,现在这个概率由性别和分数这两个随机变量同时决定。这种由多个随机变量决定的概率我们就叫联合概率,它的概率分布就是联合概率分布。随机变量 x 和 y 的联合概率使用 P(x, y) 表示。我算出了这个例子里所有的联合概率分布。

这里的例子只有两个随机变量,但是我们可以很容易扩展到更多的随机变量,比如再增加一个学科的变量。那么,我们就可以观测这样的数据:“班级上女生的数学考了 90 分及以上的概率是多少?”,其中女生是关于性别变量,数学是关于学科变量,而 90 分及以上是关于分数变量。

那么联合概率和单个随机变量的概率之间有什么关联呢?对于离散型随机变量,我们可以通过通过联合概率 P(x, y) 在 y 上求和,就可以得到 P(x)。对于连续型随机变量,我们可以通过联合概率 P(x, y) 在 y 上的积分,推导出概率 P(x)。这个时候,我们称 P(x) 为边缘概率。

除了边缘概率的推导,多个变量的联合概率和单个变量的概率之间还存在一个有趣的关系。在解释这个关系之前,让我先来介绍条件概率。

条件概率也是由多个随机变量决定,但是和联合概率不同的是,它计算了给定某个(或多个)随机变量的情况下,另一个(或多个)随机变量出现的概率,其概率分布叫做条件概率分布。给定随机变量 x,随机变量 y 的条件概率使用 P(y | x) 表示。

回到成绩分布的案例。我能理解在不同的阶段,男生和女生的成绩可能无法直接相比。所以我更关心的是,自己儿子和其他男生相比是否落后了。那么我的脑子里就产生了这样一个问题:“在男生中,考 90 分及以上的概率是多少?”。

仔细看,这个问题和前面几个有所不同,我只关心男生这个群体,所以解答应该是找到考了 90 分以上的男生之人数,然后用这个人数除以男生总人数(注意,不再是全部总人数)。根据上述表格的数据来计算,P(90-100|男生)= 2/10=20%。

解释清楚了条件概率,我就可以列出概率、条件概率和联合概率之间的“三角”关系了。简单的说,联合概率是条件概率和概率的乘积,采用通用的公式来表达就是:

同样的道理,我们也可以得到:

我们仍然可以使用成绩的案例,来验证这个公式。为了更清晰地表述这个问题,我们使用如下的符号:

|男, 90-100|表示考了 90 分以上的男生人数;

|男|表示男生人数;

|全班|表示全班人数。

男生中考了 90 分及以上的概率为 P(90-100 | 男生) = |男生, 90-100| / |男生|,全班中男生的概率为 P(男) = |男生| / |全班|。如果我们将 p(90-100 | 男生) 乘以 P(男) 会得到什么结果呢?

(|男, 90-100| / |男生|) * (|男生| / |全班|) = |男, 90-100| / |全班|

咦,这不就是全班中男生考了 90 分及以上的联合概率吗?其实,概率、条件概率和联合概率之间的这种“三角”关系,也是著名的贝叶斯定理的核心,下面我来详细解释什么是贝叶斯定理,以及它可以运用在什么场景之中。

贝叶斯定理

我们假设有这样一个场景,我想知道男生考了 90~100 分的概率有多少,来评估一下儿子在男生中算什么水平。可是老师出于隐私保护,并没有把全班数据的分布告诉我,她说道“我可以告诉你全班考 90~100 分的概率,以及 90~100 分中男生的概率,但是不能告诉你其他信息了”。这个时候,贝叶斯定理就可以帮上忙啦。

刚刚我们提到:

所以就有:

这就是非常经典的贝叶斯法则。为什么说经典呢?是因为它有很多应用的场景,比如朴素贝叶斯,你可以多多熟悉一下这个公式。在这个公式中,还包含了先验概率(Prior Probability)、似然函数(Likelihood)、边缘概率(Marginal Probability)和后验概率(Posterior Probability)的概念。

在这里面,我们把 P(x) 称为先验概率。之所以称为“先验”,是因为它是从数据资料统计得到的,不需要经过贝叶斯定理的推算。

P(y | x) 是给定 x 之后 y 出现的条件概率。在统计学中,我们也把 P(y | x) 写作似然函数 L(x | y)。在数学里,似然函数和概率是有区别的。概率是指已经知道模型的参数来预测结果,而似然函数是根据观测到的结果数据,来预估模型的参数。不过,当 y 值给定的时候,两者在数值上是相等的,在应用中我们可以不用细究。

另外,我们没有必要事先知道 P(y)。P(y) 可以通过联合概率 P(x, y) 计算边缘概率得来,而联合概率 P(x, y) 可以由 P(y|x) * P(x) 推出。针对离散型和连续型的边缘概率推导分别如下:

而 P(x|y) 是根据贝叶斯定理,通过先验概率 P(x)、似然函数 P(y | x) 和边缘概率 P(y) 推算而来,因此我们把它称作后验概率。

回到刚刚的案例,我可以通过这样的式子来计算男生考 90-100 分的概率:

P(90-100 | 男生) = (P(男生 | 90-100) * P(90 -100)) / P(男生)

我只需要数数看,班上男生有多少、总人数多少,就能算出 P(男生),或者也可以使用 P(男生 | 90-100) 和 P(90-100) 算出边缘概率 P(男生)。在加上之前,老师告诉我的 P(男生 | 90-100) 和 P(90 -100),就能推算出 P(90-100 | 男生) 了。这个例子就是通过先验概率,推导出后验概率,这就是贝叶斯定理神奇的地方,也是它最主要的应用场景。

随机变量之间的独立性

说到多个随机变量的联合和条件概率,你可能会产生一个问题:这些随机变量是否会相互影响呢?比如,性别和分数之间有怎样的关系?性别是否会影响分数的概率分布?在之前的成绩分布表中,我们可以得到:

p(90-100 | 男生) = 20%

p(90-100 | 女生) = 20%

p(90-100) = 20%

所以,p(90-100 | 男生) = p(90-100 | 女生) = p(90-100),也就是全班中考 90 分及以上的概率、男生中考 90 分及以上的概率、以及女生中考 90 分及以上的概率,这三者都是一样。以此类推到其他的分数区间,同样如此,那么,从这个数据上得出的结论是性别对考分的区间没有影响。反之,我们也可以看到 p(男生 | 90-100) = p(男生 | 80-90) = p(男生 | 70-80) = … = p(男生) = 50%,也就是说考分区间对性别没有影响。这种情况下我们就说性别和分数这两个随机变量是相互独立的。

相互独立会产生一些有趣的现象,刚刚我们提到:

另外,将 p(x | y) = p(x) 带入贝叶斯公式,就可以得出:

变量之间的独立性,可以帮我们简化计算。举个例子,假设有 6 个随机变量,而每个变量有 10 种可能的取值,那么计算它们的联合概率 p(x1, x2, x3, x4, x5, x6),在实际中是非常困难的一件事情。

根据排列,可能的联合取值,会达到 10 的 6 次方,也就是 100 万这么多。那么使用实际的数据进行统计时,我们也至少需要这个数量级的样本,否则的话很多联合概率分布的值就是 0,产生了数据稀疏的问题。但是,如果假设这些随机变量都是相互独立的,那么我们就可以将联合概率 p(x1, x2, x3, x4, x5, x6) 转换为 p(x1) * p(x2) * p(x3) * p(x4) * p(x5) * p(x6)。如此一来,我们只需要计算 p(x1) 到 p(x6 ) 就行了。

不过,班主任刚刚打电话给我,说之前的数据表格有点笔误,实际的分布应该是这样的:

你再推算一下,就会发现 p(分数 | 性别) = p(分数) 和 p(性别 | 分数) = p(性别) 并不成立,所以两者不再是相互独立的。所以下面这个式子就不再成立了,这点你在计算的时候需要注意。

在实际项目中,我们会假设多个随机变量是相互独立的,并基于这个假设大幅简化计算,降低对数据统计量的要求。虽然这个假设通常是不成立的,但是仍然可以帮助我们得到近似的解。相比较实现的可行性和求解的精确度,可行性更为重要。在讲解朴素贝叶斯方法中,我会充分利用这一点,从有限的训练样本中构建分类器。

总结

这一讲我继续讨论了概率分布相关的内容,不过这次的重点是多个随机变量相关的联合概率、条件概率、边缘概率。这里概念有点多,但是都很重要,因为这三者之间的推算关系,直接构成了贝叶斯定理的核心,所以你要花点时间理解并记住它们。

而贝叶斯定理定义了先验概率、后验概率和似然函数,后验概率和似然函数及先验概率的乘积成正比关系。此外,通过多个变量之间的独立性,我们可以简化联合概率的计算问题。贝叶斯定理和变量之间独立性的假设,对后面理解朴素贝叶斯算法很有帮助。

如果有一定数量的标注数据,那么通过统计的方法,我们可以很方便地得到先验概率和似然函数,然后推算出后验概率,最后依据后验概率来做预测。这整个过程符合监督式机器学习的模型训练和新数据预测这两个阶段,因此朴素贝叶斯算法被广泛运用在机器学习的分类问题中。下一节中,我们详细讨论这个算法。

概率基础:节选自极客时间专栏(程序员的数学基础),作者黄申。

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾2019年公众号文章精选适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4600+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

概率基础:随机变量、概率分布、期望值、联合概率、条件概率和贝叶斯法则,这些概率公式究竟能做什么?...相关推荐

  1. 人工智能数学基础--概率与统计1:随机试验、样本空间、事件、概率公理定理以及条件概率和贝叶斯法则

    随机试验 我们都非常熟悉在科学研究和工程中试验的重要性.试验对我们是有用的,因为我们可以假定,在非常接近的确定条件下进行固定的试验,基本上会得到相同的结果.在这样的环境中,我们可以控制那些对试验结果有 ...

  2. 似然函数,最大似然估计,以及与条件概率,贝叶斯概率区别简要说明

    目录 1. 似然(likehood)与最大似然估计 2. 条件概率(conditional probability),全概率(total probability),和贝叶斯概率(Bayes proba ...

  3. 先验概率,后验概率,似然概率,条件概率,贝叶斯,最大似然

    先验概率,后验概率,似然概率,条件概率,贝叶斯,最大似然 总是搞混,这里总结一下常规的叫法: 先验概率: 事件发生前的预判概率.可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出. ...

  4. 为机器学习爱好者推荐一本书《贝叶斯方法:概率编程与贝叶斯推断》

    本书的内容特色: 学习贝叶斯思维方式 ·理解计算机如何进行贝叶斯推断 ·利用PyMC Python库进行编程来实现贝叶斯分析 ·利用PyMC建模以及调试 ·测试模型的拟合优度 ·打开马尔科夫链蒙特卡洛 ...

  5. 《贝叶斯方法:概率编程与贝叶斯推断》一导读

    前 言 贝叶斯方法:概率编程与贝叶斯推断 贝叶斯方法是一种常用的推断方法,然而对读者来说它通常隐藏在乏味的数学分析章节背后.关于贝叶斯推断的书通常包含两到三章关于概率论的内容,然后才会阐述什么是贝叶斯 ...

  6. 【数据挖掘】贝叶斯分类 ( 贝叶斯分类器 | 贝叶斯推断 | 逆向概率 | 贝叶斯公式 | 贝叶斯公式推导 | 使用贝叶斯公式求逆向概率 )

    文章目录 I . 贝叶斯分类器 II . 贝叶斯推断 ( 逆向概率 ) III . 贝叶斯推断 应用场景 ( 垃圾邮件过滤 ) IV . 贝叶斯方法 由来 V . 贝叶斯方法 VI . 贝叶斯公式 V ...

  7. 贝叶斯法则求垄断者阻挠概率的动态博弈问题

    贝叶斯法则举例分析 引用贝叶斯法则的举例分析 第1步 计算P(B): 挑战者B不知道原垄断者A是属于高阻挠成本类型还是低阻挠成本类型,但B知道,如果A属于高阻挠成本类型,B进入市场时A进行阻挠的概率是 ...

  8. 机器学习理论之(1):概率分布,信息熵,朴素贝叶斯

    文章目录 概率 变量类型 Variable types 概率基础 边际概率 联合概率 条件概率 贝叶斯公式 Bayes,先验概率,后验概率 事件的独立和条件独立 独立的两个事件 条件独立的两个事件 不 ...

  9. 机器学习之贝叶斯网络(概率流动的影响性、有效迹(active--trail)、网络的构建)

      前面学习了朴素贝叶斯的原理,并且利用朴素贝叶斯原理对西瓜数据集3.0数据集进行了分类:朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器,今天我们更进一步,来探讨一下 ...

最新文章

  1. 单片机为什么不到一年时间涨这么多?
  2. 扯谈spring mvc之WebApplicationContext的继承关系
  3. 单元测试中使用mock最好不要使用easymock而应该使用powermock
  4. iOS逆向之深入解析如何Hook所有+load方法及Category的处理
  5. SOJ 2800_三角形
  6. 100c之29:求具有abcd= ( ab + cd )^2 性质的四位数
  7. nsqlookupd:高性能消息中间件 NSQ 解析
  8. 多目标跟踪MOT评价指标
  9. PowerDesigner教程系列(二)概念数据模型
  10. php文件流播放拖动,自定义实现可以播放暂停、进度拖拽、音量控制及全屏的H5播放器...
  11. tinymce vue 部分工具不显示_vue项目中使用tinymce编辑器的步骤详解
  12. win10进入bios步骤
  13. arduino nano + nrf24
  14. angular ngOnInit 与constructor
  15. 自勉,持续学习,docker入门
  16. c语言模拟鼠标键盘控制电脑
  17. 瞬联基于OpenStack的私有云解决方案
  18. 机器视觉工程师前景如何,计算机视觉工程师前景
  19. 细数软件工程各阶段必不可少的那些图
  20. 二叉树 | 20 周总结

热门文章

  1. 大学研究生期间写项目书技巧
  2. html语言与网页设计期末试卷,网页设计与制作期末考试试题及答案
  3. go mod module declares its path as: gtihub.com/xxx-xx but was required as:xx-xx
  4. ar1020 驱动移植 无效
  5. 2022春秋杯-被带走的机密文件
  6. HOG+SVM行人检测python实现
  7. 网络编程3:反应堆与百万链接
  8. vr技术属于计算机什么领域的应用,vr技术是什么_vr技术应用领域
  9. esp32 Arduino(九)u8g2图形库 IIC驱动OLED
  10. iOS(iphone)获取 目录 大小