【机器学习】掌握核心数学:线性代数、微积分与概率论如何驱动AI模型?

Langchain系列文章目录

01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南
02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
04-玩转 LangChain:从文档加载到高效问答系统构建的全程实战
05-玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
06-从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!
07-【深度解析】从GPT-1到GPT-4:ChatGPT背后的核心原理全揭秘

PyTorch系列文章目录

Python系列文章目录

机器学习系列文章目录

01-什么是机器学习?从零基础到自动驾驶案例全解析
02-从过拟合到强化学习:机器学习核心知识全解析
03-从零精通机器学习:线性回归入门
04-逻辑回归 vs. 线性回归:一文搞懂两者的区别与应用
05-决策树算法全解析:从零基础到Titanic实战,一文搞定机器学习经典模型
06-集成学习与随机森林:从理论到实践的全面解析
07-支持向量机(SVM):从入门到精通的机器学习利器
08-【机器学习】KNN算法入门:从零到电影推荐实战
09-【机器学习】朴素贝叶斯入门:从零到垃圾邮件过滤实战
10-【机器学习】聚类算法全解析:K-Means、层次聚类、DBSCAN在市场细分的应用
11-【机器学习】降维与特征选择全攻略:PCA、LDA与特征选择方法详解
12-【机器学习】手把手教你构建神经网络:从零到手写数字识别实战
13-【机器学习】从零开始学习卷积神经网络(CNN):原理、架构与应用
14-【机器学习】RNN与LSTM全攻略:解锁序列数据的秘密
15-【机器学习】GAN从入门到实战:手把手教你实现生成对抗网络
16-【机器学习】强化学习入门:从零掌握 Agent 到 DQN 核心概念与 Gym 实战
17-【机器学习】AUC、F1分数不再迷茫:图解Scikit-Learn模型评估与选择核心技巧
18-【机器学习】Day 18: 告别盲猜!网格/随机/贝叶斯搜索带你精通超参数调优
19-【机器学习】从零精通特征工程:Kaggle金牌选手都在用的核心技术
20-【机器学习】模型性能差?90%是因为数据没洗干净!(缺失值/异常值/不平衡处理)
21-【机器学习】保姆级教程:7步带你从0到1完成泰坦尼克号生还预测项目
22-【机器学习】框架三巨头:Scikit-Learn vs TensorFlow/Keras vs PyTorch 全方位对比与实战
23-【机器学习】揭秘迁移学习:如何用 ResNet 和 BERT 加速你的 AI 项目?
24-【机器学习】NLP核心技术详解:用Scikit-learn、Gensim和Hugging Face玩转文本处理 (Day 24)
25-【机器学习】解密计算机视觉:CNN、目标检测与图像识别核心技术(Day 25)
26-【机器学习】万字长文:深入剖析推荐系统核心算法 (协同过滤/内容/SVD) 与Python实战
27-【机器学习】第27天:玩转时间序列预测,从 ARIMA 到 Prophet 实战指南
28-【机器学习】揭秘异常检测:轻松揪出数据中的“害群之马” (含Scikit-learn实战)
29-【机器学习】告别黑箱:深入理解LIME与SHAP,提升模型可解释性的两大核心技术
30-【机器学习】避开伦理陷阱:深入解析算法公平性、偏见来源与缓解技术 (AIF360实战前瞻)
31-【机器学习】模型安全告急!揭秘对抗攻击,让AI“指鹿为马”?
32-【机器学习】揭秘隐私保护机器学习:差分隐私与联邦学习如何守护你的数据?
33-【机器学习】解放双手!AutoML入门:从原理到Auto-sklearn实战,告别繁琐调参
34-【机器学习】大数据时代,模型训练慢如牛?解锁Spark MLlib与分布式策略
35-【机器学习】从炼丹到落地!模型部署与监控全流程实战指南 (MLOps 核心)
36-【机器学习】掌握核心数学:线性代数、微积分与概率论如何驱动AI模型?


