深夜的飞镖馆,新手小杰在笔记本上记下第 37 次出手:七成力,落点 9 环。他渐渐摸出门道——似乎劲儿越大,环数越高,可每次同样力度的出手,落点总在几毫米里摇摆。这一堆带噪声的记录里,到底藏着什么规律? 我们要讲的线性回归,干的就是从这样的记录里抽出一条“最佳瞄准线”:它不必穿过每一个点,但要让所有点整体上偏离它最小。有了这条线,小杰就能回答“如果我使六成力,大概能打几环”这种从未见过的问题。 这就是线性回归——用一条最简单的直线,描述两个变量之间大致的关系。它简单、透明、算得快,是一切智能预测技术的起点:从房价预测到销量预估,从广告归因到趋势分析,几乎每个建模项目的第一版,都是它。

岗位关联

对 AI 从业者而言,线性回归是战功赫赫的“基线武器”:任何建模项目先用它探路、量化数据关系、衡量特征价值,是价格预测、销量预估、趋势分析等连续值任务的必修第一课。

目录
  1. 可视化演示
  2. 回归问题概述
  3. 数学模型表达
  4. 最小二乘法
  5. 梯度下降求解
  6. 模型评估指标
  7. 实践应用流程
  8. 局限与边界
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示HTTP请求从DNS解析到连接关闭的完整生命周期,包括DNS查询、TCP握手、请求发送、响应接收和连接关闭五个阶段。

本节配有交互动效(进入视口后自动加载,约 3KB)。

DNS域名解析阶段 浏览器查询DNS服务器,将域名解析为IP地址 Domain → IP

回归问题概述

小杰的笔记本越来越厚,他开始意识到:力度和环数之间“有趋势,但不确定”。同样五成力,有时 5 环、有时 7 环——这不是一道精确的算术题,而是一个在噪声中找规律的问题。这种“给一个已知量,预测另一个连续数值”的任务,在 AI 世界里有一个专门的名字:回归。

回归和分类是监督学习的两大门派。分类回答“是或不是”——比如这一镖会不会上靶;回归回答“是多少”——比如这一镖能打几环。环数可以是 7.6、8.3 这种连续数值,这正是回归与分类最本质的区别。而线性回归是所有回归模型里最简单的一员:它假设环数与力度之间能用一条直线近似刻画。

这条直线的价值在于“可解释”:你不但能拿它预测,还能读出“每加一成力,环数大约涨多少”。对小杰来说,这就像一本能看懂的心法口诀,而不是黑箱里的魔法咒语。线性回归用最简单的数学,给了数据一个透明的骨架。

对新手镖手来说,公式里的 w 和 b 就是整本心法的全部秘密。确定了这两个数字,一条“最佳瞄准线”就从笔记本上的散点里站了起来。可问题是:什么样的 w 和 b 才算最好?这就要看下一节——怎么给“好”下定义了。

y^=wx+b\hat{y} = w x + b
  1. 帽子符号y 顶上的小帽子读作"hat",表示模型预测的环数,不是真实环数。
    y^\hat{y}
  2. 权重 w力度 x 每增加一单位,预测环数随之改变 w 单位,控制直线的陡峭程度。
    ww
  3. 特征 x已知的输入量,在这里是出手力度。
    xx
  4. 截距 b力度为 0 时直线的基础高度,相当于“不使劲时的大致环数”。
    bb
  5. 组合预测x 乘以 w 再加上 b,完成一次从力度到环数的线性预测。
    y^=wx+b\hat{y} = w x + b

数学模型表达

光看力度还不够,小杰把“站姿偏角”“出手节奏”也记进了本子。这下他面对的不再是一对关系,而是一张多列数字的“配方表”:每列特征都对环数有贡献,只是分量不同。从一条直线出发,模型升级成了一座由多个因素共同撑起的“超平面”。

