0%

CS229 笔记(一):线性回归的数学基础 — 从模型构建到梯度下降

引言:

欢迎来到机器学习的世界

机器学习(ML)是现代计算机科学中最令人兴奋的领域之一。
从自然语言处理和垃圾邮件过滤器,到图像识别、计算机视觉、推荐系统、自动驾驶汽车、农业和医学,机器学习无处不在。

本课程不仅涵盖机器学习的前沿理论,还强调动手实践。通过亲自实现算法,你将深入理解其内部机制。这至关重要,因为仅仅掌握算法和数学知识并不足以解决实际问题。

机器学习的流行源于它突破了传统编程的局限。对于网页搜索和照片标注等复杂任务,我们无法直接编写固定程序来实现预期效果。相反,机器学习使计算机能够从数据中自主学习解决方案。如今,机器学习已广泛应用于数据库挖掘、病历分析、计算生物学和无人直升机控制等众多领域,市场需求远超专业人才的供给。

学习机器学习不仅仅是学习公式和算法,还包括:

  • 理解哪些问题适合用机器学习解决
  • 知道如何选择模型和方法
  • 能够在实践中实现和调优算法

什么是机器学习?

两个经典定义:

1.Arthur Samuel(1950年代):

研究领域:使计算机能够在无需显式编程的情况下具备学习能力。
他编写了一个国际象棋程序,让程序与自己对弈;经过数千局的自我对弈,该程序的水平超越了其创造者。

2.Tom Mitchell(现代定义):

如果一个计算机程序在某类任务 T 上的性能(以 P 衡量)随着经验 E 的积累而提升,则称该程序从经验 E 中学习。

记忆公式:T(E)ₚ - 通过经验 E 提升任务 T 在指标 P 上的表现

示例:垃圾邮件过滤器

  • T(任务):将邮件分类为垃圾邮件或非垃圾邮件
  • E(经验):用户标记为垃圾邮件的样本
  • P(性能):正确识别垃圾邮件的概率

简单来说:
👉 我们不硬编码规则,而是让机器从数据中学习模式。

为什么需要机器学习?
因为对于许多复杂问题:

  • ❌ 很难编写明确的规则
  • ✅ 但我们通常有大量数据可供学习

监督学习

监督学习是指训练数据集中的每个样本都附带”正确答案”(标签)。算法学习样本特征与标签之间的映射关系,从而实现对未知样本的预测。

特征:

  • 训练数据包括输入 x 和正确输出 y
  • 目标是学习从 x → y 的映射

形式:
(x, y)

两大主要类型:

  1. ✅ 回归问题 - 预测连续值
    例如:
  • 房价
  • 温度
  • 销售额
    1
    2
    3
    4
    示例:房价预测
    输入:房屋面积(750平方英尺)
    输出:预测价格($150,000)
    特点:输出为连续数值,可取任意实数
    pic
  1. ✅ 分类问题 - 预测离散类别

例如:

  • 垃圾邮件 / 非垃圾邮件
  • 患病 / 健康
  • 图像类别
    1
    2
    3
    4
    示例:肿瘤诊断
    输入:肿瘤特征(大小、密度等)
    输出:良性(0) / 恶性(1)
    特点:输出为有限离散值集合
    pic

pic

监督学习的本质:

从带标签的数据中学习,使模型能够对新样本做出预测。

无监督学习

无监督学习与监督学习的核心区别在于训练数据没有标签。算法需要自主发现数据中的潜在结构。无监督学习的典型代表是聚类算法。

pic
特征:

  • 只有输入数据 x
  • 没有标签 y
  • 目标是发现数据中的结构

常见任务:聚类

  1. 应用:
  • 自动对新闻进行分组(如 Google News)
  • 客户细分
  • 基因分析
  • 社交网络中的社区发现
  1. 鸡尾酒会问题:

matlab:

1
2
% Audio separation achieved with just one line of code
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
  • 从混合声音中分离不同说话者的音频
  • 展示了使用合适工具的重要性
    pic
    直观理解:

    我们事先不知道类别,但希望算法自行发现相似的群组。

对比:

数据有标签? 有标签? 目标
监督学习 是 预测
无监督学习 否 发现结构

单变量线性回归

模型表示