文章目录

  • Langchain系列文章目录
  • PyTorch系列文章目录
  • Python系列文章目录
  • 机器学习系列文章目录
  • 前言
  • 一、线性代数:构建数据空间的基础
    • 1.1 核心概念回顾
      • 1.1.1 向量与空间
      • 1.1.2 矩阵与变换
      • 1.1.3 特征值分解与奇异值分解 (SVD)
    • 1.2 在机器学习中的应用:主成分分析 (PCA)
      • 1.2.1 PCA 原理简介
      • 1.2.2 线性代数如何驱动 PCA
      • 1.2.3 实例:用 SVD 实现 PCA 降维 (代码示例)
  • 二、微积分:模型优化的引擎
    • 2.1 核心概念回顾
      • 2.1.1 导数与变化率
      • 2.1.2 偏导数与梯度
      • 2.1.3 链式法则
    • 2.2 在机器学习中的应用:梯度下降与反向传播
      • 2.2.1 梯度下降:寻找损失函数的最小值
      • 2.2.2 反向传播:高效计算梯度
      • 2.2.3 实例:手动计算简单网络的梯度 (示意)
  • 三、概率论与统计:理解不确定性与评估模型
    • 3.1 核心概念回顾
      • 3.1.1 条件概率与贝叶斯定理
      • 3.1.2 常见概率分布
      • 3.1.3 期望与方差
    • 3.2 在机器学习中的应用:朴素贝叶斯与模型评估
      • 3.2.1 朴素贝叶斯分类器
      • 3.2.2 模型评估中的概率视角
      • 3.2.3 实例:理解混淆矩阵与相关指标 (表格)
  • 四、(选讲)信息论:衡量信息与模型复杂度
    • 4.1 核心概念简介
      • 4.1.1 熵:信息量的度量
      • 4.1.2 交叉熵:衡量预测与真实的差异
      • 4.1.3 KL 散度:衡量分布的距离
    • 4.2 在机器学习中的应用:决策树与损失函数
      • 4.2.1 决策树中的信息增益
      • 4.2.2 交叉熵作为分类损失函数
  • 五、优质数学学习资源推荐
  • 六、总结


前言

欢迎来到我们机器学习系列专栏的第 36 天!在之前的学习中,我们探索了各种强大的机器学习算法和技术。然而,要真正深入理解这些算法的内在机制、进行有效的模型选择与调优,甚至进行创新,掌握其背后的数学原理是不可或缺的基石。很多同学可能对数学有所畏惧,但别担心,本篇文章旨在以专业精准且通俗易懂的方式,回顾并深化机器学习中最核心的数学知识——线性代数、微积分、概率论与统计,并通过直观实例将抽象概念与具体的机器学习算法(如 PCA、梯度下降、朴素贝叶斯等)紧密联系起来,助你彻底打通机器学习的“任督二脉”。无论你是初学者希望巩固基础,还是进阶者渴望深化理解,相信本文都能为你带来价值。

一、线性代数:构建数据空间的基础

线性代数是研究向量空间和线性映射的数学分支。在机器学习中,数据通常被表示为向量和矩阵,线性代数则为我们提供了操作和理解这些数据的强大工具。

1.1 核心概念回顾

1.1.1 向量与空间

  • 向量 (Vector):可以理解为一个同时具有大小和方向的量,通常表示为包含多个数值的有序列表,如 v = [ v 1 , v 2 , . . . , v n ] T \mathbf{v} = [v_1, v_2, ..., v_n]^T v=[v1,v2,...,vn]T。在机器学习中,一个样本(如一张图片、一条用户记录)通常被表示为一个特征向量,向量的每个元素代表一个特征的取值。
  • 向量空间 (Vector Space):向量存在和运算的代数结构。理解向量空间有助于我们认识数据点之间的关系和分布。

1.1.2 矩阵与变换

  • 矩阵 (Matrix):一个按矩形排列的数字集合,通常表示为: A = [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 … a m n ] \mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix} A= a11a21am1a12a22am2a1na2namn 在机器学习中,整个数据集可以表示为一个矩阵(样本 × 特征),矩阵运算(如乘法)可以看作是对数据进行线性变换(如旋转、缩放、投影)。
  • 矩阵运算:包括加法、减法、乘法(点积和矩阵乘法)、转置等,是许多机器学习算法计算的基础。例如,神经网络的层计算本质上就是一系列矩阵乘法和非线性激活。

1.1.3 特征值分解与奇异值分解 (SVD)

  • 特征值分解 (Eigenvalue Decomposition):对于一个方阵 A \mathbf{A} A,如果存在标量 λ \lambda λ和非零向量 v \mathbf{v} v使得 A v = λ v \mathbf{Av} = \lambda\mathbf{v} Av=λv,则 λ \lambda λ 称为特征值, v \mathbf{v} v 称为对应的特征向量。特征向量代表了矩阵变换的主要方向,特征值则表示在该方向上的缩放程度。它揭示了矩阵的内在结构。
  • 奇异值分解 (Singular Value Decomposition, SVD):一种更通用的矩阵分解方法,适用于任何 m × n m \times n m×n矩阵 A \mathbf{A} A。它可以分解为 A = U Σ V T \mathbf{A} = \mathbf{U\Sigma V}^T A=UΣVT,其中 U \mathbf{U} U V \mathbf{V} V 是正交矩阵, Σ \mathbf{\Sigma} Σ 是一个对角矩阵,对角线上的元素称为奇异值。SVD 揭示了矩阵最重要的信息(由最大的奇异值及其对应的奇异向量表示),是许多机器学习应用(如降维、推荐系统)的核心。