数学上,每个特征 x_j 都配一个专属权重 w_j,把所有“特征乘权重”的贡献累加,再加上截距 b,就得到预测值。这就是多元线性回归。写成一长串加法清晰,写成向量点积则简洁:本质上都是“加权求和”。所谓“线性”,指的是参数 w 与特征 x 只做乘法和加法,不出现 x²、sin(x) 这类变形。

权重的符号和大小也很有讲究:w 是正数,说明这个因素“促进”结果;w 是负数,说明它“拖后腿”;w 接近 0,说明它可有可无。对小杰来说,力度 w 大、站姿 w 小,就意味着“先把力度练稳,站姿次要”。这种能把每个因素拎出来单独点评的能力,正是线性回归在工业界长盛不衰的看家本领。

小杰的配方表虽然条目变多,本质却没变:仍然是“每个因素按各自分量加起来”。但多了一列特征,就多了一个需要调的数字。当 w 和 b 多到几十上百个时,靠人肉调参显然不现实——我们需要一个能自动找到“最佳配方”的数学方法,这就是最小二乘法登场的时刻。

y^=w1x1+w2x2+⋯+wmxm+b\hat{y} = w_1 x_1 + w_2 x_2 + \cdots + w_m x_m + b
  1. 下标 1 到 mx₁ 到 x_m 是 m 个不同的特征,比如力度、站姿、节奏。
    x1,x2,…,xmx_1, x_2, \ldots, x_m
  2. 每个特征配权重特征 x_j 都要乘上自己的权重 w_j,权重大小代表重要程度。
    wjxjw_j x_j
  3. 累加求和把 m 个加权项全部加起来,汇聚所有因素的贡献。
    ∑j=1mwjxj\sum_{j=1}^{m} w_j x_j
  4. 截距收尾最后加上 b,吸收所有特征为零时的基准值,让公式更完整。
    y^=∑j=1mwjxj+b\hat{y} = \sum_{j=1}^{m} w_j x_j + b

最小二乘法

贴在墙上的两条线,哪条更像“最佳瞄准线”?小杰想出一把尺子:把每个点到直线的竖直距离量出来。问题是,偏上 0.8 环、偏下 1.2 环,正负参差,直接加总会把误差“互相抵消”成零。聪明的做法是先平方再加总——平方让正负偏差都变成正的,还让偏离特别大的点受到加倍惩罚。

这条总账叫残差平方和,也就是损失函数,记作 J(w,b)。其中“残差”就是真实环数与预测环数的差。残差平方和越小,说明这条线整体越贴近数据。由于平方项的存在,J 关于 w、b 是一个开口向上的“碗形曲面”——碗底对应的位置,就是全局最优的 w 和 b。

求碗底可以走捷径:对 w、b 分别求偏导并令导数为零,解一个线性方程组,就能一步到位算出最优解。这个解析解就是著名的正规方程。它不需要反复试错,直接把最优参数“算”出来,是小数据集场景下的首选方案。

对碗形曲面对 w、b 分别求导并置零,可得到解析解:

对小杰来说,这就像是请了一位数学老师傅,闭眼一算就报出最佳心法。但解析解也有软肋:当特征数量成千上万、样本量巨大时,求逆矩阵的计算量会爆炸式增长。这时候,主人公换成了另一种更“笨”却更通用的思路——一步一个脚印的梯度下降。

J(w,b)=12n∑i=1n(y(i)−(wx(i)+b))2J(w, b) = \frac{1}{2n}\sum_{i=1}^{n}\left(y^{(i)} - (w x^{(i)} + b)\right)^2
  1. 设计矩阵 X把 n 条样本的特征排成 n×m 矩阵,每行是一条记录。
    XX
  2. 转置 X^T把矩阵的行列互换,形状变成 m×n,为后续乘法做准备。
    XTX^T
  3. 方阵 X^T X转置与原矩阵相乘,得到一个 m×m 的方阵,汇总了特征的二阶信息。
    XTXX^T X
  4. 求逆与整体解对 X^T X 求逆后乘 X^T y,相当于解一个线性方程组,直接得到最优权重向量 w。
    (XTX)−1XTy(X^T X)^{-1} X^T y