单变量线性回归是一个入门级的机器学习算法,用于解决单特征回归问题(例如,用房屋面积预测房价)。
让我们从一个例子开始:这个例子是关于预测房价的,我们将使用一个包含俄勒冈州波特兰市房价的数据集。在这里,我将根据不同的房屋面积和对应的售出价格绘制我们的数据集。
例如,如果你朋友的房子面积为1250平方英尺,你想告诉他们能卖多少钱。你可以做的事情之一就是建立一个模型——比如一条直线——从这个模型中,你可以告诉你朋友这套房子大约能卖22万美元。
这是一个监督学习算法的例子。
pic

训练集:
pic

符号说明:

  • m:训练样本数量
  • x:特征
  • y:目标值
  • (x⁽ⁱ⁾, y⁽ⁱ⁾):第 i 个训练样本
  • h(x):假设函数(模型),用于预测 y 的值
    单变量线性回归模型:
    1
    hθ(x) = θ₀ + θ₁ x

这是一条直线,其中:

  • θ₀ 是截距,即假设函数与 y 轴的交点
  • θ₁ 是斜率,表示特征 x 对目标 y 的影响程度

目标:
找到 θ₀ 和 θ₁,使得这条直线尽可能好地拟合数据。

pic

代价函数

为了衡量假设函数的预测误差,我们需要定义一个代价函数(Cost Function),它主要计算预测值与实际值之间的误差平方和。

代价函数的定义

单变量线性回归使用均方误差(MSE)作为代价函数,定义公式如下:

1
J(θ₀, θ₁) = (1 / 2m) * Σ (hθ(x⁽ⁱ⁾) - y⁽ⁱ⁾)²
  • 1/2:求导时与平方项的系数约去,简化计算
  • Σ (hθ(x⁽ⁱ⁾) - y⁽ⁱ⁾)²:所有样本的预测误差平方和
  • J(θ₀, θ₁): 代价函数的值越小,说明模型的预测精度越高

pic
含义:
将误差平方
对所有训练样本求平均
越小越好

👉 我们的目标:

1
minimize J(θ₀, θ₁)

为什么选择平方误差?

  1. 数学上:便于求导,优化更平滑
    这是首要原因。

平方函数 (y-ŷ)² 在任意点上都是光滑的凸函数,其导数为 2(y-ŷ),非常简洁。
绝对值函数 |y-ŷ| 在 y=ŷ 处不可导(存在”尖点”)。这会导致梯度下降等基于梯度的优化算法在该点”卡住”,需要特殊处理。

直观类比:
平方误差就像一个光滑的碗形曲线——一个球(优化过程)可以平滑地滚到碗底(最小值)。
绝对值误差就像一张折成 V 形的纸,中间有一条尖锐的折痕——球滚到尖端时会卡住,不知道该往哪个方向滚。

  1. 统计上:符合最大似然估计的假设
    当我们假设数据误差服从正态(高斯)分布时,最大化似然函数等价于最小化均方误差。这是许多线性模型的统计学基础。由于正态分布在自然界中很常见,这个假设通常是合理的。

  2. 效果上:对大误差施加更重的惩罚,对异常值更敏感
    误差² 会放大大误差的影响。

  • 优点:模型会尽力避免大的预测错误,因为代价随误差呈二次增长。这通常是我们期望的行为。
  • 缺点:如果数据中存在异常值,平方会放大其影响,可能将模型”带偏”。(此时可以使用绝对值误差或 Huber 损失来缓解。)

示例:
误差 = 1 → 平方代价 = 1
误差 = 2 → 平方代价 = 4(误差翻倍,代价变为4倍)
误差 = 10 → 平方代价 = 100(误差变为10倍,代价变为100倍)

  • 良好的数学性质(凸函数,存在唯一最小值)
  • 对大误差施加重惩罚
  • 在实际应用中表现良好

代价函数的直观理解(一)

想象不同的直线:

  • 有些远离数据 → 误差大 → J 大

  • 有些很好地拟合数据 → 误差小 → J 小

所以 J 告诉我们:
👉 平均而言,这条直线拟合数据的程度有多差。
pic

代价函数的直观理解(二):等高线图