1.2 在机器学习中的应用:主成分分析 (PCA)

主成分分析 (Principal Component Analysis, PCA) 是一种广泛应用的无监督降维技术,其核心思想就是利用线性代数。

1.2.1 PCA 原理简介

PCA 的目标是找到一组新的正交基(主成分),将原始高维数据投影到这组基上,使得投影后的数据方差最大化(信息损失最小),从而达到降维的目的。

1.2.2 线性代数如何驱动 PCA

  1. 数据中心化:将数据的每个特征减去其均值。
  2. 计算协方差矩阵:协方差矩阵 C \mathbf{C} C描述了数据特征之间的线性相关性。 C = 1 m − 1 X T X \mathbf{C} = \frac{1}{m-1} \mathbf{X}^T \mathbf{X} C=m11XTX (其中 X \mathbf{X} X 是中心化后的数据矩阵, m m m 是样本数)。
  3. 特征值分解:对协方差矩阵 C \mathbf{C} C 进行特征值分解。得到的特征向量代表了数据方差最大的方向(即主成分),对应的特征值则表示该方向上的方差大小。
  4. 选择主成分:按特征值从大到小排序,选择前 k k k个特征值对应的特征向量组成投影矩阵 W \mathbf{W} W
  5. 数据投影:将原始中心化数据 X \mathbf{X} X投影到新的低维空间: Z = X W \mathbf{Z} = \mathbf{XW} Z=XW
  • SVD 与 PCA 的关系:实践中,通常使用 SVD 来计算 PCA,因为它数值更稳定,并且可以直接应用于非方阵(原始数据矩阵 X \mathbf{X} X)。对中心化数据矩阵 X \mathbf{X} X进行 SVD 分解 X = U Σ V T \mathbf{X} = \mathbf{U\Sigma V}^T X=UΣVT,则矩阵 V \mathbf{V} V 的列向量即为主成分方向。

1.2.3 实例:用 SVD 实现 PCA 降维 (代码示例)

假设我们有一个包含多个特征的数据集,希望将其降到 2 维以便可视化。

import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler

# 1. 生成示例数据 (假设有 100 个样本, 4 个特征)
np.random.seed(42)
X = np.random.rand(100, 4) * [10, 1, 5, 3] # 不同特征尺度不同
X[:, 1] += X[:, 0] * 0.5 # 添加一些相关性
X[:, 2] += X[:, 3] * 0.8

# 2. 数据标准化 (PCA对尺度敏感,通常需要标准化)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 3. 应用 PCA (使用 Scikit-learn 简化 SVD 计算过程)
# n_components 指定降维后的维度
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# 4. 查看降维后的结果
print("原始数据维度:", X_scaled.shape)
print("PCA 降维后维度:", X_pca.shape)

# 5. 查看主成分 (特征向量) 和解释的方差比例 (特征值相关)
print("主成分 (特征向量):")
print(pca.components_) # V^T in SVD context for X
print("每个主成分解释的方差比例 (与奇异值的平方成正比):")
print(pca.explained_variance_ratio_)
print("累计解释方差比例:", np.sum(pca.explained_variance_ratio_))

# 6. 可视化降维结果
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], alpha=0.7)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Projection to 2 Dimensions')
plt.grid(True)
plt.show()

# 讨论:
# pca.components_ 显示了最重要的两个方向(特征向量)。
# pca.explained_variance_ratio_ 显示了这两个方向捕获了多少原始数据的方差(信息)。
# 通过 SVD (隐藏在 sklearn PCA 内部),我们有效地找到了数据的主要变化方向,并进行了降维。

二、微积分:模型优化的引擎

微积分研究函数的变化率(导数)和累积效应(积分)。在机器学习中,微积分是模型优化的核心工具,特别是对于依赖梯度下降算法的模型(如线性回归、逻辑回归、神经网络)。

2.1 核心概念回顾

2.1.1 导数与变化率

  • 导数 (Derivative):函数 f ( x ) f(x) f(x)在某一点 x 0 x_0 x0的导数 f ′ ( x 0 ) f'(x_0) f(x0)表示函数在该点的瞬时变化率,即函数曲线在该点的切线斜率。 f ′ ( x ) = lim ⁡ Δ x → 0 f ( x + Δ x ) − f ( x ) Δ x f'(x) = \lim_{\Delta x \to 0} \frac{f(x+\Delta x) - f(x)}{\Delta x} f(x)=Δx0limΔxf(x+Δx)f(x)