梯度下降求解

碗形曲面虽然完美,但当参数成百上千时,直接求逆矩阵就像让裁缝给全城人同时量体裁衣——累到崩溃。小杰换了个策略:他闭上眼睛站到曲面上,用脚探路,哪里下坡最陡就往哪里迈一小步,反复迈步,终究会摸到碗底。这种“走一步、看一步”的笨办法,就是梯度下降。

数学上,“最陡下坡方向”是损失函数梯度的反方向。梯度是一个向量,每个分量是 J 对某个参数的偏导数,它永远指向上升最快的方向。既然目标是下降,就往梯度反方向走。每一步都重复“算梯度、反向走”,参数就沿着曲面一路下滑,最终收敛到碗底附近。

步长由学习率 α 控制:α 太小,像蚂蚁挪步,几百轮都走不到头;α 太大,像醉汉跨大步,直接越过碗底,在两侧来回震荡甚至越跳越远。梯度下降不需求逆矩阵,只需求偏导,因此能轻松扩展到海量特征和海量样本——它也是后来深度学习里一切优化的基石。

小杰不再试图一眼看穿全局,而是靠“下坡法”稳稳摸到碗底。这个策略看似笨拙,却极其皮实:很多问题根本没有解析解,但只要损失函数可导,梯度下降就能上场。当小杰的笔记本扩展到一万条记录时,解析解已经算不出来了,梯度下降反而跑得飞快——这也正是现代 AI 训练引擎的工作原理。

w←w−α∂J∂ww \leftarrow w - \alpha \frac{\partial J}{\partial w}
  1. 箭头赋值箭头"←"表示把右边算出的新值覆盖到左边的 w 上,完成一次更新。
    ←\leftarrow
  2. 学习率 α控制每次迈步的大小,是人工设定的超参数,决定收敛快慢与稳定性。
    α\alpha
  3. 偏导数 ∂J/∂w损失 J 对参数 w 的变化率,指明当前点“最陡上坡”的方向。
    ∂J∂w\frac{\partial J}{\partial w}
  4. 负号走下坡减去梯度方向,就是往最陡下坡移动,逐步逼近碗底。
    w−α∂J∂ww - \alpha \frac{\partial J}{\partial w}

模型评估指标

心法练成,小杰兴冲冲去新靶位验证,却发现:拿练过的力度试,几乎环环有数;换成从没练过的新力度,预测就飘了。这说明“背题式训练”不等于“真会了”。评估模型,必须用没参加过训练的数据。

标准做法是把数据切成训练集和测试集:训练集用来调 w、b,测试集全程不碰,只留到最后一刻用来打分。测试集上的分数,才是模型的真实战斗力。常用的回归分数有两个:MSE(均方误差)度量平均每个样本错多少;R²(决定系数)度量模型解释掉了目标多少比例的波动。

R² 的分子是“模型留下的误差平方和”,分母是“永远猜平均值”这个笨基线的误差平方和。两者一比,就得到“没被解释掉的波动比例”;用 1 减去它,就是“被解释掉的比例”。R²=0.9 意味着模型解释了 90% 的波动,剩下 10% 是噪声或非线性导致的天花板。

对小杰来说,R² 就是“心法对新力度管不管用”的量化答案:练过的数据再准也不算数,换新数据还能稳住七八成,才算真练成了。另外还要警惕过拟合与欠拟合——模型把噪声背得滚瓜烂熟,或连基本趋势都没抓住,测试集都会给出诚实的差评。训练与测试分离,正是防止“自我感动式评估”的底线。

