Appearance
第1章 线性模型 — 机器学习的基石
Chapter 1: Linear Models — The Foundation of Machine Learning
线性模型是机器学习的起点。 从最简单的线性回归(regression /rɪˈɡreʃən/)到逻辑回归,再到支撑向量机,线性模型构成了理解和构建更复杂模型的基础。本章的核(kernel /ˈkɜːrnl/)心是理解 参数(parameter /pəˈræmɪtər/) (Parameters)、损失 (Loss)、梯度(gradient /ˈɡreɪdiənt/) (Gradient) 这三个概念——它们将贯穿本书所有后续模型。
Linear models are where Machine Learning begins. From the simplest linear regression to logistic regression and beyond, linear models form the foundation for understanding and building more complex models. The core of this chapter is understanding three concepts — Parameters, Loss, Gradient — that will appear in every single model throughout this book.
依赖库 (Dependencies): numpy, scipy, matplotlib, scikit-learn
Code companion: code/linear_models.py
写在前面:本章有两条路 (Two Reading Paths)
这一章既要照顾零基础读者,也要照顾想吃透数学的读者,所以我们把它拆成两条路。你不需要先学完高数、线代、概率才能开始——按下面这条入门线走就行。
| 路径 | 适合谁 | 怎么读 |
|---|---|---|
| 🐤 入门线 | 没系统学过高数 / 线代 / 概率 | 只读正文 + 🌱「先有个感觉」小盒 + 代码 + 小结。所有带 📐 的小节、所有「严格推导」折叠块,看不懂直接跳过,不影响你学会用模型。 |
| 🦅 深入线 | 想搞懂"为什么",能啃公式 | 在入门线基础上,展开所有 🔍 演算盒和 📐 推导,跟着每一步算一遍。 |
📐 标记的含义:凡是带 📐 的小节,属于"可选深水区"——里面有矩阵求导、海森矩阵、似然这类需要数学背景的内容。跳过它们,你仍然能完整理解线性回归/逻辑回归在干什么、怎么用。 等以后补完卷二数学基础,再回头展开也不迟。
🧰 迷你数学补给站 (Just-Enough Math)
本章会冒出几个数学词。你不用专门去学一遍,下面这张"够用就好"的速查表能让你读下去;想深入再去看《卷2 数学基础》。
| 词 | 一句话够用版 | 生活类比 |
|---|---|---|
| 导数 / 斜率 | 函数在某点"上升还是下降、有多陡" | 山坡的倾斜程度 |
| 偏导数 | 多个变量时,"只动其中一个、其它不动"的斜率 | 只拧一个旋钮,看声音怎么变 |
| 梯度 (gradient) | 把所有偏导打包成一个箭头,指向上升最快的方向 | 站在山坡上,"最陡的上山方向" |
| 向量 | 一串数排成一列,代表一个样本的多个特征 | 一个人的 [身高, 体重, 年龄] |
| 点积 | 对应位置相乘再相加,得到一个"加权总分" | 各科成绩 × 权重,算总评分 |
| "让后面这个东西最小的那个取值" | 哪家店最便宜——要的是"哪家",不是"多少钱" | |
| 似然 (likelihood) | "用这套参数,看到手上这批数据的可能性有多大" | 这副牌型下,对手这么出牌的概率 |
| 矩阵 | 把很多样本(向量)摞成一张表,一行一个样本 | 一张 Excel:行是人,列是特征 |
读到对应概念时回来查一眼即可。下面正式开始。
目录 (Table of Contents)
- 线性回归 (Linear Regression)
- 逻辑回归 (Logistic Regression)
- 正则化(regularization /ˌreɡjələraɪˈzeɪʃən/) (Regularization)
- 三个核心概念 (Three Core Concepts)
- 小结 (Summary)
1. 线性回归 (Linear Regression)
1.1 问题定义 (Problem Formulation)
线性回归是监督学习中最基本的模型。给定
时间线:
- 1805: Legendre 在《Nouvelles méthodes pour la détermination des orbites des comètes》中首次发表最小二乘法
- 1809: Gauss 在《Theoria motus corporum coelestium》中独立提出最小二乘
- 1958: Cox 提出逻辑回归(Logistic Regression),
用向量形式简洁表示为:
其中
为了符号简洁,我们通常将偏置
对于全部
其中
1.2 MSE 损失函数 (MSE Loss Function)
我们的目标: 找到最优的
最常用的损失函数:均方误差(MSE, Mean Squared Error):
为什么用 MSE? 最小化 MSE 等价于 极大似然估计(MLE) 在噪声服从高斯分布下的解。详细推导见《AI 数学基础》第5章。
1.3 最小二乘与正规方程 (OLS and Normal Equations) 📐
🌱 先有个感觉(🐤 入门线只看这一段就够)
我们想给一堆点画一条"最贴合"的直线。"最贴合"= 上一节的 MSE 误差最小。
神奇的是:对于直线这种简单模型,不用一步步试,有一个公式能一口气直接算出最优答案——就像解方程
直接得 ,不用慢慢猜。这个公式叫正规方程 (Normal Equation): 你现在不需要看懂它怎么来的,只需要记住一件事:线性回归有"标准答案公式",代入数据就能算出最佳直线。 下面的推导是讲"这个公式凭什么成立",属于 📐 深水区,看不懂可以直接跳到 §1.4。想看具体数字怎么代进去算的,展开下面的 🔍 演算盒(那个反而很友好)。
推导:从 MSE 到正规方程 🦅
令损失函数为(为了求导方便,有时也写作
第1步:展开损失函数
第2步:对
回忆矩阵微积分公式:
,若 对称则
所以:
第3步:令梯度为0,求解
这就是正规方程 (Normal Equations)。当
这就是最小二乘法 (Ordinary Least Squares, OLS) 的闭式解。
几何解释:
是 在 的列空间上的正交投影。 被称为投影矩阵。
第4步:验证最优性 🦅 (可跳过的深水区:解释"为什么这个解是最低点而非最高点")
🐤 入门线翻译:MSE 这个误差函数的形状像一个碗(只有一个底),所以上面算出的那个点保证是"碗底"——也就是误差最小处,不可能是别的奇怪位置。"海森矩阵正定"就是数学上说"它是个朝上的碗"的方式。
何时使用闭式解 vs 梯度下降?
| 方法 | 优点 | 缺点 |
|---|---|---|
| 闭式解 (Normal Equations) | 一步得到精确解 | |
| 梯度下降 (Gradient Descent) | 可扩展到大 | 需要调学习率,迭代收敛 |
经验法则:
时闭式解 OK, 或 极大时用梯度下降。
🔍 完整演算:正规方程手算 — 4×2 数据集
📐 公式
正规方程(Normal Equation)给出线性回归的闭式解:
📖 参数含义
| 符号 | 名称 | 含义 |
|---|---|---|
| 设计矩阵 | ||
| 目标向量 | ||
| 权重向量 | ||
| 格拉姆矩阵 | ||
| 格拉姆逆矩阵 | 当 |
📝 公式来源
从 MSE 损失
令梯度为零(最优解的必要条件):
当
✏️ 手算演示
数据集: 4 个样本,2 个特征
(真实生成关系:
Step 1: 构建设计矩阵
在原始特征前插入一列全 1(对应偏置项
Step 2: 计算
逐元素验算:
Step 3: 计算
Step 4: 求
先计算
行列式非零,矩阵可逆。伴随矩阵法求逆:
Step 5: 计算最优权重
因此:
恢复出生成数据的真实参数
🌍 实际意义
- 何时用闭式解: 特征数
且 远小于样本数 时,正规方程一步到位,无需调参 - 何时用梯度下降:
或 极大时, 的矩阵求逆代价过高,迭代法更优 - 共线性风险: 若
的列近似线性相关, 接近奇异,求逆数值不稳定——这是实际数据中更常见的情况,此时正则化是标准解法
1.4 梯度下降解法 (Gradient Descent Solution) 📐
🌱 先有个感觉(🐤 入门线必读)
上一节的"标准答案公式"很好,但它有个毛病:当特征非常多(比如几百万个)时,那个公式算起来会慢到算不动(要对一个超大矩阵求逆)。深度学习里全靠另一招——梯度下降。
想象你被蒙住眼睛站在山坡上,要走到山谷最低处。你看不见全局,但能用脚感觉到哪个方向最陡,于是你朝最陡的下坡方向迈一小步;到了新位置再感觉一次、再迈一步……反复下去,自然就走到谷底了。
- "山的高度" = 损失(误差),越低越好;
- "最陡的方向" = 梯度;
- "一小步的大小" = 学习率
(步子太大会迈过头,太小会走很久)。 就这么简单。下面的公式只是把"朝最陡下坡方向迈一小步"这句话写成数学。
梯度下降是迭代优化中最常用的方法。其核心思想很简单:
沿着损失函数梯度的反方向走,就能下降到局部(这里是全局)最低点。
算法步骤
- 初始化
- 对
直到收敛: 其中 是学习率 (learning rate)。
线性回归的梯度
物理意义: 梯度的每个分量告诉我们在对应方向上的调整幅度——残差
三种变体
- 批量梯度下降 (Batch GD): 每次用所有
个样本计算梯度 → 准确但慢 - 随机(stochastic /stəˈkæstɪk/)梯度下降 (SGD): 每次用 1 个样本 → 快但波动大
- 小批量梯度下降 (Mini-batch GD): 每次用
个样本(实用中最常见)
🔍 完整演算:梯度下降手算 — 3 步迭代
📐 公式
梯度下降更新规则:
线性回归的梯度:
📖 参数含义
| 符号 | 名称 | 含义 |
|---|---|---|
| 第 | 包含偏置 | |
| 学习率 | 控制每步更新幅度,本例取 | |
| 梯度向量 | 损失函数在 | |
| 残差向量 | 每个样本的预测误差 | |
| MSE 损失 |
📝 公式来源
梯度下降来源于一阶泰勒展开:在
线性回归的梯度
✏️ 手算演示
使用与正规方程相同的 4×2 数据集:
Iteration 1
预测:
残差:
梯度:
更新:
MSE:
Iteration 2
预测:
残差:
MSE:
梯度:
更新:
Iteration 3
预测:
残差:
MSE:
梯度:
更新:
收敛进度:
🌍 实际意义
- 为什么 GD 比正规方程更可扩展: 每次迭代只需
计算(矩阵乘法),而正规方程需要 。当 很大时(如深度学习 ),正规方程完全不可行,GD 是唯一选择 - 学习率是关键:
太小收敛慢,太大可能发散。实践中常用学习率调度(learning rate schedule)或自适应方法(Adam) - 三种变体: Batch GD(准确但慢)、SGD(快但震荡)、Mini-batch(折中,最常用)
- 本例中: 3 步后 MSE 下降 77%,说明梯度下降在前几步效率最高,后期接近最优点时收敛变慢(梯度变小)
1.5 实现与可视化 (Implementation & Visualization)
请运行 code/linear_models.py 中的 demo_linear_regression() 函数,查看:
- 损失下降曲线 — 随着迭代次数增加,MSE 单调递减
- 拟合结果 — 回归线穿过数据点云
- 参数轨迹等高图 — 参数
在损失曲面上的优化路径 - 闭式解 vs GD 比较 — 两者最终收敛到相同位置
2. 逻辑回归 (Logistic Regression)
2.1 从线性回归到分类 (From Linear Regression to Classification)
线性回归预测连续值。但如果我们想预测类别(如 "是猫/不是猫"、"良性/恶性")怎么办?
一个朴素的想法:对线性输出加一个阈值:
但这样做的问题是:
- 不可导 → 无法用梯度下降优化
- 对远离决策边界的数据过于"自信"
- 对极端值敏感
逻辑回归 (Logistic Regression) 解决这个问题——它名为"回归",实为分类算法。
2.2 Sigmoid 函数 (Sigmoid Function)
逻辑回归的核心是 Sigmoid 函数(也称 Logistic 函数):
关键性质:
| 性质 | 说明 |
|---|---|
| 输出范围 | |
| 对称性 | |
| 单调性 | 严格单调递增 |
| 导数 | |
| 概率解释 | 输出值可以解释为 $P(y=1 |
Sigmoid 的导数推导:
这个优雅的导数形式使得后续梯度计算变得非常简单。
2.3 似然与交叉熵损失 (Likelihood & Cross-Entropy Loss) 📐
🌱 先有个感觉(🐤 入门线必读,公式可跳过)
做分类时,模型对每个样本输出一个概率,比如"这是猫的概率 80%"。我们需要一把尺子,衡量"模型猜得有多准",好让它改进。这把尺子叫交叉熵 (Cross-Entropy),规则非常符合直觉:
- 真实答案是猫,模型说"90% 是猫" → 惩罚很小(猜对了,且很自信)。
- 真实答案是猫,模型说"10% 是猫" → 惩罚巨大(错得离谱还很自信,狠狠扣分)。
也就是说:模型对正确答案给的概率越高,损失越小;给的概率越低(尤其错得自信),损失越大。 训练就是不断调参数,让这个总惩罚变小。
下面的"似然""负对数"是在严格地推导出这把尺子的公式,属于 📐 深水区。入门线只要记住"交叉熵 = 衡量分类猜得准不准的尺子,猜错得越自信罚得越狠"即可,可直接跳到 §2.4。
模型定义 🦅
逻辑回归模型假设:
统一写成:
其中
从似然到损失函数
对于
取负对数(最大化似然 = 最小化负对数似然):
这就是交叉熵损失 (Cross-Entropy Loss):
其中
交叉熵 vs MSE for 分类: 交叉熵在错误预测时产生更大的梯度(因为
在接近0时趋向 ),训练更高效。MSE + Sigmoid 会在预测极端错误时梯度趋近0(sigmoid 饱和区),导致学习停滞。
梯度推导
令
对单个样本的损失
惊人地简洁!整体梯度为:
这与线性回归的梯度形式完全一致! 唯一的区别是
🔍 完整演算:逻辑回归梯度手算 — 单样本链式法则
📐 公式
逻辑回归的单样本交叉熵损失及其梯度:
其中
📖 参数含义
| 符号 | 名称 | 含义 |
|---|---|---|
| 输入特征 | ||
| 真实标签 | 二分类: | |
| 预测概率 | ||
| logit | 线性输出 | |
| Sigmoid 函数 | ||
| 交叉熵损失 | 衡量预测概率分布与真实标签的差异 |
📝 公式来源
利用链式法则和 Sigmoid 的导数性质
其中第二步使用了
✏️ 手算演示
输入: 单个样本
初始参数:
学习率:
Step 1: 计算 logit
Step 2: 通过 Sigmoid 得到预测概率
计算
因此:
解读:模型认为该样本属于类别 1 的概率约为 78.6%。
Step 3: 计算交叉熵损失
Step 4: 计算梯度
偏置的梯度:
Step 5: 更新参数
更新后参数:
梯度方向解读:
🌍 实际意义
- 梯度形式简洁的根源:
与线性回归梯度 形式一致,差异仅在于 的计算方式。这意味着同一套优化代码只需更换最后的激活函数即可在回归与分类间切换 - 交叉熵 vs MSE: 如果对分类使用 MSE + Sigmoid,当预测极端错误时(如
但 ),Sigmoid 进入饱和区, ,梯度趋近 0,学习停滞。交叉熵的对数项抵消了 Sigmoid 的导数,保证了梯度始终有效 - 链式法则的力量: 本演算展示了反向传播的核心思想——将复杂函数的导数分解为简单步骤的乘积,这正是所有深度学习自动微分的基石
2.4 决策边界 (Decision Boundary)
逻辑回归的决策边界是
→ 预测 → 预测 → 决策边界(分界线)
对于二维特征,决策边界是一条直线。扩展到高维就是超平面。
线性可分 vs 非线性: 逻辑回归的决策边界在特征空间中是线性的。但通过特征变换(如多项式特征),可以拟合非线性边界——这引出了"核方法"的思想。
2.5 实现与可视化 (Implementation & Visualization)
请运行 code/linear_models.py 中的 demo_logistic_regression() 函数,查看:
- 合成分类数据 — 两类数据点
- 决策边界 — 模型学到的分类线
- Sigmoid 概率曲面 — 决策边界附近的概率变化
- 损失下降曲线 — 交叉熵随迭代单调递减
- scikit-learn 比较 — 自实现与 sklearn 结果一致
3. 正则化 (Regularization)
3.1 过拟合与欠拟合 (Under-fitting vs Over-fitting)
| 状态 | 训练误差 | 测试误差 | 原因 |
|---|---|---|---|
| 欠拟合 (Under-fitting) | 高 | 高 | 模型太简单,无法捕捉数据模式 |
| 恰好 (Just right) | 低 | 低 | 模型复杂度与数据匹配 |
| 过拟合 (Over-fitting) | 极低 | 高 | 模型过于复杂,学到了噪声 |
正则化 (Regularization) 是防止过拟合的核心技术。它的本质是:在损失函数中加入对模型复杂度的惩罚项。
3.2 L2 正则化 / Ridge (Ridge Regression)
Ridge 回归的损失函数:
其中
正规方程修正
数值稳定性:
总是可逆的(即使 不是列满秩),这保证了解的存在性。 本身可能奇异(特征数 > 样本数时),加上 使其正定。
L2 正则化的效果
- 权重收缩: 所有权重都向0收缩,但不会精确为0
- 方差减小,偏差增加: 以少量偏差为代价大幅降低方差 → 整体测试误差降低
- 降低多重共线性影响: 使相关特征间的权重分配更稳定
3.3 L1 正则化 / Lasso (Lasso Regression)
Lasso 回归的损失函数:
其中
L1 正则化的关键特性:稀疏性
Lasso 的一个重要特性是它能使部分权重精确为0,从而实现特征选择。
为什么 L1 产生稀疏解而 L2 不? 这源于 L1 范数的几何形状——详见下节。
由于 L1 范数在
3.4 L1 vs L2 — 稀疏性的几何直觉 (Geometric Intuition for Sparsity)
🌱 先有个感觉(🐤 入门线必读)
L1 和 L2 都是给"权重太大"罚款,防止模型乱长。但它们罚的方式不同,导致一个有趣的区别:
- L2 (Ridge):把所有权重整体压小,但谁也不会被压到刚好 0——像给全班整体降温,人人都凉一点。
- L1 (Lasso):会把一些不重要的特征的权重直接压成 0,相当于"自动删掉没用的特征"——像裁员,直接砍掉贡献最小的人。
所以当你有几百个特征、怀疑大部分没用时,L1 能帮你自动做特征筛选(留下的非零权重就是它选中的重要特征)。这就是"稀疏性"的实际价值。下面用几何图形解释"为什么 L1 偏偏能压到 0"。
核心直觉:约束优化视角
正则化等价于在约束条件下最小化原始损失:
- Lasso:
s.t. - Ridge:
s.t.
在二维 (
- L2 约束区域是圆形
- L1 约束区域是菱形(顶点在坐标轴上)
损失函数的等高线(椭圆)与约束区域的切点位置决定了最优解:
| 约束 | 形状 | 切点位置 | 特性 |
|---|---|---|---|
| L2 (Ridge) | 圆 | 大概率不在坐标轴上 | 权重收缩但非零 |
| L1 (Lasso) | 菱形 | 顶点(坐标轴上)概率大 | 部分权重精确为0 |
更精确的论证: 🦅 (可跳过的深水区:用"近端算子"严格说明 L1 为何把小权重直接归零) L1 正则化的近端算子 (proximal operator) 是软阈值 (soft-thresholding):
当
3.5 弹性网 (Elastic Net) — 两个世界的优点
结合 L1 和 L2:
当特征之间存在分组相关时,弹性网通常优于 Lasso(Lasso 在组相关中只随机选一个)。
3.6 实践指南 (Practical Guide)
python
from sklearn.linear_model import LinearRegression, Ridge, Lasso
# 普通线性回归
lr = LinearRegression().fit(X_train, y_train)
# Ridge(L2)
ridge = Ridge(alpha=1.0).fit(X_train, y_train)
# Lasso(L1)
lasso = Lasso(alpha=0.1).fit(X_train, y_train)调参建议:
(sklearn 中为 alpha) 通常用交叉验证选择:RidgeCV和LassoCV。
4. 三个核心概念 (Three Core Concepts)
本章是本书理解所有后续模型的基石。我们反复使用了三个核心概念,它们将贯穿全书:
4.1 参数 (Parameters)
模型需要学习的"旋钮"。
| 模型 | 参数 |
|---|---|
| 线性回归 | |
| 逻辑回归 | |
| 神经网络 | 每层的权重矩阵 |
| CNN | 卷积(convolution /ˌkɒnvəˈluːʃən/)核权重 + 全连接层权重 |
| Transformer(/trænsˈfɔːrmər/) |
核心洞察: 几乎所有机器学习模型的结构都可以概括为:
其中
4.2 损失 (Loss)
衡量预测有多"差"的标尺。
| 任务 | 损失函数 | 公式 |
|---|---|---|
| 回归 | MSE | |
| 二分类 | 交叉熵 | |
| 多分类 | 交叉熵 | |
| 聚类 | K-means 损失 |
核心洞察: 损失函数的选择取决于任务类型和数据分布假设。MSE 假设高斯噪声,交叉熵假设分类分布。选择正确的损失函数比选择模型架构有时候更重要。
4.3 梯度 (Gradient)
指引参数更新方向的信息源。
优化 = 跟随梯度下山
这个简单的公式是所有深度学习训练的核心。在后续章节中,我们会看到:
- 反向传播(backpropagation /ˌbækprəpəˈɡeɪʃən/) (Backpropagation) 如何高效计算深度网络的梯度
- 动量(momentum /məˈmentəm/) (Momentum)、Adam 等如何改进梯度下降
- 学习率调度如何影响收敛
4.4 三者的关系
参数 θ → 模型预测 ŷ = f(x; θ) → 损失 L(ŷ, y) → 梯度 ∇θL → 更新 θ
↑ |
└────────────────────── 循环 (Epoch) ────────────────────────┘理解这3个概念 = 理解了机器学习优化的 90%。 后续所有章节都只是在这个框架上增加:更复杂的参数结构(深度)、更巧妙的损失函数(对比学习、GAN)、更高效的梯度计算方法(自动微分、重参数化)。
本章演算盒索引
| 位置 | 演算盒 | 跳转 |
|---|---|---|
| §1.3 | 🔍 正规方程手算 — 4×2 数据集 | 跳转 |
| §1.4 | 🔍 梯度下降手算 — 3 步迭代 | 跳转 |
| §2.3 | 🔍 逻辑回归梯度手算 — 单样本链式 | 跳转 |
5. 小结 (Summary)
5.1 关键公式回顾
| 概念 | 公式 |
|---|---|
| 线性回归模型 | |
| MSE 损失 | |
| 正规方程 | |
| Sigmoid | |
| 交叉熵损失 | |
| 梯度下降更新 | |
| Ridge (L2) | |
| Lasso (L1) | |
| 弹性网 |
5.2 与后续章节的联系
| 后续章节 | 联系 |
|---|---|
| SVM | 用 hinge loss 替代交叉熵,加入最大间隔思想 |
| 决策树 / 随机森林 | 非线性模型,不使用梯度 |
| 神经网络 | 多层逻辑回归 + 非线性激活函数 |
| CNN | 用卷积核替代全连接权重 |
| Transformer | 自注意力(attention /əˈtenʃən/)机制 + 位置编码 |
| 生成模型 (GAN/VAE) | 更复杂的参数结构和损失函数 |
🐤 入门线一句话核心收获:机器学习就是 「调参数(旋钮)→ 看损失(错多少)→ 顺着梯度(最陡下坡方向)改一点 → 重复」。线性回归和逻辑回归只是这个循环里最简单的两个例子。记住这一句,后面所有模型都是它的升级版。
5.3 动手练习
🐤 入门线(不需要推导,跑代码 + 观察即可):
- 跑一跑: 运行
code/linear_models.py,看损失曲线是不是真的一路下降,回归线是不是穿过点云。 - 调旋钮: 把学习率
改大 10 倍、再改小 10 倍,观察损失曲线怎么变(发散?变慢?),亲身体会"步子大小"的影响。 - 直觉题: 用大白话回答——为什么不能直接拿"加阈值的线性回归"做分类,非要用 Sigmoid?(提示:回看 §2.1)
🦅 深入线(需要数学):
- 推导练习: 从零推导多项式回归(在线性回归中加入
特征),写出正规方程 - 代码练习: 在
linear_models.py中加入 Elastic Net 正则化的梯度下降实现 - 直觉练习: 为什么逻辑回归的梯度形式与线性回归相同?核心区别在哪里?
- 实验练习: 在真实数据集(如 sklearn 的
diabetes)上比较 LinearRegression, Ridge, Lasso 的性能
下章预告: 第2章将介绍支撑向量机 (SVM),在线性模型的基础上引入"最大间隔"的思想,并看到"核技巧"如何让线性模型处理非线性数据。
Last updated: 2026-06-16
参考文献 (References)
- Legendre, A. M. (1805). Nouvelles méthodes pour la détermination des orbites des comètes. Courcier, Paris. — 首次提出最小二乘法。
- Gauss, C. F. (1809). Theoria motus corporum coelestium. — 独立提出最小二乘。
- Cox, D. R. (1958). The regression analysis of binary sequences. J. R. Statist. Soc. B, 20(2), 215–232. — 逻辑回归的开创性论文。