2.1.2 偏导数与梯度

  • 偏导数 (Partial Derivative):对于多元函数 f ( x 1 , x 2 , . . . , x n ) f(x_1, x_2, ..., x_n) f(x1,x2,...,xn),它关于某个变量 x i x_i xi的偏导数 ∂ f ∂ x i \frac{\partial f}{\partial x_i} xif表示当其他变量保持不变时,函数 f f f沿 x i x_i xi 方向的变化率。
  • 梯度 (Gradient):多元函数 f f f的梯度 ∇ f \nabla f f是一个向量,包含了函数对所有自变量的偏导数: ∇ f = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n ] T \nabla f = \left[ \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, ..., \frac{\partial f}{\partial x_n} \right]^T f=[x1f,x2f,...,xnf]T。梯度向量指向函数值增长最快的方向,其大小表示增长的速率。

2.1.3 链式法则

  • 链式法则 (Chain Rule):用于计算复合函数的导数。如果 y = f ( u ) y = f(u) y=f(u) u = g ( x ) u = g(x) u=g(x),那么 y y y x x x的导数是: d y d x = d y d u ⋅ d u d x \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} dxdy=dudydxdu。对于多变量复合函数,链式法则同样适用,是神经网络反向传播算法的数学基础。

2.2 在机器学习中的应用:梯度下降与反向传播

2.2.1 梯度下降:寻找损失函数的最小值

  • 目标:机器学习模型训练的目标通常是最小化一个损失函数 (Loss Function) L ( θ ) L(\theta) L(θ),其中 θ \theta θ 代表模型的参数。损失函数衡量模型预测与真实值之间的差距。
  • 梯度下降 (Gradient Descent):一种迭代优化算法。从一个初始参数 θ 0 \theta_0 θ0 开始,在每一步迭代中,沿着负梯度方向更新参数,因为负梯度方向是函数值下降最快的方向。
    • 更新规则: θ n e w = θ o l d − α ∇ L ( θ o l d ) \theta_{new} = \theta_{old} - \alpha \nabla L(\theta_{old}) θnew=θoldαL(θold)
    • α \alpha α学习率 (Learning Rate),控制每次更新的步长。
  • 直观理解:想象你在一个山谷中(损失函数的曲面),想要走到谷底(最小值点)。梯度告诉你当前位置最陡峭的上坡方向,那么沿着相反(负梯度)的方向走一小步,就能离谷底更近。

2.2.2 反向传播:高效计算梯度

  • 背景:神经网络通常包含许多层和大量参数,直接计算损失函数对每个参数的梯度非常复杂。
  • 反向传播 (Backpropagation):本质上是应用链式法则来高效计算复杂网络中损失函数对所有参数的梯度。它从网络的输出层开始,计算损失对输出的梯度,然后利用链式法则逐层向后(反向)传播这些梯度,计算出每一层参数的梯度。
  • 重要性:没有反向传播,训练深度神经网络几乎是不可能的。

2.2.3 实例:手动计算简单网络的梯度 (示意)

考虑一个极简网络:输入 x x x,权重 w 1 , w 2 w_1, w_2 w1,w2,激活函数 σ ( z ) = z \sigma(z) = z σ(z)=z(即线性激活,简化计算),输出 y ^ = w 2 σ ( w 1 x ) = w 2 w 1 x \hat{y} = w_2 \sigma(w_1 x) = w_2 w_1 x y^=w2σ(w1x)=w2w1x。损失函数为均方误差 L = 1 2 ( y ^ − y ) 2 L = \frac{1}{2}(\hat{y} - y)^2 L=21(y^y)2,其中 y y y 是真实值。