R2=1−∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)2R^2 = 1 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}
  1. 分子模型残差模型预测后仍留下的误差平方和,越小说明拟合越好。
    ∑i=1n(yi−y^i)2\sum_{i=1}^{n}(y_i - \hat{y}_i)^2
  2. 分母基线残差“永远猜平均值”时产生的误差平方和,代表底线水平。
    ∑i=1n(yi−yˉ)2\sum_{i=1}^{n}(y_i - \bar{y})^2
  3. 残余比例分子除以分母,得到“模型没解释掉的波动占基线的比例”。
    ∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)2\frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}
  4. 1 减比例用 1 减去残余比例,得到“被模型解释掉的波动比例”。
    1−∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)21 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}

实践应用流程

小杰决定把心法整理成一本可复用的手册,让队友也能照着练。整理下来他发现固定四步:清洁笔记里的乱写乱画,挑出真正影响环数的核心要素,代入模型训练,最后上靶场实测。这套流程,恰恰就是工业界落地线性回归的标准动作。

第一步是数据预处理:清洗缺失值、删除明显异常记录,再做特征标准化。标准化尤其重要——力度取值 0~1、角度取值 0~90,量纲不同会让权重失去可比性,标准化后所有特征都以 0 为中心、以 1 为尺度,梯度下降才能公平对待每个特征。第二步是选定特征与目标:把要预测的量定为 y,把可能影响它的量选为特征。

第三步是用工具训练:sklearn 的 LinearRegression 一行代码即可拟合,内部对中小规模数据直接使用最小二乘法求解。训练完成后,coef_ 给出每个特征的权重,intercept_ 给出截距;对新样本只需调用 predict 方法,就能批量产出预测值。第四步是持续监控误差,定期用最新数据重新训练。

手册从个人悟道变成了团队方法论——流程的价值在于稳定可复制。对小杰的队友来说,拿到手册照做就能复现七八成的水准;对算法工程师来说,线性回归的落地路径同样如此:清洗、选特征、训练、评估四步循环,是所有 AI 项目的通用骨架,也是你为任何复杂算法搭建的第一座桥。

x′=x−μσx' = \frac{x - \mu}{\sigma}
  1. 均值 μ所有样本在该特征上的平均值,代表特征的“中心”。
    μ\mu
  2. 标准差 σ样本相对均值的离散程度,反映特征的“尺度”。
    σ\sigma
  3. 中心化与缩放原始值减均值再除标准差,让特征变为均值 0、方差 1 的标准形态。
    x′=x−μσx' = \frac{x - \mu}{\sigma}

局限与边界

练了半年,小杰换了个距离更远的镖盘,发现那套力度心法彻底失效了。原来环数与距离的关系不是直线,而是曲线——直线心法再好,也只是一条直线。这正是线性回归的第一个边界:它假设 y 与 x 之间存在线性关系,真实世界若是指数增长或曲线变化,直线的预测就会系统性偏斜。

第二个边界是异常值敏感:一个手滑的离谱记录,就能把整条线“拽歪”一大截。因为损失函数里误差被平方,偏离极远的点获得了不成比例的话语权。第三个边界是多重共线性:当几个特征彼此高度相关时,比如“站姿偏角”和“肩部转向”,它们的作用纠缠不清,导致各自权重估计极不稳定、难以解释。

理解这些局限不是为了劝退,而是帮你划清工具的适用边界:什么时候该用线性回归做基线、做可解释分析,什么时候该换多项式回归、正则化或树模型。知道“直线在哪里失效”,恰恰是模型选型的第一课。真实的建模工作,从来不是找一个万能模型,而是给每个问题匹配恰当的模型。

小杰最终明白,没有万能的心法,只有“知道自己武艺边界”的镖手。线性回归的价值不在于包打天下,而在于它简单、透明、永远是你验证数据关系、建立基线模型时的第一选择。理解它的局限,你才算真正拥有它。

