机器学习——线性回归(详解:附基础数学知识点补充)
前言:在上一篇博客《机器学习中的线性回归:从原理到实战》中,我发现部分内容较为抽象,尤其是公式推导部分可能让读者感到吃力。考虑到这些知识点的重要性,我决定撰写这篇补充讲解,帮助大家更好地理解相关内容。
知识点整理
机器学习分类
首先我们知道机器学习可以分为有监督学习、无监督学习、半监督学习和强化学习,具体描述如下:
| 分类 | 描述 | 常见算法/技术 |
|---|---|---|
| 有监督学习 | 利用带标签的数据进行训练,以预测未知数据的标签。 | 线性模型(线性回归、Lasso回归等)、K近邻、决策树、朴素贝叶斯、支持向量机、神经网络、集成学习(随机森林、AdaBoost等) |
| 无监督学习 | 学习数据的内在结构或模式,无需标签。主要用于数据探索或模式发现。 | 聚类(K-means、高斯混合聚类等)、降维(主成分分析、奇异值分解等) |
| 半监督学习 | 结合少量有标签数据和大量无标签数据进行学习,提升性能。 | 半监督SVM、图半监督学习、生成模型、协同训练 |
| 强化学习 | 智能体通过与环境交互来学习策略,以产生最优的数据分布。 | 动态规划、蒙特卡洛树搜索、Q学习、策略梯度算法、模仿学习 |
有监督学习
有监督学习是通过带标签的数据进行学习,从而能够预测未知数据的标签。它包括以下几种模型和技术:
- 线性模型:如线性回归、Lasso回归、岭回归、线性判别和逻辑回归。
- K近邻:基于实例的学习方法,用于分类和回归问题。
- 决策树:一种树形结构的模型,用于分类和回归任务。
- 朴素贝叶斯:基于贝叶斯定理的简单概率分类器。
- 支持向量机:寻找最优超平面来区分不同类别的数据点。
- 神经网络:模拟人脑神经元工作的计算模型,广泛应用于各种复杂的预测任务。
- 集成学习:结合多个弱学习器来构建一个强学习器,包括Bagging(如随机森林)和Boosting(如AdaBoost、梯度提升树、XGBoost、LightGBM)。
无监督学习
无监督学习旨在学习数据的内在结构或模式,通常用于数据探索或模式发现。它分为聚类和降维两大类:
- 聚类:将数据集划分为若干个组,使得同一组内的数据相似度较高,而不同组之间的数据相似度较低。常见的聚类算法有K-means、高斯混合聚类、密度聚类、层次聚类和谱聚类。
- 降维:减少数据的维度,同时保留尽可能多的信息。常用的降维技术包括主成分分析、奇异值分解、t-SNE和自编码器。
半监督学习与强化学习
- 半监督学习:结合少量有标签数据和大量无标签数据,自动利用无标签数据来提升学习性能。具体方法包括半监督SVM、图半监督学习、生成模型和协同训练。
- 强化学习:寻找一个智能体策略,使其在与动态环境交互的过程中产生最优的数据分布。强化学习的方法包括动态规划、蒙特卡洛树搜索、Q学习、策略梯度算法和模仿学习。
简述
我们之前已经详细介绍过K近邻算法 KNN算法详解:从原理到实战(鸢尾花分类 & 手写数字识别)KNN(K-Nearest Neighbors)是一种基于"物以类聚"思想的有监督学习算法,主要应用于分类任务。如果对这个算法感兴趣,可以参考链接中的详细讲解。
本文的重点是介绍线性回归这一机器学习中最基础且重要的算法。线性回归不仅在经济学、金融学、社会科学等领域有广泛应用,更是理解更复杂模型(如逻辑回归、神经网络)的基础。因此,掌握线性回归对后续学习至关重要。
线性回归的概述
本节将概述线性回归的核心内容和相关术语,为后续学习奠定基础并明确学习目标。
数学模型
线性回归可分为一元线性回归和多元回归两种类型。为便于理解,我们将从简单的一元线性回归开始讲解,逐步扩展到多元线性回归分析。
在数学中一元线性回归模型,数学表达式为:
y = k x + b y = kx + b y=kx+b
其中:
- y y y:因变量(也称为响应变量或输出变量),是我们想要预测的变量。
- x x x:自变量(也称为解释变量或输入变量),是用来预测 y y y 的变量。
- k k k:斜率(slope),表示当自变量 x x x 增加一个单位时,因变量 y y y 的平均变化量。
- b b b:截距(intercept),表示当 x = 0 x = 0 x=0 时 y y y 的取值,即回归直线与纵轴的交点。
而在机器学习中,一元线性回归的数学表达式虽然形式上与数学中相同,但在术语、表示方式和建模思想上有一些重要的区别和扩展。
一、数学表达式
形式上依然是线性关系:
y = w x + b y = w x + b y=wx+b
或更常见的写法:
y
^
=
w
i
x
+
b
\hat{y} = w_i x + b
y^=wix+b
其中:
- y ^ \hat{y} y^:模型对输出的预测值(predicted output),而不是真实值 y y y
- x x x:输入特征(自变量)
- w i w_i wi 或 w w w:权重(weight),对应数学中的“斜率” k k k
- b b b:偏置(bias),对应数学中的“截距” b b b
二、术语对比
| 数学/统计术语 | 机器学习术语 | 说明 |
|---|---|---|
| 因变量 y y y | 标签(label)或 目标值(target) | 要预测的值 |
| 自变量 x x x | 特征(feature)或 输入(input) | 用于预测的变量 |
| k k k(斜率) | 权重(weight) | 表示特征对预测的影响程度 |
| b b b(截距) | 偏置(bias) | 模型的“基础输出”,不依赖于输入 |
| y = k x + b y = kx + b y=kx+b | 模型(model)或 假设函数 h w ( x ) h_w(x) hw(x) | 机器学习中称为“假设”(hypothesis) |
例如,机器学习中常将线性回归模型写作:
y ^ = h w ( x ) = w x + b \hat{y} = h_w(x) = w x + b y^=hw(x)=wx+b
机器学习的核心思想
与数学中“已知点求直线”不同,机器学习的目标是:
从数据中自动学习最优的 w w w 和 b b b,使得预测值 y ^ \hat{y} y^ 尽可能接近真实值 y y y
这通过以下步骤实现:
-
定义损失函数(Loss Function)
常用均方误差(MSE): L ( w , b ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L(w, b) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 L(w,b)=n1∑i=1n(yi−y^i)2 -
优化算法
使用梯度下降(Gradient Descent)等方法,自动调整 w w w 和 b b b,最小化损失。 -
训练过程
模型通过不断“试错”和调整参数,最终学会数据中的线性关系。
向多维扩展(机器学习的优势)
在机器学习中,很容易扩展到多元线性回归:
y ^ = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b \hat{y} = w_1 x_1 + w_2 x_2 + \cdots + w_d x_d + b y^=w1x1+w2x2+⋯+wdxd+b
或向量形式:
y ^ = w T x + b \hat{y} = \mathbf{w}^T \mathbf{x} + b y^=wTx+b
这在数学中较难直观表达,但在机器学习中是标准做法。
小结
综上所述:
在学习线性回归的过程中,首先需要明确模型的数学形式,即建立假设函数
y
^
=
w
x
+
b
\hat{y} = w x + b
y^=wx+b,理解其结构与参数含义。这一过程要求我们对数据集进行充分的探索与分析,例如观察特征与目标变量之间的关系,判断线性假设是否合理,从而为构建合适的模型奠定基础。
随后,通过定义损失函数(如均方误差 MSE),量化模型预测值与真实值之间的偏差。接着,采用优化算法(如梯度下降)迭代调整权重 w w w 和偏置 b b b,以最小化损失函数,最终找到能够最好拟合数据的最优参数。
这一系统流程使我们能够从数据中自动学习并揭示潜在的线性关系,实现对未知样本的有效预测。
学习线性回归的关键在于:先理解模型的数学表达式,结合对数据的分析建立合理假设;然后通过定义损失函数衡量误差,并利用优化算法(如梯度下降)求解最优的权重 w w w 和偏置 b b b,从而从数据中学习到最优的线性关系,实现预测目标。
| 步骤 | 内容 |
|---|---|
| 1. 模型假设 | 假设目标变量与特征之间存在线性关系: y ^ = w x + b \hat{y} = w x + b y^=wx+b |
| 2. 数据理解 | 探索数据分布、相关性、清洗与预处理 |
| 3. 损失函数 | 定义 MSE 等指标衡量预测误差 |
| 4. 优化算法 | 使用梯度下降或解析法求解最优参数 |
| 5. 模型评估 | 使用测试集评估性能(如 RMSE、R² 等) |
| 6. 预测应用 | 用训练好的模型对新数据进行预测 |
数学知识补充(可跳过)
在定义损失函数和优化算法时,我们需要运用一些数学知识。例如,在模型假设阶段, y ^ = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b \hat{y} = w_1 x_1 + w_2 x_2 + \cdots + w_d x_d + b y^=w1x1+w2x2+⋯+wdxd+b与 y ^ = w T x + b \hat{y} = \mathbf{w}^T \mathbf{x} + b y^=wTx+b的等价性也需要数学基础。因此,这里进行相关补充说明,数学基础较好的读者可以跳过这部分内容。
基础数学 - 机器学习中常见的数据表示
为什么要学习标量、向量、矩阵、张量?
- 宗旨:用到就学什么,不要盲目地展开、大篇幅学数学。
标量(Scalar)
- 定义:一个独立存在的数,只有大小没有方向。
- 示例:一个具体的数值,如温度、年龄等。
向量(Vector)
- 定义:向量指一列顺序排列的元素,默认是列向量。向量有大小和方向。
- 示例:
- 张三的数理化成绩信息: ( 70 80 90 ) ∈ R 3 \begin{pmatrix}70 \\ 80 \\ 90\end{pmatrix} \in \mathbb{R}^3 708090 ∈R3
- 这个向量,表示三个科目的成绩。
矩阵(Matrix)
- 定义:二维数组。
- 示例:
- 张三、李四的数理化成绩信息:
( 70 80 90 75 85 95 ) ∈ R 2 × 3 \begin{pmatrix} 70 & 80 & 90 \\ 75 & 85 & 95 \end{pmatrix} \in \mathbb{R}^{2 \times 3} (707580859095)∈R2×3 - 这是一个 2 × 3 2 \times 3 2×3的矩阵,表示两个学生的三个科目的成绩。
- 张三、李四的数理化成绩信息:
张量(Tensor)
- 定义:数组,张量是基于向量和矩阵的推广。
- 示例:
- 数学中的张量
tensor
∈
R
2
×
3
×
4
\text{tensor} \in \mathbb{R}^{2 \times 3 \times 4}
tensor∈R2×3×4:
- 可以理解为2个 3 × 4 3 \times 4 3×4矩阵、3个 2 × 4 2 \times 4 2×4矩阵或4个 2 × 3 2 \times 3 2×3矩阵。
- 张量可以表示更复杂的数据结构,例如图像数据(高度×宽度×通道)。
- 数学中的张量
tensor
∈
R
2
×
3
×
4
\text{tensor} \in \mathbb{R}^{2 \times 3 \times 4}
tensor∈R2×3×4:
导数和偏导
导数的基本概念
导数的定义:当函数 y = f ( x ) y = f(x) y=f(x) 的自变量 x x x 在一点 x 0 x_0 x0 上产生一个增量 Δ x \Delta x Δx 时,函数输出值的增量 Δ y \Delta y Δy 与自变量增量 Δ x \Delta x Δx 的比值在 Δ x \Delta x Δx 趋于 0 时的极限 A A A 如果存在, A A A 即为在 x 0 x_0 x0 处的导数,记作 f ′ ( x 0 ) f'(x_0) f′(x0)。
数学表达式如下:
f ′ ( x 0 ) = lim Δ x → 0 Δ f Δ x = lim Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f'(x_0) = \lim_{\Delta x \to 0} \frac{\Delta f}{\Delta x} = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} f′(x0)=Δx→0limΔxΔf=Δx→0limΔxf(x0+Δx)−f(x0)
解释:
- 导数:表示函数在某一点处的变化率。
- 增量: Δ x \Delta x Δx 表示自变量 x x x 的微小变化量; Δ y \Delta y Δy 表示因变量 y y y 相应的变化量。
- 极限:当 Δ x \Delta x Δx 趋近于 0 时,比值 Δ y Δ x \frac{\Delta y}{\Delta x} ΔxΔy 的极限值即为该点的导数值。
这个定义是微积分中导数的基本概念,用于描述函数在某一点的瞬时变化率。
导数的几何意义
函数 y = f ( x ) y = f(x) y=f(x) 在点 x 0 x_0 x0 处的导数的几何意义,就是曲线 y = f ( x ) y = f(x) y=f(x) 在点 P ( x 0 , f ( x 0 ) ) P(x_0, f(x_0)) P(x0,f(x0)) 处的切线的斜率,即曲线 y = f ( x ) y = f(x) y=f(x) 在点 P ( x 0 , f ( x 0 ) ) P(x_0, f(x_0)) P(x0,f(x0)) 处的切线的斜率是 f ′ ( x 0 ) f'(x_0) f′(x0)。
图像说明:
- 坐标系:图中展示了一个二维直角坐标系,横轴为 x x x,纵轴为 y y y。
- 曲线:曲线 y = f ( x ) y = f(x) y=f(x) 用黑色实线表示,从原点附近开始向上弯曲。
- 切线:在点 A ( x 0 , f ( x 0 ) ) A(x_0, f(x_0)) A(x0,f(x0)) 处画出了一条蓝色直线,表示该点处的切线。
- 点A和B:
- 点 A A A 是曲线 y = f ( x ) y = f(x) y=f(x) 上的一点,坐标为 ( x 0 , f ( x 0 ) ) (x_0, f(x_0)) (x0,f(x0))。
- 点
B
B
B 是切线上的一点,用于辅助说明切线的方向和斜率。

解释:
- 导数与切线斜率的关系:导数 f ′ ( x 0 ) f'(x_0) f′(x0) 表示函数 y = f ( x ) y = f(x) y=f(x) 在点 x 0 x_0 x0 处的变化率,几何上对应于该点处切线的斜率。
- 切线:过点 A ( x 0 , f ( x 0 ) ) A(x_0, f(x_0)) A(x0,f(x0)) 的切线反映了函数在该点附近的局部线性行为,其斜率 f ′ ( x 0 ) f'(x_0) f′(x0) 描述了函数在该点的增长速度。
常见函数的导数
常用导数公式及例子:
| 公式 | 例子 |
|---|---|
| ( C ) ′ = 0 (C)' = 0 (C)′=0 |
(
5
)
′
=
0
(5)' = 0
(5)′=0 ( 10 ) ′ = 0 (10)' = 0 (10)′=0 |
| ( x α ) ′ = α x α − 1 (x^\alpha)' = \alpha x^{\alpha-1} (xα)′=αxα−1 |
(
x
3
)
′
=
3
x
2
(x^3)' = 3x^2
(x3)′=3x2 ( x 5 ) ′ = 5 x 4 (x^5)' = 5x^4 (x5)′=5x4 |
| ( a x ) ′ = a x ln a (a^x)' = a^x \ln a (ax)′=axlna |
(
2
x
)
′
=
2
x
ln
2
(2^x)' = 2^x \ln 2
(2x)′=2xln2 ( 7 x ) ′ = 7 x ln 7 (7^x)' = 7^x \ln 7 (7x)′=7xln7 |
| ( e x ) ′ = e x (e^x)' = e^x (ex)′=ex | ( e x ) ′ = e x (e^x)' = e^x (ex)′=ex |
| ( log a x ) ′ = 1 x ln a (\log_a x)' = \frac{1}{x \ln a} (logax)′=xlna1 |
(
log
10
x
)
′
=
1
x
ln
10
(\log_{10} x)' = \frac{1}{x \ln 10}
(log10x)′=xln101 ( log 6 x ) ′ = 1 x ln 6 (\log_6 x)' = \frac{1}{x \ln 6} (log6x)′=xln61 |
| ( ln x ) ′ = 1 x (\ln x)' = \frac{1}{x} (lnx)′=x1 | ( ln x ) ′ = 1 x (\ln x)' = \frac{1}{x} (lnx)′=x1 |
| ( sin x ) ′ = cos x (\sin x)' = \cos x (sinx)′=cosx | ( sin x ) ′ = cos x (\sin x)' = \cos x (sinx)′=cosx |
| ( cos x ) ′ = − sin x (\cos x)' = -\sin x (cosx)′=−sinx | ( cos x ) ′ = − sin x (\cos x)' = -\sin x (cosx)′=−sinx |
导数的四则运算
| 公式 | 例子 |
|---|---|
| [ u ( x ) ± v ( x ) ] ′ = u ′ ( x ) ± v ′ ( x ) [u(x) \pm v(x)]' = u'(x) \pm v'(x) [u(x)±v(x)]′=u′(x)±v′(x) | ( e x + 4 ln x ) ′ = ( e x ) ′ + ( 4 ln x ) ′ = e x + 4 x (e^x + 4\ln x)' = (e^x)' + (4\ln x)' = e^x + \frac{4}{x} (ex+4lnx)′=(ex)′+(4lnx)′=ex+x4 |
| [ u ( x ) ⋅ v ( x ) ] ′ = u ′ ( x ) ⋅ v ( x ) + u ( x ) ⋅ v ′ ( x ) [u(x) \cdot v(x)]' = u'(x) \cdot v(x) + u(x) \cdot v'(x) [u(x)⋅v(x)]′=u′(x)⋅v(x)+u(x)⋅v′(x) | ( sin x ⋅ ln x ) ′ = ( sin x ) ′ ⋅ ln x + sin x ⋅ ( ln x ) ′ = cos x ⋅ ln x + sin x ⋅ 1 x (\sin x \cdot \ln x)' = (\sin x)' \cdot \ln x + \sin x \cdot (\ln x)' = \cos x \cdot \ln x + \sin x \cdot \frac{1}{x} (sinx⋅lnx)′=(sinx)′⋅lnx+sinx⋅(lnx)′=cosx⋅lnx+sinx⋅x1 |
| [ u ( x ) v ( x ) ] ′ = u ′ ( x ) ⋅ v ( x ) − u ( x ) ⋅ v ′ ( x ) v 2 ( x ) \left[\frac{u(x)}{v(x)}\right]' = \frac{u'(x) \cdot v(x) - u(x) \cdot v'(x)}{v^2(x)} [v(x)u(x)]′=v2(x)u′(x)⋅v(x)−u(x)⋅v′(x) | ( e x cos x ) ′ = ( e x ) ′ ⋅ cos x − e x ⋅ ( cos x ) ′ cos 2 ( x ) = e x ⋅ cos x − e x ⋅ ( − sin x ) cos 2 ( x ) \left(\frac{e^x}{\cos x}\right)' = \frac{(e^x)' \cdot \cos x - e^x \cdot (\cos x)'}{\cos^2(x)} = \frac{e^x \cdot \cos x - e^x \cdot (-\sin x)}{\cos^2(x)} (cosxex)′=cos2(x)(ex)′⋅cosx−ex⋅(cosx)′=cos2(x)ex⋅cosx−ex⋅(−sinx) |
| { g [ h ( x ) ] } ′ = g ′ ( h ) ⋅ h ′ ( x ) \{g[h(x)]\}' = g'(h) \cdot h'(x) {g[h(x)]}′=g′(h)⋅h′(x) |
(
e
2
x
)
′
=
e
2
x
⋅
(
2
x
)
′
=
2
e
2
x
(e^{2x})' = e^{2x} \cdot (2x)' = 2e^{2x}
(e2x)′=e2x⋅(2x)′=2e2x ( sin 2 x ) ′ = cos 2 x ⋅ ( 2 x ) ′ = 2 cos 2 x (\sin 2x)' = \cos 2x \cdot (2x)' = 2\cos 2x (sin2x)′=cos2x⋅(2x)′=2cos2x |
偏导数的基本概念
在多变量函数中,偏导数用于衡量函数对某一个自变量的变化率,而保持其他变量不变。它是多元微积分的核心概念,广泛应用于机器学习、优化、物理建模等领域。
一、基本定义
设函数 z = f ( x , y ) z = f(x, y) z=f(x,y) 是一个二元函数,则:
-
对 x x x 的偏导数
∂ f ∂ x = lim Δ x → 0 f ( x + Δ x , y ) − f ( x , y ) Δ x \frac{\partial f}{\partial x} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x, y) - f(x, y)}{\Delta x} ∂x∂f=Δx→0limΔxf(x+Δx,y)−f(x,y) -
对 y y y 的偏导数
∂ f ∂ y = lim Δ y → 0 f ( x , y + Δ y ) − f ( x , y ) Δ y \frac{\partial f}{\partial y} = \lim_{\Delta y \to 0} \frac{f(x, y + \Delta y) - f(x, y)}{\Delta y} ∂y∂f=Δy→0limΔyf(x,y+Δy)−f(x,y)
关键思想:求偏导时,将其他变量视为常数。
二、偏导数的记法
| 表达方式 | 含义 |
|---|---|
| ∂ f ∂ x \frac{\partial f}{\partial x} ∂x∂f | 函数 f f f 对变量 x x x 的偏导 |
| f x f_x fx 或 f x ( x , y ) f_x(x, y) fx(x,y) | 简写形式,表示对 x x x 求偏导 |
| ∂ x f \partial_x f ∂xf | 另一种简洁记法 |
三、几何意义
- ∂ f ∂ x \frac{\partial f}{\partial x} ∂x∂f:表示曲面 z = f ( x , y ) z = f(x, y) z=f(x,y) 在点 ( x , y ) (x, y) (x,y) 处,沿 x x x 方向 的切线斜率(即固定 y y y 时的变化率)。
- ∂ f ∂ y \frac{\partial f}{\partial y} ∂y∂f:表示沿 y y y 方向 的切线斜率(固定 x x x)。
直观理解:就像在山地上,向东走多快上升,向北走多快上升。
四、计算方法(核心原则)
“对谁求导,谁是变量;其余都是常数”
示例 1:
函数:
f
(
x
,
y
)
=
x
2
+
3
x
y
+
y
2
f(x, y) = x^2 + 3xy + y^2
f(x,y)=x2+3xy+y2
- ∂ f ∂ x = 2 x + 3 y \frac{\partial f}{\partial x} = 2x + 3y ∂x∂f=2x+3y(把 y y y 当常数)
- ∂ f ∂ y = 3 x + 2 y \frac{\partial f}{\partial y} = 3x + 2y ∂y∂f=3x+2y(把 x x x 当常数)
示例 2:
函数:
f
(
x
,
y
)
=
e
x
y
f(x, y) = e^{xy}
f(x,y)=exy
- ∂ f ∂ x = y e x y \frac{\partial f}{\partial x} = y e^{xy} ∂x∂f=yexy(链式法则, y y y 视为常数)
- ∂ f ∂ y = x e x y \frac{\partial f}{\partial y} = x e^{xy} ∂y∂f=xexy
五、高阶偏导数
可以对偏导数再次求导,得到二阶或更高阶偏导。
常见二阶偏导:
| 符号 | 名称 | 计算方式 |
|---|---|---|
| ∂ 2 f ∂ x 2 \frac{\partial^2 f}{\partial x^2} ∂x2∂2f | 二阶纯偏导(对 x x x 两次) | ∂ ∂ x ( ∂ f ∂ x ) \frac{\partial}{\partial x}\left(\frac{\partial f}{\partial x}\right) ∂x∂(∂x∂f) |
| ∂ 2 f ∂ y 2 \frac{\partial^2 f}{\partial y^2} ∂y2∂2f | 二阶纯偏导(对 y y y 两次) | ∂ ∂ y ( ∂ f ∂ y ) \frac{\partial}{\partial y}\left(\frac{\partial f}{\partial y}\right) ∂y∂(∂y∂f) |
| ∂ 2 f ∂ x ∂ y \frac{\partial^2 f}{\partial x \partial y} ∂x∂y∂2f | 混合偏导(先对 y y y,再对 x x x) | ∂ ∂ x ( ∂ f ∂ y ) \frac{\partial}{\partial x}\left(\frac{\partial f}{\partial y}\right) ∂x∂(∂y∂f) |
| ∂ 2 f ∂ y ∂ x \frac{\partial^2 f}{\partial y \partial x} ∂y∂x∂2f | 混合偏导(先对 x x x,再对 y y y) | ∂ ∂ y ( ∂ f ∂ x ) \frac{\partial}{\partial y}\left(\frac{\partial f}{\partial x}\right) ∂y∂(∂x∂f) |
六、向量形式:梯度(Gradient)
所有一阶偏导数组成的向量称为梯度,记作:
∇ f = ( ∂ f ∂ x , ∂ f ∂ y ) \nabla f = \left( \frac{\partial f}{\partial x},\ \frac{\partial f}{\partial y} \right) ∇f=(∂x∂f, ∂y∂f)
- 梯度方向:函数增长最快的方向
- 梯度大小:最大变化率
在机器学习中,梯度用于梯度下降算法优化模型参数。
小结
| 概念 | 说明 |
|---|---|
| 偏导数 | 多元函数对某一变量的变化率 |
| 计算原则 | 对谁求导,谁是变量;其余视为常数 |
| 几何意义 | 曲面在某一坐标方向上的切线斜率 |
| 高阶偏导 | 可求二阶、混合偏导,连续时混合顺序可交换 |
| 梯度 | 所有一阶偏导组成的向量,指向增长最快方向 |
| 应用 | 机器学习、优化、物理建模等 |
向量和矩阵
向量
向量的基本概念
- 向量是有大小和方向:
- 几何意义上表示:向量(1, 1),向量(1, 2)
向量基运算
- 加法、减法、数乘:
- ( 1 2 3 ) + ( 4 5 6 ) = ( 5 7 9 ) ∈ R 3 \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} + \begin{pmatrix} 4 \\ 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 5 \\ 7 \\ 9 \end{pmatrix} \in \mathbb{R}^3 123 + 456 = 579 ∈R3
- ( 1 2 3 ) − ( 4 5 6 ) = ( − 3 − 3 − 3 ) ∈ R 3 \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} - \begin{pmatrix} 4 \\ 5 \\ 6 \end{pmatrix} = \begin{pmatrix} -3 \\ -3 \\ -3 \end{pmatrix} \in \mathbb{R}^3 123 − 456 = −3−3−3 ∈R3
- 3 ∗ ( 4 5 6 ) = ( 12 15 18 ) ∈ R 3 3 * \begin{pmatrix} 4 \\ 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 12 \\ 15 \\ 18 \end{pmatrix} \in \mathbb{R}^3 3∗ 456 = 121518 ∈R3
向量矩阵转置 Transpose
- x = ( 1 2 3 ) x = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} x= 123 , x T = ( 1 , 2 , 3 ) x^T = (1, 2, 3) xT=(1,2,3)
- Y = [ 11 12 13 21 22 23 ] Y = \begin{bmatrix} 11 & 12 & 13 \\ 21 & 22 & 23 \end{bmatrix} Y=[112112221323], Y T = [ 11 21 12 22 13 23 ] Y^T = \begin{bmatrix} 11 & 21 \\ 12 & 22 \\ 13 & 23 \end{bmatrix} YT= 111213212223
范数Norm
范数的基本概念
- **范数(norm)**是数学中的一种基本概念,具有长度的意义。
- 1范数(L1范数):向量中各个元素绝对值之和
- 2范数(L2范数):向量的模长,每个元素平方求和,再开平方根
- p-范数:向量中每一个元素p幂求和,在开p次根
L1范数
- x T = ( 1 , 2 , − 3 ) x^T = (1, 2, -3) xT=(1,2,−3), ∥ x ∥ 1 = ∣ 1 ∣ + ∣ 2 ∣ + ∣ − 3 ∣ = 6 \|x\|_1 = |1| + |2| + |-3| = 6 ∥x∥1=∣1∣+∣2∣+∣−3∣=6
L2范数
- x T = ( 1 , 2 , − 3 ) x^T = (1, 2, -3) xT=(1,2,−3), ∥ x ∥ 2 = 1 2 + 2 2 + ( − 3 ) 2 = 14 \|x\|_2 = \sqrt{1^2 + 2^2 + (-3)^2} = \sqrt{14} ∥x∥2=12+22+(−3)2=14
- 注意:向量的转置@向量 x T x = 1 2 + 2 2 + ( − 3 ) 2 = 14 x^Tx = 1^2 + 2^2 + (-3)^2 = 14 xTx=12+22+(−3)2=14
- x x x为向量: x T x x^Tx xTx与 ∥ x ∥ 2 2 \|x\|_2^2 ∥x∥22是一样的
Lp范数
- ∥ x ∥ p = ( ∣ x 1 ∣ p + ∣ x 2 ∣ p + ⋯ + ∣ x n ∣ p ) 1 p \|x\|_p = (\lvert x_1 \rvert^p + \lvert x_2 \rvert^p + \cdots + \lvert x_n \rvert^p)^{\frac{1}{p}} ∥x∥p=(∣x1∣p+∣x2∣p+⋯+∣xn∣p)p1
矩阵
基本概念
- 矩阵是数学中的一种基本概念,表达m行n列的数据等。
- 矩阵在机器学习中的表达:
- A = [ 1 3 2 4 ] ∈ R 2 × 2 A = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} \in \mathbb{R}^{2\times2} A=[1234]∈R2×2
- A = [ 1 2 3 4 5 6 ] ∈ R 2 × 3 A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \in \mathbb{R}^{2\times3} A=[142536]∈R2×3
- 一个矩阵 m m m行 n n n列: A ∈ R m × n A \in \mathbb{R}^{m\times n} A∈Rm×n
- 一个数据集 X ∈ R N × D X \in \mathbb{R}^{N\times D} X∈RN×D, N N N多少行数据, D D D特征数。
矩阵加法和减法
- 对应行列元素相加或相减:
- [ 1 2 3 4 5 6 ] + [ 1 2 3 4 5 6 ] = [ 2 4 6 8 10 12 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} + \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} = \begin{bmatrix} 2 & 4 & 6 \\ 8 & 10 & 12 \end{bmatrix} [142536]+[142536]=[28410612]
- [ 1 2 3 4 5 6 ] − [ 1 2 3 4 5 6 ] = [ 0 0 0 0 0 0 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} - \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} [142536]−[142536]=[000000]
矩阵乘法
- 对应行列元素相乘,然后再加和再一起:
- A = [ 1 2 3 4 5 6 ] ∈ R 2 × 3 A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \in \mathbb{R}^{2\times3} A=[142536]∈R2×3
- B = [ 1 3 2 4 1 1 ] ∈ R 3 × 2 B = \begin{bmatrix} 1 & 3 \\ 2 & 4 \\ 1 & 1 \end{bmatrix} \in \mathbb{R}^{3\times2} B= 121341 ∈R3×2
- C = A @ B = [ 1 ∗ 1 + 2 ∗ 3 + 3 ∗ 1 1 ∗ 2 + 2 ∗ 4 + 3 ∗ 1 4 ∗ 1 + 5 ∗ 3 + 6 ∗ 1 4 ∗ 2 + 5 ∗ 4 + 6 ∗ 1 ] = [ 10 13 25 34 ] ∈ R 2 × 2 C = A@B = \begin{bmatrix} 1*1+2*3+3*1 & 1*2+2*4+3*1 \\ 4*1+5*3+6*1 & 4*2+5*4+6*1 \end{bmatrix} = \begin{bmatrix} 10 & 13 \\ 25 & 34 \end{bmatrix} \in \mathbb{R}^{2\times2} C=A@B=[1∗1+2∗3+3∗14∗1+5∗3+6∗11∗2+2∗4+3∗14∗2+5∗4+6∗1]=[10251334]∈R2×2
- A ∈ R m × n , B ∈ R n × d → A @ B = C ∈ R m × d A \in \mathbb{R}^{m\times n}, B \in \mathbb{R}^{n\times d} \rightarrow A@B=C \in \mathbb{R}^{m\times d} A∈Rm×n,B∈Rn×d→A@B=C∈Rm×d
矩阵转置
- A = [ 1 2 3 4 5 6 ] ∈ R 2 × 3 A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \in \mathbb{R}^{2\times3} A=[142536]∈R2×3
- A T = [ 1 4 2 5 3 6 ] ∈ R 3 × 2 A^T = \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} \in \mathbb{R}^{3\times2} AT= 123456 ∈R3×2
矩阵@矩阵的转置
-
A
@
A
T
A@A^T
A@AT 是方阵,
A
T
@
A
A^T@A
AT@A 是方阵
- [ 1 2 3 4 5 6 ] @ [ 1 4 2 5 3 6 ] = [ 14 32 32 77 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} @ \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} = \begin{bmatrix} 14 & 32 \\ 32 & 77 \end{bmatrix} [142536]@ 123456 =[14323277]
- [ 1 4 2 5 3 6 ] @ [ 1 2 3 4 5 6 ] = [ 17 22 27 22 29 36 27 36 45 ] \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} @ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} = \begin{bmatrix} 17 & 22 & 27 \\ 22 & 29 & 36 \\ 27 & 36 & 45 \end{bmatrix} 123456 @[142536]= 172227222936273645
方阵与单位阵
- 方阵:一种特殊的矩阵,其行数=列数。
- 对称方阵:沿着主对角线,其元素对称 a i j = a j i a_{ij} = a_{ji} aij=aji。
- 单位阵:符号E或者I,主对角线为1,其他为0。
- 三阶单位阵: I 3 × 3 = [ 1 0 0 0 1 0 0 0 1 ] I_{3\times3} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} I3×3= 100010001
矩阵乘法的性质
- 矩阵的乘法不满足交换律:
A
×
B
≠
B
×
A
A \times B \neq B \times A
A×B=B×A
- 特殊条件下满足:
A
B
=
B
A
AB=BA
AB=BA 的前提是
A
、
B
A、B
A、B是同阶方阵。
- A 2 × 2 B 2 × 2 = B 2 × 2 A 2 × 2 A_{2\times2} B_{2\times2} = B_{2\times2} A_{2\times2} A2×2B2×2=B2×2A2×2
- 特殊条件下满足:
A
B
=
B
A
AB=BA
AB=BA 的前提是
A
、
B
A、B
A、B是同阶方阵。
- 矩阵的乘法满足结合律:即
(
A
×
(
B
×
C
)
)
=
(
(
A
×
B
)
×
C
)
(A \times (B \times C)) = ((A \times B) \times C)
(A×(B×C))=((A×B)×C)
- A ∈ R 5 × 2 , B ∈ R 2 × 5 , C ∈ R 5 × 3 A \in \mathbb{R}^{5\times2}, B \in \mathbb{R}^{2\times5}, C \in \mathbb{R}^{5\times3} A∈R5×2,B∈R2×5,C∈R5×3
- ( A × B ) × C (A \times B) \times C (A×B)×C 数据形状 R 5 × 3 \mathbb{R}^{5\times3} R5×3
- 矩阵与单位矩阵相乘等于矩阵本身
- A @ I = A , I @ A = A A@I = A, I@A = A A@I=A,I@A=A, I I I为单位矩阵
- 矩阵的逆:若矩阵 A = [ 1 2 3 4 ] ∈ R 2 × 2 A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \in \mathbb{R}^{2\times2} A=[1324]∈R2×2, A @ B = I A@B = I A@B=I单位矩阵,则 B B B为 A A A的逆矩阵,记为: A − 1 A^{-1} A−1
矩阵转置的性质
- ( A T ) T = A (A^T)^T = A (AT)T=A
- ( A + B ) T = A T + B T (A + B)^T = A^T + B^T (A+B)T=AT+BT
- ( k A ) T = k A T (kA)^T = kA^T (kA)T=kAT, k k k为一个常数
- ( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT
示例:
(
[
1
2
3
4
5
6
]
@
[
1
3
2
4
1
1
]
)
T
=
[
1
3
2
4
1
1
]
T
@
[
1
2
3
4
5
6
]
T
\left(\begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} @ \begin{bmatrix} 1 & 3 & 2 \\ 4 & 1 & 1 \end{bmatrix}\right)^T = \begin{bmatrix} 1 & 3 & 2 \\ 4 & 1 & 1 \end{bmatrix}^T @ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}^T
([142536]@[143121])T=[143121]T@[142536]T
正式求解
正规方程
正规方程(Normal Equation)是机器学习中用于求解线性回归问题的一种解析方法。与梯度下降等迭代优化方法不同,正规方程通过直接求解使损失函数最小化的参数值,无需迭代。
1. 基本概念
在线性回归中,我们希望找到一个参数向量 θ \theta θ,使得预测值 X θ X\theta Xθ 尽可能接近真实标签 y y y。通常使用均方误差作为损失函数:
J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2m} (X\theta - y)^T (X\theta - y) J(θ)=2m1(Xθ−y)T(Xθ−y)
其中:
- X X X 是特征矩阵( m × n m \times n m×n, m m m 个样本, n n n 个特征)
- θ \theta θ 是参数向量( n × 1 n \times 1 n×1)
- y y y 是真实标签向量( m × 1 m \times 1 m×1)
2. 正规方程公式
为了最小化 J ( θ ) J(\theta) J(θ),对 θ \theta θ 求导并令导数为 0,可以得到正规方程的解析解:
θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)−1XTy
这个公式直接给出了最优参数 θ \theta θ 的值,无需迭代。
3. 优点
- 无需选择学习率:不像梯度下降需要设置学习率。
- 无需迭代:一步到位求出最优解。
- 精确解:得到的是全局最优解(假设 X T X X^T X XTX 可逆)。
4. 缺点
- 计算复杂度高:需要计算 X T X X^T X XTX 的逆矩阵,时间复杂度为 O ( n 3 ) O(n^3) O(n3),当特征数量 n n n 很大时计算代价很高。
- 数值稳定性问题:如果
X
T
X
X^T X
XTX 接近奇异或不可逆,求逆会不稳定。此时可以通过正则化(如岭回归)解决:
θ = ( X T X + λ I ) − 1 X T y \theta = (X^T X + \lambda I)^{-1} X^T y θ=(XTX+λI)−1XTy
5. 适用场景
- 特征数量 n n n 较小(一般 n < 10000 n < 10000 n<10000)
- 数据规模不大
- 需要快速获得精确解
6. 与梯度下降对比
| 特性 | 正规方程 | 梯度下降 |
|---|---|---|
| 是否需要学习率 | 否 | 是 |
| 迭代次数 | 无需迭代 | 需要多次迭代 |
| 时间复杂度 | O ( n 3 ) O(n^3) O(n3) | O ( k n 2 ) O(kn^2) O(kn2)($ k $ 为迭代次数) |
| 适合特征数 | 小规模 | 大规模 |
总结
正规方程提供了一种直接求解线性回归参数的方法,适合小规模数据集。但在大规模数据或高维特征情况下,通常更倾向于使用梯度下降等迭代方法。
一元线性回归(正规方程最优)
假设我们有如下数据:
| 编号 | 身高 | 体重 |
|---|---|---|
| 1 | 160 | 56.3 |
| 2 | 166 | 60.6 |
| 3 | 172 | 65.1 |
| 4 | 174 | 68.5 |
| 5 | 180 | 75 |
| 6 | 176 | ? |
身高为特征、体重为标签此时我们可以假设模型为 y ^ ( i ) = h ( x ( i ) ) = k x ( i ) + b \hat{y}^{(i)} = h(x^{(i)} )= kx^{(i)} + b y^(i)=h(x(i))=kx(i)+b对于前五个样本而言 x x x、 y y y是已知的,我们需要得到最优的 k k k和 b b b,因此我们要构建损失函数并求其最小值。
损失函数:这里选择最小二乘法来预测误差
J
(
k
,
b
)
=
∑
i
=
0
m
(
h
(
x
(
i
)
)
−
y
(
i
)
)
2
=
∑
i
=
0
m
(
k
x
(
i
)
+
b
−
y
(
i
)
)
2
J(k, b) = \sum_{i=0}^{m} (h(x^{(i)}) - y^{(i)})^2 = \sum_{i=0}^{m} (kx^{(i)} + b - y^{(i)})^2
J(k,b)=i=0∑m(h(x(i))−y(i))2=i=0∑m(kx(i)+b−y(i))2
其中,
i
i
i 代表第几个样本。
求极小值:
目标是找到 k k k 和 b b b 的值,使得损失函数达到极小值。
损失函数是关于 k k k、 b b b 的函数,对 k k k、 b b b 分别求导设置成0,得到2个方程:
- ∂ J ( k , b ) ∂ k = ∑ i = 1 m 2 ( k x ( i ) + b − y ( i ) ) ( 2 − 1 ) ( k x ( i ) + b − y ( i ) ) ′ = ∑ i = 1 m ( 2 k x ( i ) 2 + 2 b x ( i ) − 2 x ( i ) y ( i ) ) = 0 \frac{\partial J(k, b)}{\partial k} = \sum_{i=1}^{m} 2(kx^{(i)} + b - y^{(i)})^{(2-1)} (kx^{(i)} + b - y^{(i)})' = \sum_{i=1}^{m} (2kx^{(i)^2} + 2bx^{(i)} - 2x^{(i)}y^{(i)}) = 0 ∂k∂J(k,b)=∑i=1m2(kx(i)+b−y(i))(2−1)(kx(i)+b−y(i))′=∑i=1m(2kx(i)2+2bx(i)−2x(i)y(i))=0 --------1式
- ∂ J ( a , b ) ∂ b = ∑ i = 1 m 2 ( k x ( i ) + b − y ( i ) ) ( 2 − 1 ) ( k x ( i ) + b − y ( i ) ) ′ = ∑ i = 1 m ( 2 k x ( i ) + 2 b − 2 y ( i ) ) = 0 \frac{\partial J(a, b)}{\partial b} = \sum_{i=1}^{m} 2(kx^{(i)} + b - y^{(i)})^{(2-1)} (kx^{(i)} + b - y^{(i)})' = \sum_{i=1}^{m} (2kx^{(i)} + 2b - 2y^{(i)}) = 0 ∂b∂J(a,b)=∑i=1m2(kx(i)+b−y(i))(2−1)(kx(i)+b−y(i))′=∑i=1m(2kx(i)+2b−2y(i))=0 --------2式
对1式、2式化简, y ( i ) y^{(i)} y(i) 代表第 i i i 个样本的预测值:
- k ∑ i = 1 m x ( i ) 2 + b ∑ i = 1 m x ( i ) − ∑ i = 1 m x ( i ) y ( i ) = 0 k\sum_{i=1}^{m} x^{(i)^2} + b\sum_{i=1}^{m} x^{(i)} - \sum_{i=1}^{m} x^{(i)}y^{(i)} = 0 k∑i=1mx(i)2+b∑i=1mx(i)−∑i=1mx(i)y(i)=0 ----3式
- k ∑ i = 1 m x ( i ) + b m − ∑ i = 1 m y ( i ) = 0 k\sum_{i=1}^{m} x^{(i)} + bm - \sum_{i=1}^{m} y^{(i)} = 0 k∑i=1mx(i)+bm−∑i=1my(i)=0 ----4式
对数据带入3式、4式求解 k k k、 b b b:
- k ∗ ( 16 0 2 + 16 6 2 + 17 2 2 + 17 4 2 + 18 0 2 ) + b ∗ ( 160 + 166 + 172 + 174 + 180 ) − ( 160 ∗ 56.3 + 166 ∗ 60.6 + 172 ∗ 65.1 + 174 ∗ 68.5 + 180 ∗ 75 ) = 0 k*(160^2+166^2+172^2+174^2+180^2) + b*(160+166+172+174+180) - (160*56.3+166*60.6+172*65.1+174*68.5+180*75) = 0 k∗(1602+1662+1722+1742+1802)+b∗(160+166+172+174+180)−(160∗56.3+166∗60.6+172∗65.1+174∗68.5+180∗75)=0 ----5式
- k ∗ ( 160 + 166 + 172 + 174 + 180 ) + b ∗ 5 − ( 56.3 + 60.6 + 65.1 + 68.5 + 75 ) = 0 k*(160+166+172+174+180) + b*5 - (56.3+60.6+65.1+68.5+75) = 0 k∗(160+166+172+174+180)+b∗5−(56.3+60.6+65.1+68.5+75)=0 ----6式
- 145416 ∗ k + 852 ∗ b − 55683.8 = 0 145416*k + 852*b - 55683.8 = 0 145416∗k+852∗b−55683.8=0
- 852 ∗ k + 5 ∗ b − 325.5 = 0 852*k + 5*b - 325.5 = 0 852∗k+5∗b−325.5=0 请求解 k k k、 b b b 的值。
根据 k k k、 b b b 进行预测:
k = 0.0397 k = 0.0397 k=0.0397, b = 60.7615 b = 60.7615 b=60.7615, y = 0.0397 ∗ 176 + 60.7615 = 67 y = 0.0397*176 + 60.7615 = 67 y=0.0397∗176+60.7615=67
多元线性回归(正规方程最优)
涉及较多矩阵相关知识,若理解困难可先补充基础知识。当然,直接了解这种思路也无妨,毕竟其计算量较大,实际应用中通常不予考虑
数据如下:
| Size (feet²) | Number of bedrooms | Number of floors | Age of home (years) | Price ($1000s) |
|---|---|---|---|---|
| 2104 | 5 | 1 | 45 | 460 |
| 1416 | 3 | 2 | 40 | 232 |
| 1534 | 3 | 2 | 30 | 315 |
| 852 | 2 | 1 | 36 | 178 |
损失函数的矩阵表示
J ( w ) = ( h ^ ( x 1 ) − y 1 ) 2 + ( h ^ ( x 2 ) − y 2 ) 2 + ⋯ + ( h ^ ( x m ) − y m ) 2 J(w) = (\hat{h}(x_1) - y_1)^2 + (\hat{h}(x_2) - y_2)^2 + \cdots + (\hat{h}(x_m) - y_m)^2 J(w)=(h^(x1)−y1)2+(h^(x2)−y2)2+⋯+(h^(xm)−ym)2
= ∑ i = 1 m ( h ^ ( x i ) − y i ) 2 = ∥ X w − y ∥ 2 2 = \sum_{i=1}^{m} (\hat{h}(x_i) - y_i)^2 = \|\mathbf{Xw} - \mathbf{y}\|_2^2 =∑i=1m(h^(xi)−yi)2=∥Xw−y∥22
∑ i = 1 n ( h ^ ( x i ) − y i ) 2 = ∑ i = 1 n ( x i T w − y i ) 2 = ∥ X w − y ∥ 2 2 \sum_{i=1}^{n} (\hat{h}(x_i) - y_i)^2 = \sum_{i=1}^{n} (x_i^T \mathbf{w} - y_i)^2 = \|\mathbf{Xw} - \mathbf{y}\|_2^2 ∑i=1n(h^(xi)−yi)2=∑i=1n(xiTw−yi)2=∥Xw−y∥22
矩阵形式的损失函数
J ( w ) = ∥ X w − y ∥ 2 2 J(\mathbf{w}) = \|\mathbf{Xw} - \mathbf{y}\|_2^2 J(w)=∥Xw−y∥22
= ( X w − y ) T ( X w − y ) = (\mathbf{Xw} - \mathbf{y})^T (\mathbf{Xw} - \mathbf{y}) =(Xw−y)T(Xw−y)
= ( X w ) T − y T —— ( x T x 等价于 ∥ x ∥ 2 2 ) = (\mathbf{Xw})^T - \mathbf{y}^T \quad ——(\mathbf{x}^T \mathbf{x} \text{ 等价于 } \|\mathbf{x}\|_2^2) =(Xw)T−yT——(xTx 等价于 ∥x∥22)
= ( X w ) T − y T ( X w − y ) = (\mathbf{Xw})^T - \mathbf{y}^T \quad (\mathbf{Xw} - \mathbf{y}) =(Xw)T−yT(Xw−y)
= ( w T X T − y T ) ( X w − y ) —— ( ( A B ) T = B T A T ) = (\mathbf{w}^T \mathbf{X}^T - \mathbf{y}^T) \quad (\mathbf{Xw} - \mathbf{y}) \quad ——((\mathbf{AB})^T = \mathbf{B}^T \mathbf{A}^T) =(wTXT−yT)(Xw−y)——((AB)T=BTAT)
= w T X T X w − w T X T y − y T X w + y T y = \mathbf{w}^T \mathbf{X}^T \mathbf{Xw} - \mathbf{w}^T \mathbf{X}^T \mathbf{y} - \mathbf{y}^T \mathbf{Xw} + \mathbf{y}^T \mathbf{y} =wTXTXw−wTXTy−yTXw+yTy
= w T X T X w − 2 w T X T y + y T y —— ( y T X w = ( y T X w ) T )因为这个结果为一个常数,所以可以转置 ) = \mathbf{w}^T \mathbf{X}^T \mathbf{Xw} - 2 \mathbf{w}^T \mathbf{X}^T \mathbf{y} + \mathbf{y}^T \mathbf{y} \quad ——(\mathbf{y}^T \mathbf{Xw} = (\mathbf{y}^T \mathbf{Xw})^T \text){ 因为这个结果为一个常数,所以可以转置}) =wTXTXw−2wTXTy+yTy——(yTXw=(yTXw)T)因为这个结果为一个常数,所以可以转置)
y T X w 的维度: ( 1 × n ) ⋅ ( n × d ) ⋅ ( d × 1 ) = 1 × 1 (标量,即单个实数) \mathbf{y}^T \mathbf{Xw} \text{ 的维度:} (1 \times n) \cdot (n \times d) \cdot (d \times 1) = 1 \times 1 \text{ (标量,即单个实数)} yTXw 的维度:(1×n)⋅(n×d)⋅(d×1)=1×1 (标量,即单个实数)
因为 y \mathbf{y} y 是标签,故 y \mathbf{y} y 为 1 1 1 行 1 1 1 列 所以 y T \mathbf{y}^T yT 是 1 1 1 行 n n n 列
因为 X \mathbf{X} X 是特征, n n n 个样本 d d d 个特征 所以是 n n n 行 d d d 列
因为 w \mathbf{w} w 是权重,故 d d d 行 1 1 1 列
所以 ( 1 × n ) ⋅ ( n × d ) ⋅ ( d × 1 ) = 1 × 1 (1 \times n) \cdot (n \times d) \cdot (d \times 1) = 1 \times 1 (1×n)⋅(n×d)⋅(d×1)=1×1 故结果是一个常数
所以给一个常数加上一个 T \mathbf{T} T 是他本身。因为 [2] 的转置还是 2 2 2
故得出 y T X w = ( y T X w ) T \mathbf{y}^T \mathbf{Xw} = (\mathbf{y}^T \mathbf{Xw})^T yTXw=(yTXw)T
= ( ( y T X T w ) T ) = ((\mathbf{y}^T \mathbf{X}^T \mathbf{w})^T) =((yTXTw)T) —— ( y T ) T = y (\mathbf{y}^T)^T = \mathbf{y} (yT)T=y
= ( X T w T y ) = (\mathbf{X}^T \mathbf{w}^T \mathbf{y}) =(XTwTy)
J ( w ) = ∥ X w − y ∥ 2 2 = w T X T X w − 2 w T X T y + y T y , 求损失函数 J ( w ) 最小值 J(\mathbf{w}) = \|\mathbf{Xw} - \mathbf{y}\|_2^2 = \mathbf{w}^T \mathbf{X}^T \mathbf{Xw} - 2 \mathbf{w}^T \mathbf{X}^T \mathbf{y} + \mathbf{y}^T \mathbf{y}, \text{ 求损失函数 } J(\mathbf{w}) \text{ 最小值} J(w)=∥Xw−y∥22=wTXTXw−2wTXTy+yTy, 求损失函数 J(w) 最小值
对 w \mathbf{w} w 向量求导 = 0 =0 =0 即可
∂ J ∂ w = ( w T X T X w − 2 w T X T y + y T y ) ′ \frac{\partial J}{\partial \mathbf{w}} = (\mathbf{w}^T \mathbf{X}^T \mathbf{Xw} - 2 \mathbf{w}^T \mathbf{X}^T \mathbf{y} + \mathbf{y}^T \mathbf{y})' ∂w∂J=(wTXTXw−2wTXTy+yTy)′
( X T X + ( X T X ) T ) w − 2 X T y + 0 = 0 (\mathbf{X}^T \mathbf{X} + (\mathbf{X}^T \mathbf{X})^T) \mathbf{w} - 2 \mathbf{X}^T \mathbf{y} + 0 = 0 (XTX+(XTX)T)w−2XTy+0=0
( X T X + ( X T X ) ) w − 2 X T y = 0 (\mathbf{X}^T \mathbf{X} + (\mathbf{X}^T \mathbf{X})) \mathbf{w} - 2 \mathbf{X}^T \mathbf{y} = 0 (XTX+(XTX))w−2XTy=0
2 X T X w − 2 X T y = 0 2 \mathbf{X}^T \mathbf{Xw} - 2 \mathbf{X}^T \mathbf{y} = 0 2XTXw−2XTy=0
2 X T X w = 2 X T y 2 \mathbf{X}^T \mathbf{Xw} = 2 \mathbf{X}^T \mathbf{y} 2XTXw=2XTy
X T X w = X T y \mathbf{X}^T \mathbf{Xw} = \mathbf{X}^T \mathbf{y} XTXw=XTy
( X T X ) − 1 X T X w = ( X T X ) − 1 X T y (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Xw} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} (XTX)−1XTXw=(XTX)−1XTy
w = ( X T X ) − 1 X T y \mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} w=(XTX)−1XTy
对等式两边同时左乘
(
X
T
X
)
−
1
(\mathbf{X}^T \mathbf{X})^{-1}
(XTX)−1(假设
X
T
X
\mathbf{X}^T \mathbf{X}
XTX 可逆,即满秩、无多重共线性)
利用矩阵的性质
(
X
T
X
)
−
1
(
X
T
X
)
=
I
(\mathbf{X}^T \mathbf{X})^{-1} (\mathbf{X}^T \mathbf{X}) = \mathbf{I}
(XTX)−1(XTX)=I(单位矩阵)
因此左边化简为:
(
X
T
X
)
−
1
X
T
X
w
=
I
w
=
w
(\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Xw} = \mathbf{Iw} = \mathbf{w}
(XTX)−1XTXw=Iw=w
右边为:
(
X
T
X
)
−
1
X
T
y
(\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
(XTX)−1XTy
w
=
(
X
T
X
)
−
1
X
T
y
\mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
w=(XTX)−1XTy
X = [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] \mathbf{X} = \begin{bmatrix} 1 & 2104 & 5 & 1 & 45 \\ 1 & 1416 & 3 & 2 & 40 \\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 \end{bmatrix} X= 11112104141615348525332122145403036
w = ( X T X ) − 1 X T y \mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} w=(XTX)−1XTy
w = ( [ 1 1 1 1 2104 1416 1534 852 5 3 3 2 1 2 2 1 45 40 30 36 ] [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] ) − 1 [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] [ 460 232 315 178 ] \mathbf{w} = \left( \begin{bmatrix} 1 & 1 & 1 & 1 \\ 2104 & 1416 & 1534 & 852 \\ 5 & 3 & 3 & 2 \\ 1 & 2 & 2 & 1 \\ 45 & 40 & 30 & 36 \end{bmatrix} \begin{bmatrix} 1 & 2104 & 5 & 1 & 45 \\ 1 & 1416 & 3 & 2 & 40 \\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 \end{bmatrix} \right)^{-1} \begin{bmatrix} 1 & 2104 & 5 & 1 & 45 \\ 1 & 1416 & 3 & 2 & 40 \\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 \end{bmatrix} \begin{bmatrix} 460 \\ 232 \\ 315 \\ 178 \end{bmatrix} w= 12104514511416324011534323018522136 11112104141615348525332122145403036 −1 11112104141615348525332122145403036 460232315178
tips&参考知识
若
w
T
a
\mathbf{w}^T \mathbf{a}
wTa(其中
a
\mathbf{a}
a 是向量),则对
w
\mathbf{w}
w 的导数是
a
\mathbf{a}
a
2
w
T
X
T
y
→
w
T
2
X
T
y
2\mathbf{w}^T \mathbf{X}^T \mathbf{y} \rightarrow \mathbf{w}^T 2 \mathbf{X}^T \mathbf{y}
2wTXTy→wT2XTy
若
y
=
x
T
A
x
\mathbf{y} = \mathbf{x}^T \mathbf{Ax}
y=xTAx(
A
\mathbf{A}
A 是对称矩阵,
x
\mathbf{x}
x 是向量),则
∂
y
∂
x
=
(
A
+
A
T
)
x
\frac{\partial \mathbf{y}}{\partial \mathbf{x}} = (\mathbf{A} + \mathbf{A}^T)\mathbf{x}
∂x∂y=(A+AT)x
∂
(
w
T
X
T
X
w
)
∂
w
\frac{\partial (\mathbf{w}^T \mathbf{X}^T \mathbf{Xw})}{\partial \mathbf{w}}
∂w∂(wTXTXw) 把
w
\mathbf{w}
w 看做是上式中的
x
\mathbf{x}
x 把
X
T
X
\mathbf{X}^T \mathbf{X}
XTX 看做是
A
\mathbf{A}
A
∂
(
w
T
X
T
X
w
)
∂
w
=
(
X
T
X
+
(
X
T
X
)
T
)
w
\frac{\partial (\mathbf{w}^T \mathbf{X}^T \mathbf{Xw})}{\partial \mathbf{w}} = (\mathbf{X}^T \mathbf{X} + (\mathbf{X}^T \mathbf{X})^T) \mathbf{w}
∂w∂(wTXTXw)=(XTX+(XTX)T)w
(
X
T
X
)
T
=
(
X
T
X
)
(\mathbf{X}^T \mathbf{X})^T = (\mathbf{X}^T \mathbf{X})
(XTX)T=(XTX)
矩阵转置的乘积性质
对于任意矩阵
A
\mathbf{A}
A 和
B
\mathbf{B}
B,有
(
A
B
)
T
=
B
T
A
T
(\mathbf{AB})^T = \mathbf{B}^T \mathbf{A}^T
(AB)T=BTAT。
令
A
=
X
T
\mathbf{A} = \mathbf{X}^T
A=XT,
B
=
X
\mathbf{B} = \mathbf{X}
B=X,则:
(
X
T
X
)
T
=
X
T
(
X
T
)
T
(\mathbf{X}^T \mathbf{X})^T = \mathbf{X}^T (\mathbf{X}^T)^T
(XTX)T=XT(XT)T
转置的逆运算(双重转置还原):
(
X
T
)
T
=
X
(\mathbf{X}^T)^T = \mathbf{X}
(XT)T=X(矩阵转置两次回到原矩阵)
因此:
X
T
(
X
T
)
T
=
X
T
X
\mathbf{X}^T (\mathbf{X}^T)^T = \mathbf{X}^T \mathbf{X}
XT(XT)T=XTX
梯度下降
梯度下降(Gradient Descent)是机器学习和深度学习中最基础、最常用的优化算法之一,其核心目标是通过迭代的方式最小化一个目标函数(通常是损失函数)。
1. 基本思想
想象你站在一个山坡上,想要最快地走到山谷底部。你不会一次性知道整个地形,但你可以观察当前脚下坡度最陡的方向,然后朝那个方向走一步。重复这个过程,最终你会接近最低点。
- “坡度最陡的方向” 对应数学中的梯度。
- “朝反方向走一步” 就是梯度下降,因为梯度指向函数增长最快的方向,所以负梯度方向就是下降最快的方向。