我们要计算损失 L L L w 1 w_1 w1 w 2 w_2 w2 的梯度:

  1. w 2 w_2 w2 的梯度 (直接相关):
    ∂ L ∂ w 2 = ∂ L ∂ y ^ ⋅ ∂ y ^ ∂ w 2 \frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial w_2} w2L=y^Lw2y^

    • ∂ L ∂ y ^ = ( y ^ − y ) \frac{\partial L}{\partial \hat{y}} = (\hat{y} - y) y^L=(y^y)
    • ∂ y ^ ∂ w 2 = w 1 x \frac{\partial \hat{y}}{\partial w_2} = w_1 x w2y^=w1x
    • 所以, ∂ L ∂ w 2 = ( y ^ − y ) w 1 x \frac{\partial L}{\partial w_2} = (\hat{y} - y) w_1 x w2L=(y^y)w1x
  2. w 1 w_1 w1 的梯度 (通过链式法则):
    u = w 1 x u = w_1 x u=w1x,则 y ^ = w 2 u \hat{y} = w_2 u y^=w2u
    ∂ L ∂ w 1 = ∂ L ∂ y ^ ⋅ ∂ y ^ ∂ u ⋅ ∂ u ∂ w 1 \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial u} \cdot \frac{\partial u}{\partial w_1} w1L=y^Luy^w1u

    • ∂ L ∂ y ^ = ( y ^ − y ) \frac{\partial L}{\partial \hat{y}} = (\hat{y} - y) y^L=(y^y)
    • ∂ y ^ ∂ u = w 2 \frac{\partial \hat{y}}{\partial u} = w_2 uy^=w2
    • ∂ u ∂ w 1 = x \frac{\partial u}{\partial w_1} = x w1u=x
    • 所以, ∂ L ∂ w 1 = ( y ^ − y ) w 2 x \frac{\partial L}{\partial w_1} = (\hat{y} - y) w_2 x w1L=(y^y)w2x

这个简单例子展示了链式法则如何将输出层的误差反向传播,计算出内层参数的梯度。在实际的深度网络中,这个过程会逐层进行。

三、概率论与统计:理解不确定性与评估模型

概率论研究随机现象,统计学则涉及数据的收集、分析、解释和表示。在机器学习中,它们帮助我们处理数据的不确定性、构建概率模型、评估模型性能和置信度。

3.1 核心概念回顾