y=wTx+b+εy = w^T x + b + \varepsilon
  1. 线性主体w^T x + b 是模型能学到的确定部分,w 与 x 做点积再加截距。
    wTxw^T x
  2. 噪声 ε真实世界中除线性规律外还混入随机噪声,这是模型永远无法完全消除的部分。
    ε\varepsilon
  3. 真实值构成真实 y 等于线性预测加上噪声;模型的目标是把线性部分学准,剩下的交给运气。
    y=wTx+b+εy = w^T x + b + \varepsilon

AI 应用场景

二手房价格预测

阶段:监督学习建模与预测

解决的问题:传统估价依赖中介经验与片区均价,主观且难以解释。线性回归用面积、房龄、楼层、距地铁距离等特征拟合成交价,给出“面积每增一平方米房价涨 8500 元、房龄每增一年跌 3000 元”的透明系数,客户和风控都能看懂。

具体案例:某房产平台收集 5 万条历史成交记录,清洗缺失值后训练 LinearRegression,测试集 R² 达到 0.82,用于自动生成估价报告,评估周期从 2 天缩短到 3 分钟。

连锁便利店销量预估

阶段:特征工程与回归建模

解决的问题:传统备货靠店长凭经验拍脑袋,缺货与积压并存。回归把促销力度、当日气温、是否周末、客流等特征与次日销量关联,输出连续数值预测,直接支撑自动补货系统。

具体案例:某连锁便利店对 200 家门店的历史销售数据建模,MSE 稳定在可接受区间,上线三个月后整体缺货率下降 23%,报损率下降 15%。

广告预算 ROI 归因

阶段:结果解读与业务决策

解决的问题:多平台广告预算分配全凭经验、吵架不断。回归系数能直接回答“每多投 1 万元在某平台带来多少 GMV”,让预算调整有据可依、可复盘。

具体案例:某电商公司回归各渠道花费与 GMV,发现搜索广告系数 3.2、信息流广告系数 1.1,于是把预算向搜索广告倾斜,整体 ROI 提升 18%。

Python 演示

python38 行
# 用梯度下降从零实现一元线性回归,并与 sklearn 结果对比import numpy as npfrom sklearn.linear_model import LinearRegression  def train_gradient_descent(X, y, lr=0.1, epochs=200):    """一元线性回归 y = w*x + b,用梯度下降求最优 w, b"""    n = X.shape[0]    w, b = 0.0, 0.0    for _ in range(epochs):        y_pred = w * X + b        dw = (1.0 / n) * np.sum((y_pred - y) * X)        db = (1.0 / n) * np.sum(y_pred - y)        w -= lr * dw        b -= lr * db    return w, b  def r2_score(y, y_pred):    """计算决定系数 R^2"""    ss_res = np.sum((y - y_pred) ** 2)    ss_tot = np.sum((y - np.mean(y)) ** 2)    return 1.0 - ss_res / ss_tot  if __name__ == "__main__":    np.random.seed(42)    X = np.linspace(0.2, 0.9, 30)                      # 出手力度    y = 8.0 * X + 2.0 + np.random.normal(0, 0.4, X.shape[0])  # 环数 = 8*力度 + 2 + 噪声     w, b = train_gradient_descent(X, y)    y_pred = w * X + b    print("手写梯度下降: y = %.3f * x + %.3f" % (w, b))    print("全量数据 R^2 = %.4f" % r2_score(y, y_pred))     model = LinearRegression()    model.fit(X.reshape(-1, 1), y)    print("sklearn 结果: y = %.3f * x + %.3f" % (model.coef_[0], model.intercept_))
目的:从零实现梯度下降求解线性回归,并与 sklearn 的最小二乘结果对比,验证两者收敛到同一最优直线。
  1. y_pred = w * X + b用当前参数一次性算出所有样本的预测值,NumPy 广播机制让向量整体参与计算
  2. dw = (1.0 / n) * np.sum((y_pred - y) * X)损失函数对 w 的偏导:误差乘特征后求和取平均
  3. w -= lr * dw沿梯度反方向更新参数,lr 控制每次迈出的步长
  4. ss_res / ss_tot分子是模型残余误差平方和,分母是均值基线误差平方和,两者相除得到未解释比例
  5. X.reshape(-1, 1)sklearn 要求特征为二维数组,把一维力度列变成 n 行 1 列
  6. model.coef_[0]` 与 `model.intercept_分别取出 sklearn 学到的权重 w 和截距 b