2. 数学表达
假设我们有一个损失函数 J ( θ ) J(\theta) J(θ),其中 θ \theta θ 是模型的参数(可以是标量或向量)。
梯度下降的参数更新公式为:
θ : = θ − α ⋅ ∇ θ J ( θ ) \theta := \theta - \alpha \cdot \nabla_\theta J(\theta) θ:=θ−α⋅∇θJ(θ)
- θ \theta θ:模型参数
- α \alpha α:学习率(learning rate),控制每一步“走多远”
- ∇ θ J ( θ ) \nabla_\theta J(\theta) ∇θJ(θ):损失函数对参数 θ \theta θ 的梯度(偏导数组成的向量)
3. 学习率(Learning Rate)的作用
- 太小:收敛慢,需要很多次迭代。
- 太大:可能跳过最优解,甚至导致发散、无法收敛。
- 选择合适的学习率非常重要,通常通过实验或自适应方法(如Adam)来调整。
4. 梯度下降的类型
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 批量梯度下降(Batch GD) | 每次使用全部训练数据计算梯度 | 数据量小,要求精确 |
| 随机梯度下降(SGD) | 每次只用一个样本更新参数 | 快速但波动大 |
| 小批量梯度下降(Mini-batch GD) | 每次用一小批样本(如32、64、128)计算梯度 | 最常用,兼顾速度与稳定性 |
5. 优点
- 简单直观,易于实现
- 可用于大规模数据(尤其是SGD和Mini-batch)
- 是神经网络训练的基础
6. 缺点
- 可能陷入局部最优(在非凸函数中)
- 收敛速度受学习率和特征尺度影响
- 需要多次迭代,不像正规方程那样直接求解
7. 实际应用中的改进
为了克服标准梯度下降的缺点,发展出多种改进算法:
- 动量法(Momentum):加速收敛,减少震荡
- Adam:结合动量和自适应学习率,目前最流行的优化器之一
- RMSProp, Adagrad:自适应调整学习率
总结
梯度下降是一种通过沿目标函数梯度的反方向逐步调整参数,以最小化损失函数的迭代优化方法。它是机器学习的基石,广泛应用于线性回归、逻辑回归、神经网络等模型的训练中。理解梯度下降对于掌握机器学习原理至关重要。
一元线性回归(梯度下降求解)

