@TeachTheMachine: 机器学习概率(7天迷你课程)
摘要
这是一个使用Python的7天速成课程,专为开发者设计,旨在学习机器学习的核心概率概念,以加深对机器学习的理解。
查看缓存全文
缓存时间: 2026/08/22 07:23
概率与机器学习(7天迷你课程)
https://t.co/Q4XwEWybg7
概率与机器学习(7天迷你课程) - MachineLearningMastery.com
来源:https://machinelearningmastery.com/probability-for-machine-learning-7-day-mini-course/
机器学习概率速成课程。 在7天内掌握机器学习中使用的概率知识。
概率是数学的一个分支,被普遍认为是机器学习的基石。
尽管概率是一个庞大的领域,包含许多深奥的理论和发现,但机器学习从业者需要该领域的基础工具和表示法。在扎实理解概率是什么的基础上,我们才能专注于其中良好或相关的部分。
在这个速成课程中,你将学习如何在七天内开始并自信地理解和使用Python实现机器学习中的概率方法。
这是一篇重要且内容丰富的文章。你可能想要收藏它。
快速启动你的项目,请参考我的新书《概率与机器学习》(https://machinelearningmastery.com/probability-for-machine-learning/),其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
- 2020年1月更新:已根据scikit-learn v0.22 API的更改进行了更新。
概率与机器学习(7天迷你课程)
概率与机器学习(7天迷你课程) 图片由Percita (https://www.flickr.com/photos/dittmars/35837926013/) 提供,部分权利保留。
这个速成课程适合谁?
在我们开始之前,让我们确保你找对了地方。
这个课程面向可能了解一些应用机器学习的开发者。也许你知道如何使用流行工具端到端地解决预测建模问题,或者至少了解主要步骤。
本课程的课程假设你具备一些基础,例如:
- 你了解基础的Python编程。
- 你可能了解一些用于数组操作的NumPy基础。
- 你希望学习概率,以加深对机器学习的理解和应用。
你不需要是:
- 数学天才!
- 机器学习专家!
这个速成课程将带你从一个了解一点机器学习的开发者,成长为一个能够掌握概率方法基础的开发者。
注意:本速成课程假设你已经有一个可用的Python3 SciPy环境,并且至少安装了NumPy。如果你需要环境配置方面的帮助,可以参考这里的分步教程:
- 如何使用Anaconda为机器学习设置Python环境 (https://machinelearningmastery.com/setup-python-environment-machine-learning-deep-learning-anaconda/)
速成课程概述
这个速成课程分为七个部分。
你可以每天学习一课(推荐),或者在一天内完成所有课程(高强度)。这真的取决于你有多少时间以及你的热情程度。
以下是七门课程的列表,将帮助你开始使用Python进行机器学习的概率学习并投入实践:
- 第01课:概率与机器学习
- 第02课:三种概率类型
- 第03课:概率分布
- 第04课:朴素贝叶斯分类器
- 第05课:熵与交叉熵
- 第06课:朴素分类器
- 第07课:概率评分
每节课可能花费你60秒到30分钟不等。慢慢来,按照自己的节奏完成课程。提出问题,甚至可以在下面的评论中发布结果。
课程期望你主动学习如何操作。我会给你提示,但每节课的部分目的是迫使你学习去哪里寻找关于统计方法、NumPy API和Python中最佳工具的帮助。(提示:所有答案都直接在这篇博客上;使用搜索框。)
在评论中发布你的结果;我会为你加油!
坚持住,别放弃。
注意:这只是一个速成课程。要获得更详细和完整的教程,请参阅我关于该主题的书籍“概率与机器学习 (https://machinelearningmastery.com/probability-for-machine-learning/)”。
想学习机器学习概率
现在就参加我的免费7天电子邮件速成课程(附带示例代码)。
点击注册,并获取课程免费PDF电子书版本。
第01课:概率与机器学习
在本课中,你将了解为什么机器学习从业者应该学习概率以提高他们的技能和能力。
概率是量化不确定性的数学领域。
机器学习是关于从不确定的数据中开发预测模型。不确定性意味着与不完美或不完整的信息打交道。
不确定性是机器学习领域的基础,但它也是初学者,尤其是来自开发者背景的人,遇到困难最多的方面之一。
机器学习中的不确定性有三个主要来源:
- 观测中的噪声,例如测量误差和随机噪声。
- 领域覆盖不完整,例如你永远无法观察到所有数据。
- 问题的模型不完美,例如所有模型都有错误,但有些是有用的。
应用机器学习中的不确定性是通过概率来管理的。
- 概率和统计帮助我们理解和量化我们从领域观测中变量的期望值和变异性。
- 概率帮助理解和量化领域内观测的期望分布和密度。
- 概率帮助理解和量化我们的预测模型应用于新数据时的期望能力和性能方差。
这是机器学习的基石。在此之上,我们可能需要模型来预测概率,我们可能使用概率来开发预测模型(例如朴素贝叶斯),我们可能使用概率框架来训练预测模型(例如最大似然估计)。
你的任务
对于本课,你必须列出三个你想在机器学习背景下学习概率的原因。
这些可能与上述一些原因相关,也可能是你个人的动机。
在下面的评论中发布你的答案。我很想看看你想到了什么。
在下一课中,你将了解三种不同类型的概率以及如何计算它们。
第02课:三种概率类型
在本课中,你将了解随机变量之间联合、边际和条件概率的温和介绍。
概率量化事件的可能性。
具体来说,它量化了一个随机变量的特定结果的可能性,例如抛硬币、掷骰子或从一副牌中抽一张牌。
我们可以讨论两个事件的概率:变量X的事件A和变量Y的事件B的概率,简写为X=A和Y=B,并且这两个变量以某种方式相关或依赖。
因此,我们可能需要考虑三种主要类型的概率。
联合概率
我们可能对两个同时发生的事件的概率感兴趣,比如两个不同随机变量的结果。
例如,事件A和事件B的联合概率正式记为:
- P(A and B)
事件A和事件B的联合概率计算为给定事件B的事件A的概率乘以事件B的概率。
这可以正式表述如下:
- P(A and B) = P(A given B) * P(B)
边际概率
我们可能对某个随机变量的事件概率感兴趣,而不考虑另一个随机变量的结果。
边际概率没有特殊表示法;它只是对第一个变量的给定固定事件,对第二个变量所有事件的所有概率求和或求并。
- P(X=A) = 对所有 y 求和 P(X=A, Y=yi)
条件概率
我们可能对给定另一个事件发生的情况下的事件概率感兴趣。
例如,给定事件B的事件A的条件概率正式记为:
- P(A given B)
给定事件B的事件A的条件概率可以使用事件的联合概率计算如下:
- P(A given B) = P(A and B) / P(B)
你的任务
对于本课,你必须练习计算联合、边际和条件概率。
例如,如果一个家庭有两个孩子,且最大的是男孩,那么这个家庭有两个儿子的概率是多少?这被称为“男孩或女孩问题 (https://en.wikipedia.org/wiki/Boy_or_Girl_paradox)”,是练习概率的许多常见趣味问题之一。
在下面的评论中发布你的答案。我很想看看你想到了什么。
在下一课中,你将了解随机变量的概率分布。
第03课:概率分布
在本课中,你将了解概率分布的温和介绍。
在概率中,一个随机变量可以取多个可能的值,例如来自状态空间的事件。随机变量的特定值或值集可以被分配一个概率。
随机变量有两大类。
- 离散随机变量。值从有限的状态集合中抽取。
- 连续随机变量。值从实数值范围中抽取。
离散随机变量有一个有限的状态集;例如,汽车的颜色。连续随机变量有一个数值范围;例如,人的身高。
概率分布是对随机变量值的概率的总结。
离散概率分布
离散概率分布总结了离散随机变量的概率。
一些著名的离散概率分布包括:
- 泊松分布。
- 伯努利分布和二项分布。
- 多项分布和多项分布。
连续概率分布
连续概率分布总结了连续随机变量的概率。
一些著名的连续概率分布包括:
- 正态分布或高斯分布。
- 指数分布。
- 帕累托分布。
随机采样高斯分布
我们可以定义一个均值为50、标准差为5的分布,并从该分布中随机抽样。我们可以使用NumPy的normal()函数(https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html)实现这一点。
下面的示例从该分布中抽取并打印10个数字。
从正态分布采样
from numpy.random import normal
定义分布
mu = 50
sigma = 5
n = 10
生成样本
sample = normal(mu, sigma, n)
print(sample)
运行示例会从定义的正态分布中打印出10个随机抽取的数字。
你的任务
对于本课,你必须开发一个示例,从不同的连续或离散概率分布函数中采样。
作为加分项,你可以将给定分布的值绘制在x轴上,概率绘制在y轴上,以显示你选择的概率分布函数的密度。
在下面的评论中发布你的答案。我很想看看你想到了什么。
在下一课中,你将了解朴素贝叶斯分类器。
第04课:朴素贝叶斯分类器
在本课中,你将了解用于分类预测建模的朴素贝叶斯算法。
在机器学习中,我们经常关注一个预测建模问题,即我们希望为给定的观测预测一个类别标签。
解决这个问题的一种方法是开发概率模型。从概率的角度来看,我们感兴趣的是估计给定观测的类别标签的条件概率,或者给定输入数据X的类别y的概率。
- P(y | X)
贝叶斯定理提供了一种替代且有原则的方法来计算条件概率,它使用所需条件概率的逆,通常更容易计算。
贝叶斯定理的简单计算形式如下:
- P(A|B) = P(B|A) * P(A) / P(B)
其中,我们感兴趣计算的概率*P(A|B)称为后验概率,事件P(A)*的边际概率称为先验概率。
直接应用贝叶斯定理进行分类变得难以处理,尤其是当变量或特征(n)的数量增加时。相反,我们可以简化计算并假设每个输入变量是独立的。尽管很极端,但这种更简单的计算通常能提供非常好的性能,即使输入变量高度依赖。
我们可以通过假设每个单独输入变量的概率分布,并计算每个特定输入值属于每个类别的概率,并将结果相乘以给出用于选择最可能类别的分数来实现这一点。
- P(yi | x1, x2, …, xn) = P(x1|y1) * P(x2|y1) * … P(xn|y1) * P(yi)
如果我们假设每个输入变量服从高斯分布,scikit-learn库提供了该算法的高效实现。
要使用scikit-learn朴素贝叶斯模型,首先定义模型,然后在训练数据集上进行拟合。一旦拟合,可以通过*predict_proba()函数预测概率,并通过predict()*函数直接预测类别标签。
下面列出了将高斯朴素贝叶斯模型(GaussianNB (https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html))拟合到测试数据集的完整示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
高斯朴素贝叶斯示例
from sklearn.datasets import make_blobs from sklearn.naive_bayes import GaussianNB
生成二维分类数据集
X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)
定义模型
model = GaussianNB()
拟合模型
model.fit(X, y)
选择单个样本
Xsample, ysample = [X[0]], y[0]
进行概率预测
yhat_prob = model.predict_proba(Xsample) print(‘预测概率:’, yhat_prob)
进行分类预测
yhat_class = model.predict(Xsample) print(‘预测类别:’, yhat_class) print(‘真实值:y=%d’ % ysample)
运行示例会在训练数据集上拟合模型,然后对我们在前面示例中使用的第一个样本进行预测。
你的任务
对于本课,你必须运行示例并报告结果。
作为加分项,尝试在真实的分类数据集上使用该算法,例如流行的基于花朵测量分类鸢尾花物种 (https://github.com/jbrownlee/Datasets/blob/master/iris.csv) 的分类问题。
在下面的评论中发布你的答案。我很想看看你想到了什么。
在下一课中,你将了解熵和交叉熵分数。
相似文章
@KirkDBorne: 机器学习之前 [第三卷] - 人工智能的概率与统计:数据科学与人工智能的基础数学…
这篇文章推广了《机器学习之前 第三卷:人工智能的概率与统计》一书,该书通过 Antwerp Diamond Heist 的叙事来教授人工智能的统计概念,如贝叶斯推理和马尔可夫链,并附有实用的代码示例。
@techNmak: 我想推荐一个对任何学习机器学习的人都真正有价值的资源:ML-From-Scratch…
一个GitHub仓库,使用纯NumPy从零实现基础机器学习算法,旨在通过强调清晰度而非性能来帮助学习者理解算法的内部工作原理。它涵盖了监督学习、无监督学习、深度学习以及强化学习主题。
@DanKornas: 别再从随机的标签页学习机器学习数学了。
一个精心整理的GitHub收藏集(Mathematics for Machine Learning),整理了书籍、论文、视频讲座和数学基础,用于学习和复习机器学习背后的数学知识,涵盖线性代数、微积分、概率论、统计学等。
@KirkDBorne: Machine Learning Refined — 基础、算法与应用(含100个Python深入编程练习):ht…
推广Kirk Borne的书籍《Machine Learning Refined》,内容涵盖机器学习基础及Python编程练习。
@Jolyne_AI: 网上的机器学习教程常见两种极端:要么满屏公式、讲得抽象难啃;要么只教你调框架、原理一笔带过。结果学完能跑代码,却抓不住算法的核心。 我在 GitHub 上挖到一本开源免费电子书《Applied Machine Learning in Py…
推荐一本开源免费的电子书《Applied Machine Learning in Python》,它结合数学推导和Python实现,覆盖30+算法,并提供交互式可视化,适合系统学习机器学习原理和实战。