常见误区

误区“我调的模型在测试集上 R²=0.99,同事的只有 0.92,肯定我的模型更牛。”

正解R²=0.99 只说明“这条线解释了目标 99% 的波动”,但如果数据本身几乎完美线性(比如物理实验数据),或者模型已经被反复在测试集上调过,这个高分并不可信。评估要综合测试集 R²、MSE 和业务误差容忍度,而且不同数据集之间的 R² 不能直接比较。

为何常见:“分数越高越好”的直觉被考试文化强化,忽略了 R² 是相对“猜均值基线”的提升比例,与数据本身的波动大小强相关。

误区“广告投放和销售额高度相关,回归系数也很显著,所以一定是广告带来了销售。”

正解回归只描述统计关联,不证明因果关系。销售额可能同时受季节、竞品缺货、社会经济环境驱动。要确立因果,需要随机对照实验或专门的因果推断方法;回归系数再好看,也不能直接写进“因果归因报告”。

为何常见:“相关即因果”是大脑的默认快捷方式,因为解释成本低;而真正的因果验证成本高、周期长,人们天然想走捷径。

误区“梯度下降每步走得太慢了,我把学习率调到 10,几步就能到碗底。”

正解学习率是“步子大小”而不是“方向精度”。步子太大,参数会从碗的一侧直接跨到另一侧,来回震荡甚至越跳越远(发散)。经典做法是从 0.1 量级开始观察损失曲线:平稳下降就加大,震荡就减小,或改用自适应优化器。

为何常见:日常经验里“加大力度”往往带来更快结果,却忽略了最优解附近需要精细逼近,步子过大反而南辕北辙。

误区“散点图明显是一条抛物线,老师却说用线性回归,这不是硬套吗?”

正解线性回归的“线性”指参数 w 与特征 x 的关系是线性的。只要把 x²、x³ 等作为新特征加入 X,依然可以用线性回归拟合出曲线,这叫多项式特征扩展,是特征工程的经典操作。

为何常见:“线性”这个词让人望文生义地以为只能画直线,忘了模型的形式和输入特征是两回事。

误区“梯度下降跑 1000 轮算出 w=3.12,正规方程算出 w=3.15,肯定我梯度下降写错了。”

正解梯度下降是迭代逼近,解析解是精确解,两者收敛到同一个理论最优,但数值精度、学习率、迭代轮数都会留下微小差异。只要损失持续下降且差异在容差范围内(如 1e-3 量级),就属于正常的数值现象。

为何常见:人们容易把“同一问题两个答案有差异”等同于“必有对错”,忽略了数值方法天然带有近似误差。

面试题

Q1. 线性回归的输出目标通常是?

单选题 · easy

  • A.连续的数值← 正确答案
  • B.离散的类别
  • C.概率的分布
  • D.文本的标签

答案:A。回归任务的本质就是预测连续数值,比如环数、房价、销量。离散类别是分类任务的目标,概率分布是逻辑回归或 softmax 的输出形态,文本标签则属于 NLP 任务范畴。

Q2. 最小二乘法的核心思想是?

单选题 · easy

  • A.让预测误差总和为零
  • B.让预测误差绝对值最小
  • C.让所有预测误差平方和最小← 正确答案
  • D.让样本点全部落在直线上

答案:C。最小二乘法通过最小化残差平方和来确定参数,平方让正负误差不抵消、大误差受重罚。误差总和为零可能靠正负抵消实现,绝对值最小是另一种损失(L1),让样本全部落线则是过拟合。

Q3. 关于残差的说法正确的是?