多元线性回归(梯度下降求解)

案例背景
银行信贷部门需要根据客户的每月工资、存款余额和房产面积来预测其授信额度。通过梯度下降法求解线性回归模型,以找到最优参数。
数据描述
| 贷款编号 | 姓名 | 每月工资(元) | 存款余额(元) | 房产面积(平方米) | 授信额度(元) |
|---|---|---|---|---|---|
| 1 | 张一 | 6000 | 12000 | 55 | 30000 |
| 2 | 张二 | 8000 | 10000 | 65 | 45300 |
| 3 | 张三 | 7500 | 16000 | 60 | 46000 |
| 4 | 赵六 | 10000 | 15000 | 75 | 55500 |
| 5 | 钱七 | 9000 | 21000 | 70 | 58000 |
| 6 | 孙八 | 12000 | 19000 | 85 | 75400 |
| 7 | 周九 | 11000 | 26000 | 90 | 81000 |
| 8 | 吴十 | 13000 | 32000 | 80 | 76800 |
目标
计算每个样本产生的梯度,并利用梯度下降公式更新权重 ( \theta ),最终求解线性回归模型。
线性回归模型
假设函数: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3 hθ(x)=θ0+θ1x1+θ2x2+θ3x3
损失函数: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2
梯度计算
对于每个特征分量
x
j
x_j
xj,计算梯度:
∇
θ
j
=
1
m
∑
i
=
1
m
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
)
\nabla \theta_j = \frac{1}{m} \sum_{i=1}^{m} ((h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)})
∇θj=m1i=1∑m((hθ(x(i))−y(i))xj(i))
参数更新
使用梯度下降公式更新参数:
θ
j
:
=
θ
j
−
α
∇
θ
j
\theta_j := \theta_j - \alpha \nabla \theta_j
θj:=θj−α∇θj
计算过程
第一轮迭代
假设初始值 θ 0 = θ 1 = θ 2 = θ 3 = 1 \theta_0 = \theta_1 = \theta_2 = \theta_3 = 1 θ0=θ1=θ2=θ3=1,学习率 α = 0.001 \alpha = 0.001 α=0.001。
-
偏置项 θ 0 \theta_0 θ0 的梯度计算:
∇ θ 0 = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ) \nabla \theta_0 = \frac{1}{m} \sum_{i=1}^{m} ((h_\theta(x^{(i)}) - y^{(i)})) ∇θ0=m1i=1∑m((hθ(x(i))−y(i)))
对于每个样本计算 ( h θ ( x ( i ) ) − y ( i ) ) (h_\theta(x^{(i)}) - y^{(i)}) (hθ(x(i))−y(i)),然后求平均值。样本计算示例:
- 张一: ( 1 + 1 ∗ 6000 + 1 ∗ 12000 + 1 ∗ 55 − 30000 ) ∗ 1 = − 11944 (1 + 1*6000 + 1*12000 + 1*55 - 30000) * 1 = -11944 (1+1∗6000+1∗12000+1∗55−30000)∗1=−11944
- 张二: ( 1 + 1 ∗ 8000 + 1 ∗ 10000 + 1 ∗ 65 − 45300 ) ∗ 1 = − 27234 (1 + 1*8000 + 1*10000 + 1*65 - 45300) * 1 = -27234 (1+1∗8000+1∗10000+1∗65−45300)∗1=−27234
- …
平均梯度: ∇ θ 0 = − 29989 \nabla \theta_0 = -29989 ∇θ0=−29989
更新 θ 0 \theta_0 θ0:
θ 0 = 1 − ( 0.001 ∗ − 29989 ) = 30.989 \theta_0 = 1 - (0.001 * -29989) = 30.989 θ0=1−(0.001∗−29989)=30.989 -
每月工资 θ 1 \theta_1 θ1 的梯度计算:
∇ θ 1 = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 1 ( i ) ) \nabla \theta_1 = \frac{1}{m} \sum_{i=1}^{m} ((h_\theta(x^{(i)}) - y^{(i)}) x_1^{(i)}) ∇θ1=m1i=1∑m((hθ(x(i))−y(i))x1(i))
计算结果: ∇ θ 1 = − 305067937.5 \nabla \theta_1 = -305067937.5 ∇θ1=−305067937.5更新 θ 1 \theta_1 θ1:
θ 1 = 1 − ( 0.001 ∗ − 305067937.5 ) = 305768.94 \theta_1 = 1 - (0.001 * -305067937.5) = 305768.94 θ1=1−(0.001∗−305067937.5)=305768.94 -
存款余额 θ 2 \theta_2 θ2 的梯度计算:
∇ θ 2 = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 2 ( i ) ) \nabla \theta_2 = \frac{1}{m} \sum_{i=1}^{m} ((h_\theta(x^{(i)}) - y^{(i)}) x_2^{(i)}) ∇θ2=m1i=1∑m((hθ(x(i))−y(i))x2(i))
计算结果: ∇ θ 2 = − 602021125 \nabla \theta_2 = -602021125 ∇θ2=−602021125更新 θ 2 \theta_2 θ2:
θ 2 = 1 − ( 0.001 ∗ − 602021125 ) = 602022.125 \theta_2 = 1 - (0.001 * -602021125) = 602022.125 θ2=1−(0.001∗−602021125)=602022.125 -
房产面积 θ 3 \theta_3 θ3 的梯度计算:
∇ θ 3 = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 3 ( i ) ) \nabla \theta_3 = \frac{1}{m} \sum_{i=1}^{m} ((h_\theta(x^{(i)}) - y^{(i)}) x_3^{(i)}) ∇θ3=m1i=1∑m((hθ(x(i))−y(i))x3(i))
计算结果: ∇ θ 3 = − 2283290 \nabla \theta_3 = -2283290 ∇θ3=−2283290更新 θ 3 \theta_3 θ3:
θ 3 = 1 − ( 0.001 ∗ − 2283290 ) = 2284.29 \theta_3 = 1 - (0.001 * -2283290) = 2284.29 θ3=1−(0.001∗−2283290)=2284.29
迭代结果
经过第1轮迭代后,参数向量
θ
\theta
θ更新为:
θ
=
[
30.989
,
305768.94
,
602022.125
,
2284.29
]
\theta = [30.989, 305768.94, 602022.125, 2284.29]
θ=[30.989,305768.94,602022.125,2284.29]
后续步骤
继续进行多次迭代,直到参数收敛到最优值,从而得到最终的线性回归模型。
正规方程和梯度下降对比
| 特征/方法 | 梯度下降 | 正规方程 |
|---|---|---|
| 是否需要选择学习率 | 需要 | 不需要 |
| 求解方式 | 迭代求解 | 一次运算得出,一蹴而就 |
| 适用特征数量 | 较大特征数量可以使用 | 较小特征数量可以使用 |
| 应用场景 | 更加普适,适合嘈杂、大数据应用场景 | 小数据量场景、精准的数据场景 |
| 优点 | 在各种损失函数(目标函数)求解中大量使用;深度学习模型参数很轻松就上亿,只能通过迭代的方式求最优解 | 计算量相对较小,适用于小数据量和线性关系明显的场景 |
| 缺点 | 可能陷入局部最优(在非凸函数中),收敛速度受学习率和特征尺度影响,需要多次迭代,不像正规方程那样直接求解 | 计算量大、容易受到噪声、特征强相关性的影响;如果 (X^TX) 的逆矩阵不存在时,无法求解;计算 (X^TX) 的逆矩阵非常耗时;如果数据规律不是线性的,无法使用或效果不好 |
补充说明
- 梯度下降:在实际应用中,尤其是深度学习领域,由于模型参数量庞大,通常采用梯度下降及其变种(如SGD、Mini-batch GD、Adam等)进行优化。
- 正规方程:适用于数据量较小且特征间线性关系明显的情况,但在大规模数据集和非线性问题中不适用。
回归模型评估
线性回归模型评估 - MAE、MSE、RMSE三种指标对比
为什么要进行线性回归模型的评估
- 我们希望衡量预测值和真实值之间的差距。
- 会用到MAE、MSE、RMSE多种测评函数进行评价。
平均绝对误差(Mean Absolute Error, MAE)
M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
- n n n为样本数量, y y y为实际值, y ^ \hat{y} y^ 为预测值。
- MAE 越小,模型预测越准确。
- Python代码示例:
from sklearn.metrics import mean_absolute_error mean_absolute_error(y_test, y_predict)
均方误差(Mean Squared Error, MSE)
M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
- n n n 为样本数量, y y y 为实际值, y ^ \hat{y} y^ 为预测值。
- MSE 越小,模型预测越准确。
- Python代码示例:
from sklearn.metrics import mean_squared_error mean_squared_error(y_test, y_predict)
均方根误差(Root Mean Squared Error, RMSE)
R M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1i=1∑n(yi−y^i)2
- n n n 为样本数量, y y y 为实际值, y ^ \hat{y} y^为预测值。
- RMSE 越小,模型预测越准确。
- RMSE 是 MSE 的平方根,在某些情况下比 MSE 更有用。
指标对比与分析
示例1:橙色线 y = 2 x + 5 y = 2x + 5 y=2x+5,蓝色点 y = y + sin ( x ) ∗ exp ( x / 20 ) + e y = y + \sin(x) * \exp(x/20) + e y=y+sin(x)∗exp(x/20)+e
- MAE = 19.138201842683475
- MSE = 1147.8294224102203
- RMSE = 33.87963137949143