如果我们把 θ₀ 和 θ₁ 作为坐标轴,J(θ₀, θ₁) 作为高度:

  • 我们会得到一个碗形曲面
  • 最低点对应最优参数
    pic

等高线图显示:

  • 每条闭合曲线上的 J 值相同
  • 越往内层,J 值越小

👉 学习的过程就像:
在误差地形上不断下坡,直到到达最低点。

pic

梯度下降

梯度下降是一种用于最小化函数的通用算法。

核心思想:

从一个随机点出发,沿着最陡的下坡方向迈出一小步,不断重复直到到达谷底

步骤:

  1. 从某个初始点 (θ₀, θ₁) 开始
  2. 沿着 J 下降最快的方向迈出一小步
  3. 重复直到收敛
    更新规则:
    1
    θⱼ := θⱼ - α * ∂J(θ) / ∂θⱼ

其中:

  • α 是学习率(步长)
  • := 表示赋值,即先计算右侧的值,再更新左侧的参数

👉 类比:
蒙着眼睛下山走,总是朝着最陡的方向迈步。
pic

梯度下降的直观理解

梯度下降的核心在于学习率 α 和梯度方向的协调配合,可以用单参数示例来直观理解:

  1. 梯度的作用
  • 当梯度为正时:θⱼ 减小(θⱼ := θⱼ − α × 正数),使代价函数下降
  • 当梯度为负时:θⱼ 增大(θⱼ := θⱼ − α × 负数),使代价函数下降
  • 当梯度为零时:θⱼ 停止更新,说明已到达最小值点
  1. 学习率 α 的影响
  • α 太小:参数更新步长小,收敛缓慢,需要大量迭代才能到达最小值点
  • α 太大:可能越过最小值点,导致代价函数发散,无法收敛
  • 自适应收敛:随着参数逐渐接近最小值点,梯度逐渐减小。即使 α 固定,参数更新的幅度也会自动变小,最终实现收敛。

线性回归的梯度下降

将梯度下降算法与线性回归的代价函数相结合,即可得到线性回归的梯度下降求解方法。

计算偏导数

计算线性回归代价函数 $J(\theta_0, \theta_1)$ 的偏导数:

对 $\theta_0$ 的偏导数:

1
∂/∂θ₀ J(θ₀, θ₁) = (1/m) * Σⁱ₌₁ᵐ (h_θ(x⁽ⁱ⁾) - y⁽ⁱ⁾)

对 $\theta_1$ 的偏导数:

1
∂/∂θ₁ J(θ₀, θ₁) = (1/m) * Σⁱ₌₁ᵐ (h_θ(x⁽ⁱ⁾) - y⁽ⁱ⁾) · x⁽ⁱ⁾

线性回归的梯度下降更新规则

将偏导数代入梯度下降公式,得到:

1
2
3
θ₀ := θ₀ - α · (1/m) * Σⁱ₌₁ᵐ (h_θ(x⁽ⁱ⁾) - y⁽ⁱ⁾)

θ₁ := θ₁ - α · (1/m) * Σⁱ₌₁ᵐ (h_θ(x⁽ⁱ⁾) - y⁽ⁱ⁾) · x⁽ⁱ⁾

算法流程总结

  1. 初始化参数 θ₀ 和 θ₁(例如,均设为 0)
  2. 计算所有训练样本的预测误差 h_θ(x⁽ⁱ⁾) - y⁽ⁱ⁾
  3. 代入更新规则,同时更新 θ₀ 和 θ₁
  4. 重复步骤 2-3,直到代价函数 J(θ₀, θ₁) 的变化小于某个阈值(收敛)
  5. 输出最优参数 θ₀ 和 θ₁,得到最终的假设函数

补充:批量梯度下降与正规方程

  • 批量梯度下降:适合大规模数据集,通过迭代方式求解,需要选择学习率 α
  • 正规方程:通过矩阵运算直接求解最优参数,无需迭代和学习率选择,但计算复杂度高,适用于小规模数据集

Author: Alex

Article Link: https://bodysuperman.github.io/zh-CN/2025/10/19/CS229-Notes-Part-1-Mathematical-Basics-of-Linear-Regression-%E2%80%94-From-Model-Formulation-to-Gradient-Descent/

License: This article is licensed under CC BY-NC-SA 4.0. Please credit the original author and include the source link when reposting.