摘要
本文系统讲解概率论与统计学在人工智能中的核心作用,涵盖条件概率、贝叶斯定理、常见概率分布(正态、伯努利、泊松)、期望与方差,并通过Python代码实现。结合朴素贝叶斯分类器、A/B测试等AI应用场景,帮助学习者理解模型背后的不确定性原理。适合机器学习、数据科学初学者阅读。


一、为什么AI需要概率论与统计?

在现实世界中,数据充满噪声不确定性。概率论为我们提供了:

  • 量化不确定性的数学语言
  • 从数据中推理的逻辑框架
  • 模型预测的置信度评估

1.1 概率在AI中的典型应用

应用 概率概念 说明
垃圾邮件分类 贝叶斯定理 计算“这封邮件是垃圾邮件”的概率
推荐系统 概率分布 用户点击某商品的概率
强化学习 期望回报 评估策略的长期收益
深度学习 Dropout、正则化 从贝叶斯视角理解模型泛化
A/B测试 假设检验 判断新功能是否显著提升转化率

💡 一句话总结
AI不仅是“预测”,更是“预测+不确定性评估”


二、基本概念:概率、事件与公理

2.1 概率的定义

概率 P(A) 表示事件A发生的可能性,满足:

  • 0 ≤ P(A) ≤ 1
  • P(必然事件) = 1
  • P(不可能事件) = 0
  • P(A ∪ B) = P(A) + P(B) - P(A ∩ B)
# Python模拟掷骰子
import numpy as np

# 模拟10000次掷骰子
rolls = np.random.randint(1, 7, size=10000)

# 计算点数为6的概率
prob_6 = np.mean(rolls == 6)
print(f"点数为6的概率: {prob_6:.3f}")  # 接近 1/6 ≈ 0.167

2.2 条件概率(Conditional Probability)

P(A|B):在事件B发生的条件下,事件A发生的概率。

公式:

P(A|B) = P(A ∩ B) / P(B)

案例:医疗检测

  • 某疾病发病率 P(病) = 0.01
  • 检测准确率 P(阳性|病) = 0.99
  • 误报率 P(阳性|健康) = 0.02

问:如果检测为阳性,患病的概率是多少?