3.1.1 条件概率与贝叶斯定理

  • 条件概率 (Conditional Probability):事件 A 在事件 B 发生的条件下发生的概率,记作 P ( A ∣ B ) P(A|B) P(AB) P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A|B) = \frac{P(A \cap B)}{P(B)} P(AB)=P(B)P(AB) (假设 P ( B ) > 0 P(B) > 0 P(B)>0)。
  • 贝叶斯定理 (Bayes’ Theorem):描述了在获得新证据 B B B后,如何更新关于假设 A A A 的信念(概率)。
    P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B) = \frac{P(B|A) P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
    • P ( A ) P(A) P(A):先验概率 (Prior) - 在看到证据 B 前,A 的概率。
    • P ( B ∣ A ) P(B|A) P(BA):似然 (Likelihood) - 在假设 A 成立时,观察到证据 B 的概率。
    • P ( B ) P(B) P(B):证据因子 (Evidence) - 观察到证据 B 的概率。
    • P ( A ∣ B ) P(A|B) P(AB):后验概率 (Posterior) - 看到证据 B 后,A 的概率。

3.1.2 常见概率分布

  • 伯努利分布 (Bernoulli Distribution):单次试验,结果只有两种(如成功/失败),成功概率为 p p p
  • 二项分布 (Binomial Distribution) n n n 次独立的伯努利试验中,成功次数的分布。
  • 高斯分布 (Gaussian/Normal Distribution):自然界中最常见的连续分布,由均值 μ \mu μ和方差 σ 2 \sigma^2 σ2 定义,呈钟形曲线。许多机器学习算法假设数据服从高斯分布。
  • 均匀分布 (Uniform Distribution):在一个区间内,所有值的概率相等。

3.1.3 期望与方差

  • 期望 (Expectation/Expected Value):随机变量取值的加权平均,权重为对应的概率。表示随机变量的中心趋势。离散: E [ X ] = ∑ i x i P ( x i ) E[X] = \sum_i x_i P(x_i) E[X]=ixiP(xi);连续: E [ X ] = ∫ − ∞ ∞ x f ( x ) d x E[X] = \int_{-\infty}^{\infty} x f(x) dx E[X]=xf(x)dx
  • 方差 (Variance):衡量随机变量取值与其期望值的偏离程度(分散程度)。 V a r ( X ) = E [ ( X − E [ X ] ) 2 ] = E [ X 2 ] − ( E [ X ] ) 2 Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2 Var(X)=E[(XE[X])2]=E[X2](E[X])2。标准差是方差的平方根。

3.2 在机器学习中的应用:朴素贝叶斯与模型评估

3.2.1 朴素贝叶斯分类器

朴素贝叶斯 (Naive Bayes) 是一种基于贝叶斯定理的简单高效的分类算法。

  • 目标:给定一个包含特征 x = ( x 1 , x 2 , . . . , x n ) \mathbf{x} = (x_1, x_2, ..., x_n) x=(x1,x2,...,xn) 的样本,预测其属于哪个类别 C k C_k Ck。我们需要计算后验概率 P ( C k ∣ x ) P(C_k | \mathbf{x}) P(Ckx),并选择概率最大的类别。
  • 应用贝叶斯定理
    P ( C k ∣ x ) = P ( x ∣ C k ) P ( C k ) P ( x ) P(C_k | \mathbf{x}) = \frac{P(\mathbf{x} | C_k) P(C_k)}{P(\mathbf{x})} P(Ckx)=P(x)P(xCk)P(Ck)
  • “朴素”假设:为了简化计算 P ( x ∣ C k ) P(\mathbf{x} | C_k) P(xCk),朴素贝叶斯做了一个关键假设:给定类别 C k C_k Ck,所有特征 x 1 , . . . , x n x_1, ..., x_n x1,...,xn 之间是条件独立的
    P ( x ∣ C k ) = P ( x 1 ∣ C k ) P ( x 2 ∣ C k ) … P ( x n ∣ C k ) = ∏ i = 1 n P ( x i ∣ C k ) P(\mathbf{x} | C_k) = P(x_1 | C_k) P(x_2 | C_k) \dots P(x_n | C_k) = \prod_{i=1}^n P(x_i | C_k) P(xCk)=P(x1Ck)P(x2Ck)P(xnCk)=i=1nP(xiCk)
  • 计算:通过训练数据估计先验概率 P ( C k ) P(C_k) P(Ck)(各类别的频率)和条件概率 P ( x i ∣ C k ) P(x_i | C_k) P(xiCk)(在类别 C k C_k Ck中特征 x i x_i xi出现的概率/密度),然后就可以对新样本进行预测。由于 P ( x ) P(\mathbf{x}) P(x)对所有类别都相同,预测时只需比较分子 P ( C k ) ∏ i = 1 n P ( x i ∣ C k ) P(C_k) \prod_{i=1}^n P(x_i | C_k) P(Ck)i=1nP(xiCk) 的大小。
  • 实例:垃圾邮件过滤。假设邮件包含词语 “中奖” 和 “免费”,朴素贝叶斯会计算 P ( 垃圾 ∣ "中奖", "免费" ) P(\text{垃圾} | \text{"中奖", "免费"}) P(垃圾"中奖", "免费") P ( 非垃圾 ∣ "中奖", "免费" ) P(\text{非垃圾} | \text{"中奖", "免费"}) P(非垃圾"中奖", "免费"),然后比较哪个概率更大。它会利用训练集中垃圾邮件和非垃圾邮件中这两个词各自出现的频率来估计所需的概率。

3.2.2 模型评估中的概率视角

许多模型评估指标可以从概率角度理解:

  • 准确率 (Accuracy):模型预测正确的样本占总样本的比例,即 P ( 预测正确 ) P(\text{预测正确}) P(预测正确)
  • 精确率 (Precision):在所有被模型预测为正类的样本中,实际为正类的比例。 P ( 真阳性 ∣ 预测为阳性 ) P(\text{真阳性} | \text{预测为阳性}) P(真阳性预测为阳性)
  • 召回率 (Recall):在所有实际为正类的样本中,被模型成功预测为正类的比例。 P ( 预测为阳性 ∣ 真阳性 ) P(\text{预测为阳性} | \text{真阳性}) P(预测为阳性真阳性)
  • ROC 曲线与 AUC 值:ROC 曲线绘制了不同阈值下模型的真阳性率 (TPR, Recall) vs 假阳性率 (FPR)。AUC (Area Under the Curve) 衡量的是模型区分正负样本的整体能力,可以解释为:随机抽取一个正样本和一个负样本,模型将正样本排在负样本前面的概率。

3.2.3 实例:理解混淆矩阵与相关指标 (表格)

假设一个二分类问题(如疾病诊断:阳性/阴性),模型的预测结果可以用混淆矩阵表示:

预测为阳性 (Predicted Positive) 预测为阴性 (Predicted Negative)
实际为阳性 (Actual Positive) 真阳性 (TP) 假阴性 (FN)
实际为阴性 (Actual Negative) 假阳性 (FP) 真阴性 (TN)

基于混淆矩阵,我们可以计算常用指标:

  • 准确率 (Accuracy) = T P + T N T P + T N + F P + F N \frac{TP + TN}{TP + TN + FP + FN} TP+TN+FP+FNTP+TN
  • 精确率 (Precision) = T P T P + F P \frac{TP}{TP + FP} TP+FPTP (预测为阳性的里面,有多少是真的阳性)
  • 召回率 (Recall) / 真阳性率 (TPR) = T P T P + F N \frac{TP}{TP + FN} TP+FNTP (实际为阳性的里面,有多少被找出来了)
  • F1 分数 (F1 Score) = 2 ⋅ Precision ⋅ Recall Precision + Recall 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} 2Precision+RecallPrecisionRecall (精确率和召回率的调和平均数)
  • 假阳性率 (FPR) = F P F P + T N \frac{FP}{FP + TN} FP+TNFP (实际为阴性的里面,有多少被误报为阳性)