单选题 · mid

  • A.真实值与预测值的差← 正确答案
  • B.预测值与平均值的差
  • C.残差越大说明拟合越好
  • D.残差一定是正值无例外

答案:A。残差定义为真实值减预测值,可正可负。残差越大说明偏离越严重,拟合越差。预测值与平均值之差是“基线误差”的一部分,不是残差。

Q4. 梯度下降中学习率 α 过大会导致?

单选题 · mid

  • A.快速收敛到全局最优解
  • B.在最优解附近震荡发散← 正确答案
  • C.收敛速度变得更缓慢
  • D.损失函数变为常数

答案:B。学习率是迈步大小,太大时参数会跨过碗底在两侧来回震荡甚至发散,损失曲线呈现“之”字形上升。步长太小才会收敛缓慢,损失变为常数则通常意味着梯度消失或代码停止更新。

Q5. R² = 0.8 的正确含义是?

单选题 · mid

  • A.模型解释了目标八成波动← 正确答案
  • B.预测值有八成时间准确
  • C.模型误差占总误差的八成
  • D.数据中八成点落在线上

答案:A。R² 表示相对“猜均值基线”,模型解释掉了多少比例的目标波动。0.8 意味着解释掉 80% 波动,模型残余误差只占基线的 20%,而不是预测准确率或落线点数比例。

Q6. 出现多重共线性时可能的问题是?

单选题 · hard

  • A.训练集误差必然显著变大
  • B.梯度下降必定发散不收敛
  • C.系数估计不稳定且难以解释← 正确答案
  • D.决定系数一定会变为负值

答案:C。多个特征高度相关时,它们的作用可以互相替代,导致各自权重在数值上剧烈波动、符号甚至反转,解释性严重受损。训练误差通常变化不大,梯度下降也不必然发散,R² 变负更不是共线性的典型症状。

Q7. 特征数大于样本数时,正规方程 w = (XᵀX)⁻¹Xᵀy 通常?

单选题 · extreme

  • A.学习率需要设置得过于小
  • B.数据需要先做标准化处理
  • C.损失函数将不再是凸函数
  • D.XᵀX 矩阵不可求逆← 正确答案

答案:D。当特征数大于样本数时,XᵀX 是奇异矩阵(秩不足),不存在逆矩阵,正规方程无法直接求解。这正是梯度下降等迭代方法的用武之地;学习率和标准化是训练细节,与矩阵是否可逆无直接关系。

Q8. 下列哪些做法能降低过拟合风险?

多选题 · mid

  • A.增加训练数据的数量← 正确答案
  • B.增加更多的高次特征
  • C.使用正则化约束模型← 正确答案
  • D.用测试集反复调试参数

答案:AC。更多训练数据让模型见识更全面,正则化对过大权重施加惩罚,都能抑制过拟合。增加高次特征会放大模型复杂度、加重过拟合;用测试集反复调参会让测试分数虚高,破坏评估的可信度。

Q9. 关于训练集与测试集,正确的说法是?

多选题 · hard

  • A.测试集不参与模型训练← 正确答案
  • B.测试集分数反映泛化力← 正确答案
  • C.用测试集调参提升泛化力
  • D.数据划分前通常先打乱← 正确答案

答案:ABD。测试集必须完全隔离在训练之外,它给出的分数才代表对未知数据的泛化能力。划分前打乱数据可避免原始顺序带来的偏差。用测试集调参只是在“刷分”,会让模型对测试集过拟合,真实泛化力反而下降。

Q10. 线性回归的局限包括?

多选题 · easy

  • A.对离群异常值较为敏感← 正确答案
  • B.对非线性关系拟合能力弱← 正确答案
  • C.无法处理连续数值目标
  • D.特征相关时系数不稳定← 正确答案

答案:ABD。平方损失让异常值获得极大权重,容易把直线拽歪;线性假设使其难以刻画曲线关系;多重共线性会让系数互相“打架”、不稳定。而处理连续数值目标恰恰是线性回归的本职工作,不是局限。