三、贝叶斯定理(Bayes' Theorem):AI的“推理引擎”

3.1 贝叶斯公式

P(A|B) = [P(B|A) × P(A)] / P(B)
  • P(A):先验概率(Prior)
  • P(B|A):似然(Likelihood)
  • P(A|B):后验概率(Posterior)
  • P(B):证据(Evidence)

3.2 医疗检测案例计算

# 已知
P_disease = 0.01      # P(病)
P_positive_given_disease = 0.99  # P(阳性|病)
P_positive_given_healthy = 0.02  # P(阳性|健康)

# 计算P(阳性)
P_positive = (P_positive_given_disease * P_disease + 
              P_positive_given_healthy * (1 - P_disease))

# 贝叶斯定理计算后验概率
P_disease_given_positive = (P_positive_given_disease * P_disease) / P_positive

print(f"检测阳性后患病的概率: {P_disease_given_positive:.3f}")
# 输出: 0.332 → 仅33.2%!

📌 启示:即使检测准确率高,低发病率会导致大量“假阳性”。

3.3 在AI中的应用

  • 朴素贝叶斯分类器:文本分类、垃圾邮件过滤
  • 贝叶斯优化:超参数调优
  • 贝叶斯网络:医疗诊断、风险评估

四、常见概率分布

4.1 伯努利分布(Bernoulli Distribution)

  • 单次试验,两种结果(成功/失败)
  • 参数:p(成功概率)
from scipy.stats import bernoulli

p = 0.7  # 成功概率
dist = bernoulli(p)

# 模拟10次试验
samples = dist.rvs(10)
print(f"伯努利试验结果: {samples}")  # 如 [1 0 1 1 0 ...]

# 概率质量函数
print(f"P(X=1) = {dist.pmf(1)}")  # 0.7

AI应用:用户是否点击广告(0/1)


4.2 二项分布(Binomial Distribution)

  • n次独立伯努利试验,成功k次的概率
  • 参数:n, p
from scipy.stats import binom

n, p = 10, 0.5
dist = binom(n, p)

# P(X=6)
prob_6 = dist.pmf(6)
print(f"10次抛硬币恰好6次正面的概率: {prob_6:.3f}")

# 累积分布函数
prob_le_6 = dist.cdf(6)  # P(X ≤ 6)
print(f"≤6次正面的概率: {prob_le_6:.3f}")

AI应用:A/B测试中用户转化次数


4.3 正态分布(Normal/Gaussian Distribution)

  • 连续分布,钟形曲线
  • 参数:μ(均值),σ(标准差)
from scipy.stats import norm
import matplotlib.pyplot as plt

mu, sigma = 0, 1
dist = norm(mu, sigma)

# 概率密度函数
x = np.linspace(-4, 4, 100)
y = dist.pdf(x)

plt.plot(x, y)
plt.title('标准正态分布')
plt.xlabel('x')
plt.ylabel('概率密度')
plt.grid(True, alpha=0.3)
plt.show()

AI应用

  • 神经网络权重初始化(np.random.randn()
  • 假设误差服从正态分布
  • 高斯朴素贝叶斯分类器

4.4 泊松分布(Poisson Distribution)

  • 单位时间内事件发生次数
  • 参数:λ(平均发生率)
from scipy.stats import poisson

lam = 3  # 平均每小时3次
dist = poisson(lam)

# P(X=5)
prob_5 = dist.pmf(5)
print(f"1小时内发生5次事件的概率: {prob_5:.3f}")

# 模拟一天(24小时)的事件数
daily_events = dist.rvs(24)
print(f"每日事件数: {daily_events}")

AI应用:预测客服来电量、设备故障次数


五、期望、方差与协方差

5.1 期望(Expectation, E[X])

  • 随机变量的“长期平均值”
  • 离散:E[X] = Σ x P(x)
  • 连续:E[X] = ∫ x f(x) dx
# 正态分布的期望
mu, sigma = 100, 15
dist = norm(mu, sigma)
print(f"期望: {dist.mean():.1f}")  # 100.0

# 模拟验证
samples = dist.rvs(10000)
print(f"样本均值: {samples.mean():.1f}")  # 接近100.0

AI应用:强化学习中的“期望回报”


5.2 方差(Variance, Var[X])与标准差

  • 衡量数据的离散程度
  • Var[X] = E[(X - E[X])²]
print(f"方差: {dist.var():.1f}")      # 225.0
print(f"标准差: {dist.std():.1f}")    # 15.0

AI应用

  • 评估模型预测的稳定性
  • 正则化(防止过拟合)

5.3 协方差(Covariance)与相关系数

  • 协方差:Cov(X,Y) = E[(X-E[X])(Y-E[Y])]
  • 相关系数:ρ = Cov(X,Y) / (σ_X σ_Y) ∈ [-1, 1]
# 生成相关数据
np.random.seed(42)
X = np.random.randn(1000)
Y = 2 * X + 0.5 * np.random.randn(1000)  # Y与X正相关

# 协方差矩阵
cov_matrix = np.cov(X, Y)
print(f"协方差: {cov_matrix[0,1]:.3f}")

# 相关系数
corr = np.corrcoef(X, Y)[0,1]
print(f"相关系数: {corr:.3f}")  # 接近1

# 可视化
plt.scatter(X, Y, alpha=0.6)
plt.xlabel('X')
plt.ylabel('Y')
plt.title(f'相关系数 ρ = {corr:.2f}')
plt.show()

AI应用

  • 特征选择(去除高度相关特征)
  • PCA降维

六、假设检验:用数据做决策

6.1 基本流程

  1. 提出假设
    • 原假设 H₀(如“新功能无效”)
    • 备择假设 H₁(如“新功能有效”)
  2. 选择检验统计量(如t统计量)
  3. 计算p值
  4. 决策:若 p < α(如0.05),拒绝 H₀

6.2 A/B测试实战

假设我们测试新按钮颜色是否提升点击率。

from scipy.stats import ttest_ind

# 模拟数据:两组用户的点击时长(秒)
group_A = np.random.normal(120, 30, 100)  # 旧按钮
group_B = np.random.normal(130, 30, 100)  # 新按钮

# 独立样本t检验
t_stat, p_value = ttest_ind(group_A, group_B)

print(f"t统计量: {t_stat:.3f}")
print(f"p值: {p_value:.3f}")

alpha = 0.05
if p_value < alpha:
    print("拒绝原假设:新按钮显著提升时长!")
else:
    print("无法拒绝原假设:无显著差异。")

✅ p值 < 0.05 → 新按钮“有效”。


七、实战:用朴素贝叶斯实现文本分类

基于贝叶斯定理的简单分类器。

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split

# 模拟数据
texts = [
    "免费领取大奖", "点击赚钱",           # 垃圾
    "你好,会议安排", "项目进度汇报"       # 正常
] * 50  # 扩大数据

labels = [1, 1, 0, 0] * 50  # 1=垃圾, 0=正常

# 特征提取(词袋模型)
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2)

# 训练朴素贝叶斯
model = MultinomialNB()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)
print(f"准确率: {np.mean(y_pred == y_test):.3f}")

✅ 朴素贝叶斯假设“特征独立”,但在文本分类中表现良好!


八、总结与学习建议

本文我们:

  • 掌握了贝叶斯定理及其在AI推理中的核心作用;
  • 学习了伯努利、二项、正态、泊松四种关键分布;
  • 理解了期望、方差、协方差的统计意义;
  • 实践了假设检验在A/B测试中的应用;
  • 用代码实现了朴素贝叶斯分类器

📌 学习建议

  1. 多模拟数据,用代码验证理论;
  2. 理解“频率派” vs “贝叶斯派” 的哲学差异;
  3. 将分布与现实场景关联(如泊松=事件计数)。

九、下一篇文章预告

第6篇:机器学习入门:监督学习三巨头——线性回归、逻辑回归、KNN
我们将:

  • 从零推导线性回归与逻辑回归
  • 实现KNN分类与回归
  • 使用Scikit-learn实战
  • 分析模型优缺点与适用场景

正式进入机器学习核心算法世界!


参考文献

  1. 陈希孺. 《概率论与数理统计》. 中国科学技术大学出版社.
  2. Wasserman, L. 《All of Statistics》. Springer.
  3. Scipy统计模块文档: Statistical functions (scipy.stats) — SciPy v1.16.1 Manual
  4. Sklearn朴素贝叶斯文档: 1.9. Naive Bayes — scikit-learn 1.7.1 documentation

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