理解这些指标的概率含义有助于根据具体业务场景选择合适的评估标准。例如,在疾病诊断中,漏诊(FN)的代价可能远高于误诊(FP),因此召回率可能比精确率更重要。

四、(选讲)信息论:衡量信息与模型复杂度

信息论是研究信息量化、存储和通信的数学理论。它的一些核心概念在机器学习中被用来衡量不确定性、比较概率分布,并作为损失函数或决策标准。

4.1 核心概念简介

4.1.1 熵:信息量的度量

  • 信息熵 (Entropy):衡量一个随机变量不确定性的指标。熵越大,表示该变量包含的可能性越多,不确定性越大。对于一个离散随机变量 X X X,其取值为 { x 1 , . . . , x n } \{x_1, ..., x_n\} {x1,...,xn},对应概率为 { p 1 , . . . , p n } \{p_1, ..., p_n\} {p1,...,pn},其熵定义为:
    H ( X ) = − ∑ i = 1 n p i log ⁡ b ( p i ) H(X) = - \sum_{i=1}^n p_i \log_b (p_i) H(X)=i=1npilogb(pi)
    (通常使用 b = 2 b=2 b=2,单位为比特;或 b = e b=e b=e,单位为奈特)。当所有取值的概率相等时,熵达到最大值。

4.1.2 交叉熵:衡量预测与真实的差异

  • 交叉熵 (Cross-Entropy):衡量两个概率分布 p p p(通常是真实分布)和 q q q(通常是模型预测分布)之间的差异。在机器学习中,常用于分类问题的损失函数。
    H ( p , q ) = − ∑ i p ( x i ) log ⁡ b ( q ( x i ) ) H(p, q) = - \sum_i p(x_i) \log_b (q(x_i)) H(p,q)=ip(xi)logb(q(xi))
    q q q分布与 p p p 分布越接近时,交叉熵越小。最小化交叉熵损失等价于最大化模型预测的似然。

4.1.3 KL 散度:衡量分布的距离

  • KL 散度 (Kullback-Leibler Divergence):也称为相对熵,同样衡量两个概率分布 p p p q q q之间的差异,但它不是对称的(即 D K L ( p ∣ ∣ q ) ≠ D K L ( q ∣ ∣ p ) D_{KL}(p || q) \neq D_{KL}(q || p) DKL(p∣∣q)=DKL(q∣∣p))。
    D K L ( p ∣ ∣ q ) = ∑ i p ( x i ) log ⁡ b ( p ( x i ) q ( x i ) ) = H ( p , q ) − H ( p ) D_{KL}(p || q) = \sum_i p(x_i) \log_b \left( \frac{p(x_i)}{q(x_i)} \right) = H(p, q) - H(p) DKL(p∣∣q)=ip(xi)logb(q(xi)p(xi))=H(p,q)H(p)
    KL 散度表示用分布 q q q来近似分布 p p p时所损失的信息量。它总是非负的,当且仅当 p = q p=q p=q 时为 0。

4.2 在机器学习中的应用:决策树与损失函数

4.2.1 决策树中的信息增益

  • 决策树构建:决策树在每个节点选择最佳特征进行分裂,目标是使得分裂后的子节点数据尽可能“纯净”(即属于同一类别)。
  • 信息增益 (Information Gain):衡量使用某个特征进行分裂后,数据集不确定性(熵)减少的程度。计算方法是:父节点的熵减去所有子节点熵的加权平均。
    G a i n ( D , A ) = H ( D ) − ∑ v ∈ V a l u e s ( A ) ∣ D v ∣ ∣ D ∣ H ( D v ) Gain(D, A) = H(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} H(D_v) Gain(D,A)=H(D)vValues(A)DDvH(Dv)
    其中 D D D是数据集, A A A 是特征, V a l u e s ( A ) Values(A) Values(A) 是特征 A A A的所有可能取值, D v D_v Dv D D D中特征 A A A取值为 v v v 的子集。决策树通常选择信息增益最大的特征进行分裂。类似的概念还有信息增益率基尼不纯度

