机器学习之线性回归的入门学习
线性回归是一种监督学习算法,用于解决回归问题。它的目标是找到一个线性关系(一条直线或一个超平面),能够最好地描述一个或多个自变量(特征)与一个因变量(目标)之间的关系。利用回归方程对一个或多个自变量(特征值)和因变量(目标值)之间的关系进行建模的一种分析方式。
一.线性回归的简单介绍
目标: 根据输入的特征(X)来预测一个连续数值的输出(y)。例如:
例1. 根据房屋面积(特征)预测房价(目标)。
例2. 根据广告投入(特征)预测销售额(目标)。
例3. 根据学习时间(特征)预测考试分数(目标)。
“线性”的含义:
特征与目标关系线性: 它假设特征与目标变量之间大致存在直线关系(在二维空间)或平面/超平面关系(在高维空间)。这是其核心假设。
模型结构线性: 它假设目标变量(y)可以表示为一个或多个特征变量(X)的加权和,再加上一个常数项(截距)。模型本身关于参数(权重)是线性的。
回归 (Regression): 一种监督学习任务,目标是预测一个连续值的输出变量(目标变量)。比如预测房价、温度、销售额等。
模型: 线性回归模型试图学习一个线性函数(或称为超平面,当特征多于一个时),用输入特征来最佳地拟合或预测输出目标。
找到一组最优的系数 (β₀, β₁, ..., βₙ),使得模型预测的
ŷ
(读作 y-hat) 与真实的y
值之间的误差尽可能小。
二.基本模型形式
1.简单线性回归 (一个特征)
一个自变量(X)与因变量(Y)呈直线关系:y = w * x + b,属于线性回归的基础模型
y:预测的目标值(因变量)。
x:输入的特征(自变量)。
w:权重或斜率。表示特征 x 对目标 y 的影响程度(x 每变化一个单位,y 预期变化多少)。
b:偏置项或截距。表示当所有特征为 0 时,预测的 y 值(有时有实际意义,有时没有)。
2.多元线性回归 (多个特征)
多个自变量(X₁, X₂, ..., Xₚ)共同与Y呈线性关系:y = w1 * x1 + w2 * x2 + ... + wn * xn + b,属于线性回归的核心模型
y:预测的目标值。
x1, x2, ..., xn:n 个输入特征。
w1, w2, ..., wn:每个特征对应的权重。
b:偏置项。
3.线性回归的扩展应用
X与Y的关系无法用直线/平面描述(如曲线、指数关系)
处理方式:
多项式回归(线性回归的变体):Y = β₀ + β₁X + β₂X² + ... + βₖXᵏ + ε
示例:药物剂量(X)与疗效(Y)呈U型曲线变量变换:对X或Y做数学变换(如取对数)使关系线性化:log(Y) = β₀ + β₁X + ε
示例:经济学中的柯布-道格拉斯生产函数
关键点:
模型仍关于参数β是线性的(核心要求)
不属于经典线性回归,但可通过线性回归技术求解
核心本质:线性回归的“线性”指模型对参数β是线性的(如
β₀ + β₁X₁ + β₂X₂
),而非对自变量线性。因此即使自变量存在非线性项(如X²
),只要关于β线性,仍可用线性回归求解。
三.线性回归的损失与优化
1.损失函数 (Loss Function)
损失函数(也称为代价函数 - Cost Function)的核心作用是量化模型预测值与真实值之间的差距。在线性回归中,我们通常使用均方误差 (Mean Squared Error, MSE) 作为损失函数。它计算的是所有训练样本的预测值与真实值之差的平方的平均值。
它像一个打分器。我们的目标是找到一组模型参数 θ(θ₀, θ₁, ..., θₙ),使得这个打分器给出的分数 J(θ) 尽可能小。J(θ) 越小,说明模型的整体预测误差越小,拟合得越好。
数学表达式:J(θ) = (1/(2m)) * Σᵢ₌₁ᵐ (hθ(x⁽ⁱ⁾) - y⁽ⁱ⁾)²
- J(θ):损失函数的值(依赖于模型参数 θ)。
- m:训练样本的数量。
- hθ(x⁽ⁱ⁾):模型对第 i 个样本 x⁽ⁱ⁾ 的预测值(hθ(x) = θ₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ)。
- y⁽ⁱ⁾:第 i 个样本的真实标签值。
- Σᵢ₌₁ᵐ:对所有 m 个训练样本求和。
- (1/(2m)):前面的 1/2 主要是为了后续梯度下降计算导数时方便(平方项求导会产生因子2,正好抵消),1/m 表示计算平均值。有时也会省略 1/2,直接用 1/m,这对找到最小值的位置没有影响。
直观理解:
平方的作用:
保证差值总是正数(负的差值平方后变正)。放大较大误差的惩罚:一个误差为2的点对损失的贡献是4,而一个误差为4的点贡献是16,是前者的4倍!这使得模型对异常值非常敏感。平均的作用: 消除样本数量
m
对损失值大小的影响,使得不同大小数据集的损失值具有可比性。
2.优化 (Optimization)
优化的目标就是找到一组参数 θ,使得损失函数 J(θ) 的值最小化。
梯度下降法 (Gradient Descent) 原理:
想象你站在一个山谷(代表损失函数 J(θ)
)的某个山坡上,目标是走到谷底(最小值点)。梯度下降的策略是:
- 观察坡度: 计算你当前位置的“坡度”(即损失函数关于每个参数的偏导数 - 梯度
∇J(θ)
)。 - 确定方向: 坡度最陡峭的下坡方向就是你要迈步的方向(梯度的反方向
-∇J(θ)
)。 - 迈出一步: 沿着这个方向走一小步。这一步的大小由一个叫学习率 (Learning Rate) 的参数
α
控制。 - 重复: 到达新位置后,重复步骤1-3,重新计算坡度,确定新的下坡方向,再迈一步,直到走到谷底(或达到停止条件)。
正规方程 (Normal Equation):
对于线性回归,损失函数
J(θ)
是凸函数(碗状),存在一个解析解(闭式解),可以直接通过一个数学公式一步计算出最优θ
:θ = (XᵀX)⁻¹Xᵀy
X
是包含所有样本特征的设计矩阵(每行一个样本,第一列通常全为1对应 θ₀)。y
是包含所有样本真实标签的向量。
优点: 不需要选择学习率
α
,不需要迭代。缺点:
计算量大: 计算矩阵
(XᵀX)
的逆的时间复杂度是O(n³)
(n 是特征数量)。当特征数量n
非常大(如 > 10000)时,计算会非常慢甚至不可行。要求
XᵀX
可逆: 如果特征之间存在精确线性相关(多重共线性)或者样本数m
小于特征数n
,XᵀX
不可逆(或奇异),无法使用。虽然可以通过伪逆解决,但稳定性可能变差。
适用场景: 特征数量
n
相对较小(例如几千以内)且XᵀX
容易求逆时。
四.线性回归的优点
简单易懂,实现方便:
原理直观: 线性关系是人类最容易理解的关系之一。
算法成熟: 求解方法(如最小二乘法)在数学上非常成熟、高效,计算复杂度低(通常是
O(n*p²)
或更低,其中n
是样本数,p
是特征数),即使是大型数据集也能快速训练。广泛支持: 几乎所有统计软件和编程语言(Python, R, MATLAB, Excel等)都内置了高效的线性回归实现。
可解释性强:
核心优势! 回归系数
βᵢ
有非常清晰的解释:表示在保持其他特征不变的情况下,特征Xᵢ
每增加一个单位,目标变量y
平均变化βᵢ
个单位。
这使得模型结果易于向非技术人员解释,对于需要理解变量间影响机制的场景(如经济学、社会科学、生物医学研究、业务分析)至关重要。
可以方便地进行统计推断(假设检验、置信区间),判断哪些特征的影响是统计显著的。
计算效率高:
最小二乘法的解析解(或数值优化方法)计算非常快速,尤其适用于特征维度不高的大数据集。
预测阶段的计算成本极低(只需做一次点积
ŷ = Xβ
),适合需要快速响应的在线预测系统。
作为基准模型:
由于其简单性,常被用作评估更复杂模型性能的基准。如果一个复杂的模型无法显著超越线性回归,则其复杂性可能是不必要的。
五.缺点分析
强假设: 严重依赖特征与目标变量之间存在线性关系的假设。如果真实关系是非线性的(如曲线关系),线性回归效果会很差。
对异常值敏感: 均方误差损失函数会放大异常点(远离主趋势的点)的影响,导致拟合的直线被异常点“拉偏”。
多重共线性问题: 当输入特征之间高度相关时,模型估计的权重会变得不稳定且难以解释(虽然预测可能仍可用)。
特征工程依赖: 无法自动捕捉特征间的复杂交互作用或非线性关系,需要手动进行特征工程(如创建多项式特征、交互项)来提升表现。