\[ \begin{align}\begin{aligned}\newcommand{\ba}{\boldsymbol{a}}
\newcommand{\bb}{\boldsymbol{b}}
\newcommand{\be}{\boldsymbol{e}}
\newcommand{\bq}{\boldsymbol{q}}
\newcommand{\bk}{\boldsymbol{k}}
\newcommand{\bw}{\boldsymbol{w}}
\newcommand{\bx}{\boldsymbol{x}}
\newcommand{\by}{\boldsymbol{y}}
\newcommand{\bz}{\boldsymbol{z}}
\newcommand{\bd}{\boldsymbol{d}}
\newcommand{\bv}{\boldsymbol{v}}
\newcommand{\bs}{\boldsymbol{s}}\\\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\md}{\mbox{d}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bone}{\boldsymbol{1}}
\newcommand{\bzero}{\boldsymbol{0}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bh}{\boldsymbol{h}}
\newcommand{\bc}{\boldsymbol{c}}
\newcommand{\br}{\boldsymbol{r}}
\newcommand{\bQ}{\boldsymbol{Q}}
\newcommand{\bK}{\boldsymbol{K}}
\newcommand{\bV}{\boldsymbol{V}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bg}{\boldsymbol{g}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bq}{\boldsymbol{q}}
\newcommand{\bk}{\boldsymbol{k}}
\newcommand{\bJ}{\boldsymbol{J}}
\newcommand{\bp}{\boldsymbol{p}}
\newcommand{\bi}{\boldsymbol{i}}
\newcommand{\bo}{\boldsymbol{o}}
\newcommand{\bE}{\boldsymbol{E}}
\newcommand{\bH}{\boldsymbol{H}}
\newcommand{\bL}{\boldsymbol{L}}
\newcommand{\bu}{\boldsymbol{u}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\newcommand{\trans}{^{\rm\scriptsize T}}
\newcommand{\var}{\mathrm{var}}\\\newcommand{\bA}{\boldsymbol{A}}
\newcommand{\bB}{\boldsymbol{B}}
\newcommand{\bC}{\boldsymbol{C}}
\newcommand{\bD}{\boldsymbol{D}}
\newcommand{\bG}{\boldsymbol{G}}
\newcommand{\bI}{\boldsymbol{I}}
\newcommand{\bM}{\boldsymbol{M}}
\newcommand{\bP}{\boldsymbol{P}}
\newcommand{\bS}{\boldsymbol{S}}
\newcommand{\bU}{\boldsymbol{U}}
\newcommand{\bW}{\boldsymbol{W}}
\newcommand{\bX}{\boldsymbol{X}}
\newcommand{\bY}{\boldsymbol{Y}}
\newcommand{\bZ}{\boldsymbol{Z}}
\newcommand{\cotp}{\textcolor[RGB]{48,209,88}{TP}}
\newcommand{\cotn}{\textcolor[RGB]{100,210,255}{TN}}
\newcommand{\cofp}{\textcolor[RGB]{94,92,230}{FP}}
\newcommand{\cofn}{\textcolor[RGB]{191,90,242}{FN}}\\\newcommand{\numcotp}{\textcolor[RGB]{48,209,88}{50}}
\newcommand{\numcotn}{\textcolor[RGB]{100,210,255}{30}}
\newcommand{\numcofp}{\textcolor[RGB]{94,92,230}{10}}
\newcommand{\numcofn}{\textcolor[RGB]{191,90,242}{10}}
\DeclareMathOperator*{\argmin}{arg\,min}\end{aligned}\end{align} \]
Python 线性回归实验与向量化:参考答案
返回正文练习 · 返回答案索引
说明
以下答案与正文练习逐题对应。封闭推导题给出关键等式;开放编程和实验题给出参考实现、核验标准与结论边界。
对平方损失求梯度得 \(2\bX\trans\cdot(\bX\cdot\bw-\by)\),令其为0得到正规方程;满列秩时左乘逆矩阵得到解析解。数值实现应使用 solve 或 lstsq,避免显式求逆。
在线性模型条件均值正确且误差满足 \(\mathbb{E}(\boldsymbol\epsilon\mid\bX)=0\) 时,条件于 \(\bX\) 有 \(\mathbb{E}(\widehat\bw\mid\bX)=\bw_0\),再用重期望即得无偏性。 这段论证中的假设不能省略;删除假设时,应用一个最小反例说明结论在哪一步失效。
若设计矩阵含截距列,则 \(\bX\in\mathbb{R}^{n\times(p+1)}\)、\(\by\in\mathbb{R}^{n}\)、\(\widehat\bw\in\mathbb{R}^{p+1}\)。进一步检查:矩阵乘法的内维必须相同,求和轴在结果中消失,广播轴长度只能为1或与目标轴相等,最终梯度必须与对应参数同形。
实现稳定的最小二乘估计、重复模拟及计时函数,并返回带标准误的汇总表。 参考实现见下方代码。提交版本还应添加类型、维度、有限值检查和文档字符串,并让调用者能检查关键中间量。
import numpy as np
def ols(x, y):
x = np.asarray(x, float)
y = np.asarray(y, float)
design = np.column_stack([np.ones(len(x)), x])
coef, *_ = np.linalg.lstsq(design, y, rcond=None)
return coef
最小二乘不要显式计算逆矩阵;使用 np.linalg.lstsq 或 QR/SVD。共线性严重时同时报告条件数,并考虑中心化、尺度化或岭正则。
改变样本量、噪声方差和共线性程度,比较估计偏差、方差、覆盖率与运行时间。 至少运行多个预先固定的种子;结果表记录配置、主要指标均值与标准差、训练时间和峰值内存。验证集用于选择,测试集只在方案冻结后使用。
对“改变样本量、噪声方差和共线性程度,比较估计偏差、方差、覆盖率与运行时间”,横轴放主动改变的变量,纵轴放直接检验假设的指标,颜色或线型只编码少量关键配置。误差条表示种子波动;图中相关性不能单独证明因果关系,也不能自动外推到未测试的数据分布。
综合报告应把 \(\widehat{\bw}=(\bX\trans\cdot\bX)^{-1}\cdot\bX\trans\cdot\by\)、实现任务“实现稳定的最小二乘估计、重复模拟及计时函数,并返回带标准误的汇总表”和实验“改变样本量、噪声方差和共线性程度,比较估计偏差、方差、覆盖率与运行时间”连成可复现闭环。评分重点是公式与代码一致、无数据泄漏、随机性受控、指标合适,以及结论不超出实际数据和预算。