4.2.2 交叉熵作为分类损失函数

  • 场景:在逻辑回归、神经网络等分类模型中,模型输出的是样本属于每个类别的概率分布 q q q。真实标签通常是 one-hot 编码的形式(即真实类别概率为 1,其他为 0),代表真实分布 p p p
  • 应用:使用交叉熵作为损失函数,可以有效衡量模型预测概率分布 q q q与真实分布 p p p 的差距。
    例如,对于二分类问题,真实标签 y ∈ { 0 , 1 } y \in \{0, 1\} y{0,1},模型预测 y = 1 y=1 y=1的概率为 y ^ \hat{y} y^。交叉熵损失为:
    L C E = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L_{CE} = - [y \log(\hat{y}) + (1-y) \log(1-\hat{y})] LCE=[ylog(y^)+(1y)log(1y^)]
    y = 1 y=1 y=1时,损失为 − log ⁡ ( y ^ ) -\log(\hat{y}) log(y^);当 y = 0 y=0 y=0时,损失为 − log ⁡ ( 1 − y ^ ) -\log(1-\hat{y}) log(1y^)。这会惩罚那些与真实标签相差很远的预测概率。最小化交叉熵损失促使模型的预测概率接近真实标签分布。

五、优质数学学习资源推荐

打好数学基础对于深入理解和应用机器学习至关重要。以下是一些广受好评的数学学习资源:

  • 在线课程与视频:
    • 吴恩达 (Andrew Ng) 的机器学习/深度学习课程 (Coursera/Stanford): 课程中对涉及的数学有直观解释。
    • 可汗学院 (Khan Academy): 提供免费的线性代数、微积分、概率统计等基础课程。
    • 3Blue1Brown (YouTube): 以精美的动画直观解释线性代数、微积分等核心概念,强烈推荐《线性代数的本质》系列。
    • MIT OpenCourseWare: 提供麻省理工学院的公开课,包括 Gilbert Strang 的线性代数等经典课程。
  • 书籍:
    • 线性代数:
      • 《Linear Algebra Done Right》 (Sheldon Axler): 侧重理论理解。
      • 《Introduction to Linear Algebra》 (Gilbert Strang): 应用与理论结合,配有视频课程。
      • 《深度学习》(花书) Part I: 应用数学与机器学习基础。
    • 微积分:
      • 《Calculus》 (James Stewart): 经典教材。
      • 《普林斯顿微积分读本》: 更易入门。
    • 概率论与统计:
      • 《概率论基础教程》(A First Course in Probability by Sheldon Ross)
      • 《统计学习方法》(李航): 虽然是 ML 书籍,但对统计基础有涉及。
      • 《Pattern Recognition and Machine Learning》(PRML by Christopher Bishop): 包含大量概率视角下的机器学习理论。
  • 网站与社区:
    • Stack Exchange (Mathematics & Cross Validated): 提问和查找具体数学或统计学问题的好地方。
    • Distill.pub: 发表高质量、注重可视化的机器学习研究文章,常涉及数学原理的直观解释。

学习建议: 不必追求一次性掌握所有数学细节。可以先理解核心概念及其在 ML 中的作用,然后在学习具体算法时,按需深入学习相关的数学知识,理论与实践相结合。

六、总结

回顾并深化机器学习背后的数学原理,对于从“调包侠”进阶为真正理解并能灵活运用、甚至改进算法的 practitioner至关重要。本文的核心要点总结如下:

  1. 线性代数是描述和操作数据的语言。向量和矩阵是数据的基本表示,特征值分解和 SVD 等工具能帮助我们理解数据结构、实现降维(如 PCA)。
  2. 微积分是模型优化的核心引擎。导数和梯度指明了模型参数优化的方向,链式法则是实现高效梯度计算(如反向传播)的关键。
  3. 概率论与统计使我们能够处理不确定性、构建生成模型(如朴素贝叶斯)并科学地评估模型性能(各种评估指标的概率解释)。
  4. 信息论(选讲)提供了衡量信息量(熵)、比较分布差异(交叉熵、KL散度)的工具,应用于决策树构建和损失函数设计。
  5. 联系实际是关键:理解数学概念如何与具体的机器学习算法(PCA、梯度下降、朴素贝叶斯、决策树等)相结合,才能真正体会其价值。
  6. 持续学习:利用推荐的优质资源,结合实践,不断巩固和深化数学基础。

希望通过本文的梳理,能帮助你建立起对机器学习所需数学知识的整体认识,扫清学习障碍,更有信心地探索更广阔的 AI 世界!数学并非拦路虎,而是你攀登机器学习高峰的坚实阶梯。


你可能感兴趣的:(0基础实现机器学习入门到精通,人工智能,机器学习,线性代数,深度学习,python,pytorch,LLM)