示例2:直线 y = 2 x + 5 y = 2x + 5 y=2x+5 拟合 y = 2 x + 5 + e y = 2x + 5 + e y=2x+5+e
- MAE = 3.7301886794737375
- MSE = 22.527408286222677
- RMSE = 4.746304697996398

对比分析
- 对比第一张图:所有指标都变大了,RMSE几乎是MAE值的两倍,因为它对预测误差较大的点比较敏感。
- MAE和RMSE同样反映真实误差,但不能简单地说RMSE是更好的指标。如果只按照RMSE指标来优化模型,可能会让模型的误差降得更低,但也可能过拟合。
- 一直按照RMSE指标训练模型,如果RMSE指标非常低,说明模型对异常点(噪声)也拟合得很好,容易导致过拟合。因此,评价指标要综合考虑。
结论
- MAE 和 RMSE 都能反应真实误差,但 RMSE 会对异常点更加敏感。
- 在大多数情况下,RMSE > MAE,因为RMSE计算公式中有平方项,大的误差会被放大。
- RMSE会放大预测误差较大的样本对结果的影响,而MAE只是给出了平均误差。
- 综合来看,选择合适的评估指标需要根据具体应用场景和数据特性来决定。
欠拟合和过拟合

- 欠拟合:模型在训练集上表现不好,在测试集上也表现不好。模型过于简单
- 过拟合:模型在训练集上表现好,在测试集上表现不好。模型过于复杂
- 欠拟合在训练集和测试集上的误差都较大
- 过拟合在训练集上误差较小,而测试集上误差较大
以下是根据您提供的内容整理的关于过拟合和欠拟合出现的原因及解决办法的表格:
过拟合与欠拟合问题及解决方法
| 问题类型 | 出现原因 | 解决办法 |
|---|---|---|
| 过拟合 | 原始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼顾各个测试数据点。 | - 重新清洗数据 对于过多异常点数据、数据不纯的地方再处理。 - 增大数据的训练量 对原来的数据训练的太过了,增加数据量的情况下,会缓解。 - 正则化 解决模型过拟合的方法,在机器学习、深度学习中大量使用。 - 减少特征维度,防止维灾难 由于特征多,样本数量少,导致学习不充分,泛化能力差。 |
| 欠拟合 | 学习到数据的特征过少。 | - 添加其他特征 有时出现欠拟合是因为特征项不够导致的,可以添加其他特征项来解决。“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段。 - 添加多项式特征项 模型过于简单时的常用套路,例如将线性模型通过添加二次项或三次项使模型泛化能力更强。 |
欠拟合与过拟合 - 正则化
正则化概念
- 出现的原因:在模型训练时,数据中有些特征影响模型复杂度,或者某个特征的异常值较多。为了减少这些特征的影响(甚至删除某个特征的影响),需要使用正则化。
- 作用:正则化通过在损失函数中增加正则化项来消除异常点带来的权重过大或过小的影响。
正则化如何消除异常点带来的影响?
- 在损失函数中增加正则化项,分为L1正则化和L2正则化。
L1正则化
- 定义:在损失函数中添加L1正则化项。
J ( w ) = M S E ( w ) + α ∑ i = 1 n ∣ w i ∣ J(w) = MSE(w) + \alpha \sum_{i=1}^{n} |w_i| J(w)=MSE(w)+αi=1∑n∣wi∣ - 惩罚系数:(\alpha) 叫做惩罚系数,该值越大则权重调整的幅度就越大,即对特征权重的惩罚力度越大。
- 效果:L1正则化会使得权重趋向于0,甚至等于0,使得某些特征失效,达到特征筛选的目的。
- 导数特性:(y = |x|) 图像的导函数为分段函数:
- (x > 0) 导数为1
- (x < 0) 导数为-1
- (x = 0) 导数为0
- 应用:使用L1正则化的线性回归模型是Lasso回归(Least Absolute Shrinkage and Selection Operator)。
from sklearn.linear_model import Lasso
L2正则化
- 定义:在损失函数中添加L2正则化项。
J ( w ) = M S E ( w ) + α ∑ i = 1 n w i 2 J(w) = MSE(w) + \alpha \sum_{i=1}^{n} w_i^2 J(w)=MSE(w)+αi=1∑nwi2 - 惩罚系数:(\alpha) 叫做惩罚系数,该值越大则权重调整的幅度就越大,即对特征权重的惩罚力度越大。
- 效果:L2正则化会使得权重趋向于0,但一般不等于0。
- 应用:使用L2正则化的线性回归模型是岭回归(Ridge Regression)。
from sklearn.linear_model import Ridge
正则化示例图解
- 红色异常点A(x1, x2):因x2过大,会让对应的权重系数k2过小。
- 正则化的作用:通过在损失函数中加入正则化项,可以有效地减小异常点对模型的影响,使模型更加稳定和泛化能力更强。
小结
- 正则化是一种防止过拟合的技术,通过在损失函数中添加正则化项来控制模型的复杂度。
- L2正则化(岭回归):使得权重趋向于0,但不等于0,适用于所有特征都可能有贡献的情况。
- L1正则化(Lasso回归):使得部分权重等于0,实现特征选择,适用于特征数量多且存在冗余的情况。
- 选择合适的正则化方法:根据具体问题和数据特点选择L1或L2正则化,以达到最佳的模型性能和泛化能力。
更多推荐



所有评论(0)