二 机器学习基础:从线性回归到特征工程的完整指南
前言
在机器学习的广阔领域中,线性回归作为最基础也最经典的算法之一,始终占据着举足轻重的地位。无论是初学者踏入机器学习大门的第一步,还是资深从业者构建复杂模型的理论基石,线性回归及其相关技术都扮演着不可替代的角色。本文将系统性地介绍线性回归的核心概念,深入探讨最小二乘法与随机梯度下降法的数学原理,详细阐述正则化技术的应用场景,并全面讲解模型评估与特征工程的最佳实践。希望通过这篇文章,读者能够建立起对监督学习基础框架的完整认知体系。
一、线性回归:从直觉到数学
1.1 什么是线性回归?
线性回归(Linear Regression)是一种用于建立输入变量(自变量)与输出变量(因变量)之间线性关系的统计方法。其核心思想极为简洁:假设目标变量可以由若干特征变量的线性组合来近似表达。
从直觉上理解,当我们观察房价与面积之间的关系时,往往会发现面积越大,房价越高,这种近似的线性关系正是线性回归所要捕捉的规律。
1.2 简单线性回归
对于最简单的情形——单一特征变量——线性回归模型可以表示为:
$$\hat{y} = w_0 + w_1 x$$
其中:
$\hat{y}$ 是预测值
$x$ 是输入特征
$w_0$ 是截距(偏置项)
$w_1$ 是斜率(特征权重)
这个公式在几何上对应一条直线。模型的任务就是在数据点构成的散点图中,找到一条"最拟合"这些数据点的直线。
1.3 多元线性回归
在实际应用中,目标变量往往受到多个因素的共同影响。多元线性回归将模型扩展为:
$$\hat{y} = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n$$
用向量形式表达更为简洁:
$$\hat{y} = \mathbf{w}^T \mathbf{x}$$
其中 $\mathbf{w} = [w_0, w_1, \ldots, w_n]^T$ 为权重向量,$\mathbf{x} = [1, x_1, x_2, \ldots, x_n]^T$ 为特征向量(包含偏置项的虚拟特征1)。
1.4 线性回归的假设条件
线性回归模型在理论上依赖若干重要假设:
线性性:因变量与自变量之间存在线性关系。
独立性:各观测样本之间相互独立。
同方差性:残差的方差在所有预测值上保持一致(不存在异方差)。
正态性:残差近似服从正态分布(在小样本情形下尤为重要)。
无多重共线性:各特征之间不存在高度线性相关性。
当然,实际数据往往不能完全满足上述假设,因此理解这些假设的局限性,以及在违反假设时如何应对,是掌握线性回归的重要组成部分。
1.5 损失函数:如何衡量"拟合优劣"
为了找到最优的参数 $\mathbf{w}$,我们需要定义一个量化预测误差的指标——损失函数(Loss Function)。在线性回归中,最常用的损失函数是均方误差(Mean Squared Error, MSE):
$$L(\mathbf{w}) = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2$$
其中 $m$ 是样本数量,$y^{(i)}$ 是第 $i$ 个样本的真实值,$\hat{y}^{(i)}$ 是预测值。
选择MSE作为损失函数有其深刻的统计学背景:在高斯噪声假设下,最小化MSE等价于最大化似然估计,这为线性回归提供了严格的概率论基础。
二、最小二乘法:解析解的力量
2.1 最小二乘法的基本思想
最小二乘法(Ordinary Least Squares, OLS)是求解线性回归参数的经典方法。其目标是找到一组权重 $\mathbf{w}$,使得所有训练样本的预测误差的平方和最小,即:
$$\min_{\mathbf{w}} \sum_{i=1}^{m} (y^{(i)} - \mathbf{w}^T \mathbf{x}^{(i)})^2$$
这一思想最早由高斯和勒让德在18世纪末至19世纪初分别独立提出,至今仍是统计学与机器学习领域的基石方法之一。
2.2 矩阵形式的推导
将训练数据整理为矩阵形式,令 $\mathbf{X}$ 为 $m \times (n+1)$ 的设计矩阵(每行是一个样本,每列是一个特征),$\mathbf{y}$ 为 $m \times 1$ 的目标向量,则损失函数变为:
$$L(\mathbf{w}) = |\mathbf{X}\mathbf{w} - \mathbf{y}|^2 = (\mathbf{X}\mathbf{w} - \mathbf{y})^T(\mathbf{X}\mathbf{w} - \mathbf{y})$$
对 $\mathbf{w}$ 求偏导并令其为零:
$$\frac{\partial L}{\partial \mathbf{w}} = 2\mathbf{X}^T(\mathbf{X}\mathbf{w} - \mathbf{y}) = 0$$
整理得到著名的正规方程(Normal Equation):
$$\mathbf{X}^T\mathbf{X}\mathbf{w} = \mathbf{X}^T\mathbf{y}$$
$$\mathbf{w}^* = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}$$
这一解析解直接给出了最优参数,无需迭代优化,是最小二乘法最大的优势所在。
2.3 最小二乘法的几何解释
从线性代数的角度来看,最小二乘法求解的实质是:将目标向量 $\mathbf{y}$ 投影到设计矩阵 $\mathbf{X}$ 的列空间上。预测值 $\hat{\mathbf{y}} = \mathbf{X}\mathbf{w}^*$ 是 $\mathbf{y}$ 在列空间上的正交投影,残差向量 $\mathbf{y} - \hat{\mathbf{y}}$ 与列空间正交,这正是"最小二乘"得名的几何含义。
2.4 最小二乘法的局限性
尽管最小二乘法拥有优雅的解析解,但它并非万能:
计算复杂度高:矩阵求逆操作的时间复杂度为 $O(n^3)$,当特征维度 $n$ 很大时,计算成本极高。
数值稳定性问题:当 $\mathbf{X}^T\mathbf{X}$ 接近奇异矩阵(即特征存在多重共线性)时,矩阵求逆可能产生严重的数值误差。
内存限制:对于大规模数据集,存储整个设计矩阵可能超出内存限制。
针对这些局限性,梯度下降法提供了另一条可行路径。
三、随机梯度下降法:大规模数据的解决方案
3.1 梯度下降的基本原理
梯度下降法(Gradient Descent)是一种基于迭代的优化算法,其核心思想来源于微积分中的方向导数概念:沿着函数梯度的反方向移动,函数值下降最快。
想象站在一座山上,被浓雾笼罩,只能感知脚下地面的坡度。梯度下降就是每次沿着最陡峭的下坡方向走一小步,最终到达山谷底部(局部最小值)。
参数更新规则为:
$$\mathbf{w} \leftarrow \mathbf{w} - \alpha \nabla_{\mathbf{w}} L(\mathbf{w})$$
其中 $\alpha$ 是学习率(Learning Rate),控制每次更新的步长。
3.2 批量梯度下降 vs. 随机梯度下降
批量梯度下降(Batch Gradient Descent, BGD) 在每次更新时使用全部训练数据计算梯度:
$$\nabla_{\mathbf{w}} L = \frac{2}{m} \mathbf{X}^T (\mathbf{X}\mathbf{w} - \mathbf{y})$$
这种方法梯度估计准确,但每次迭代需要遍历所有数据,在大规模数据集上效率低下。
随机梯度下降(Stochastic Gradient Descent, SGD) 每次仅使用单个样本计算梯度并更新参数:
$$\mathbf{w} \leftarrow \mathbf{w} - \alpha \cdot 2(\hat{y}^{(i)} - y^{(i)}) \mathbf{x}^{(i)}$$
SGD的优势在于:
每次迭代计算成本极低
能够在线学习(Online Learning),实时处理流式数据
梯度的随机噪声有助于跳出局部最小值
然而,SGD的缺点同样明显:梯度估计噪声大,损失函数收敛路径曲折,最终可能在最优解附近振荡而非精确收敛。
3.3 小批量梯度下降:两者的折衷
小批量梯度下降(Mini-batch Gradient Descent) 是BGD与SGD的折衷方案,每次使用一个小批量(通常32到256个样本)计算梯度:
$$\mathbf{w} \leftarrow \mathbf{w} - \alpha \cdot \frac{2}{B} \sum_{i \in \mathcal{B}} (\hat{y}^{(i)} - y^{(i)}) \mathbf{x}^{(i)}$$
其中 $B$ 是批量大小,$\mathcal{B}$ 是随机选取的小批量样本集合。
小批量梯度下降在实践中应用最为广泛,能够有效利用现代GPU的并行计算能力,同时保持合理的梯度估计精度。
3.4 学习率的选择与自适应优化器
学习率 $\alpha$ 的选择至关重要:
学习率过大:参数更新幅度过大,损失函数可能在最优解附近跳跃甚至发散
学习率过小:收敛速度缓慢,训练时间大幅增加
为了解决固定学习率的局限性,研究者提出了多种自适应学习率算法:
Momentum:引入历史梯度的动量,加速收敛并减少振荡
AdaGrad:根据历史梯度的平方和自适应调整每个参数的学习率
RMSProp:改进AdaGrad,使用指数移动平均避免学习率过早衰减
Adam:结合Momentum与RMSProp的优点,是目前深度学习中最常用的优化器之一
3.5 收敛性分析
对于凸损失函数(如MSE),梯度下降算法理论上保证收敛到全局最优解。然而,收敛速度取决于损失函数的曲率(Hessian矩阵的条件数)。当特征之间存在尺度差异时,条件数可能很大,导致收敛缓慢——这也是数据标准化在预处理阶段如此重要的原因之一。
四、正则化:对抗过拟合的利器
4.1 过拟合与欠拟合
在机器学习中,模型性能受到偏差-方差权衡(Bias-Variance Tradeoff) 的制约:
欠拟合(Underfitting):模型过于简单,无法捕捉数据中的真实规律,表现为训练误差和测试误差均较高(高偏差)。
过拟合(Overfitting):模型过于复杂,不仅拟合了数据中的真实规律,还"记住"了训练数据中的噪声,导致训练误差低但测试误差高(高方差)。
正则化(Regularization)通过在损失函数中引入惩罚项,限制模型参数的大小,从而在拟合能力与泛化能力之间取得平衡。
4.2 L2正则化:岭回归(Ridge Regression)
L2正则化在损失函数中加入权重向量的L2范数的平方作为惩罚项:
$$L_{ridge}(\mathbf{w}) = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2 + \lambda |\mathbf{w}|_2^2$$
其中 $\lambda$ 是正则化强度超参数,$|\mathbf{w}|2^2 = \sum{j=1}^{n} w_j^2$。
岭回归的解析解为:
$$\mathbf{w}^* = (\mathbf{X}^T\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^T\mathbf{y}$$
引入 $\lambda \mathbf{I}$ 使矩阵始终可逆,同时解决了多重共线性问题——这是岭回归相较于普通最小二乘法的重要优势。
L2正则化的效果:将权重向量压缩向零,但不会将权重精确压缩为零,即保留所有特征但使其权重较小。从贝叶斯角度看,L2正则化等价于对参数施加零均值高斯先验。
4.3 L1正则化:LASSO回归
L1正则化在损失函数中加入权重向量的L1范数作为惩罚项:
$$L_{lasso}(\mathbf{w}) = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2 + \lambda |\mathbf{w}|_1$$
其中 $|\mathbf{w}|1 = \sum{j=1}^{n} |w_j|$。
L1正则化的核心特点:能够将部分权重精确压缩为零,从而实现特征选择(Sparse Solution)。当数据中存在大量无关特征时,LASSO回归能够自动识别并剔除这些特征,产生稀疏模型。
这一特点的几何解释颇为直观:L1正则化的约束域是一个菱形(高维情形下为超正八面体),其角点恰好位于坐标轴上,损失函数的等高线与约束域的接触点很可能恰好是角点,对应某些参数为零的稀疏解。
4.4 弹性网络(Elastic Net)
弹性网络(Elastic Net)结合了L1和L2正则化的优点:
$$L_{EN}(\mathbf{w}) = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2 + \lambda_1 |\mathbf{w}|_1 + \lambda_2 |\mathbf{w}|_2^2$$
当特征之间存在高度相关性时,LASSO可能随机选择其中一个特征而忽略其他相关特征;而弹性网络通过L2惩罚项能够倾向于同时选择或剔除相关特征组,产生更稳定的特征选择结果。
4.5 正则化强度的选择
正则化超参数 $\lambda$ 的选择通常通过交叉验证(Cross-Validation) 来完成:
$\lambda$ 过小:正则化效果不明显,模型仍可能过拟合
$\lambda$ 过大:过度惩罚,导致模型欠拟合
在实践中,常用对数均匀网格搜索结合k折交叉验证来确定最优的 $\lambda$ 值。
五、模型评估:如何客观衡量模型表现
5.1 训练集、验证集与测试集的划分
在模型开发过程中,数据集通常被划分为三个不相交的子集:
训练集(Training Set):用于拟合模型参数,通常占总数据的60%-80%。
验证集(Validation Set):用于调优超参数(如正则化强度、学习率)和模型选择,通常占10%-20%。
测试集(Test Set):最终评估模型的泛化性能,只在所有调参工作完成后使用一次,通常占10%-20%。
常见误区:使用测试集进行多轮调参,这会导致测试集信息泄露,使得测试误差不再是对真实泛化误差的无偏估计。
5.2 交叉验证
当数据量有限时,简单的训练/测试划分可能因随机性而产生不可靠的评估结果。k折交叉验证(k-Fold Cross-Validation) 提供了一种更鲁棒的评估框架:
将训练数据随机分成 $k$ 个大小相近的子集(折)
每次以其中一折作为验证集,其余 $k-1$ 折作为训练集
重复 $k$ 次,每折都作为一次验证集
取 $k$ 次验证结果的平均值作为最终评估指标
常见选择是 $k=5$ 或 $k=10$。对于极度不平衡的数据集,还可以采用分层k折交叉验证(Stratified k-Fold),保证每折中各类别的比例与原始数据一致。
5.3 回归任务的评估指标
均方误差(MSE)
$$MSE = \frac{1}{m} \sum_{i=1}^{m} (y^{(i)} - \hat{y}^{(i)})^2$$
MSE对大误差惩罚更重(因为误差被平方),对异常值敏感。
均方根误差(RMSE)
$$RMSE = \sqrt{MSE}$$
RMSE与目标变量具有相同的量纲,物理含义更直观,是实践中最常报告的回归评估指标之一。
平均绝对误差(MAE)
$$MAE = \frac{1}{m} \sum_{i=1}^{m} |y^{(i)} - \hat{y}^{(i)}|$$
MAE对异常值更为鲁棒,但在数学上不可微(在零点处),给优化带来一定困难。
决定系数(R²)
$$R^2 = 1 - \frac{\sum_{i=1}^{m}(y^{(i)} - \hat{y}^{(i)})^2}{\sum_{i=1}^{m}(y^{(i)} - \bar{y})^2}$$
$R^2$ 衡量模型解释目标变量方差的比例,取值范围通常在 $[0, 1]$ 之间(负值表示模型比简单预测均值还差)。$R^2 = 1$ 表示完美拟合,$R^2 = 0$ 表示模型与预测均值无异。
调整后的R²(Adjusted R²) 在特征数量增加时会对 $R^2$ 进行惩罚调整,防止仅通过增加特征数量就提升指标的"虚假改善"。
5.4 学习曲线分析
学习曲线(Learning Curve) 通过绘制训练集大小与训练误差/验证误差的关系,帮助诊断模型状态:
高偏差(欠拟合):训练误差和验证误差均较高,且两者接近。解决方案:增加模型复杂度,添加更多特征。
高方差(过拟合):训练误差低,但验证误差显著高于训练误差,两者之间存在较大差距。解决方案:增加训练数据,添加正则化,减少特征数量。
六、特征工程:让数据讲述更好的故事
特征工程(Feature Engineering)是将原始数据转化为适合机器学习算法输入的过程,往往被认为是提升模型性能最直接有效的手段。有经验的从业者常说:"好的特征工程胜过精巧的模型调参。" 特征工程主要包括数据预处理、特征构建和特征选择三个核心环节。
6.1 数据预处理
6.1.1 缺失值处理
真实数据集中,缺失值(Missing Values)几乎不可避免。常见的处理策略包括:
删除策略:
删除含缺失值的样本(行删除):适用于缺失比例极低且样本量充足的情况
删除缺失比例过高的特征(列删除):当某特征缺失率超过50%时,该特征往往提供的信息有限
填充策略(Imputation):
均值/中位数/众数填充:简单快捷,但会改变特征分布,且未利用样本间的关联信息
前向/后向填充:适用于时间序列数据
KNN填充:利用相似样本的对应特征值进行填充,能够捕捉特征间的局部关联
模型填充:将其他特征作为输入,训练预测模型来估计缺失值,精度高但计算成本大
在某些情况下,缺失本身也是一种信息(例如,用户未填写年龄可能暗示某种用户行为模式),可以额外创建一个二值指示特征来标记缺失状态。
6.1.2 异常值处理
异常值(Outliers)可能是数据录入错误、测量误差,也可能是真实存在的极端情况。常见检测方法:
Z-Score方法:$|z| = |x - \mu| / \sigma > 3$ 视为异常
IQR方法:落在 $[Q_1 - 1.5 \times IQR, Q_3 + 1.5 \times IQR]$ 范围之外的值视为异常
孤立森林(Isolation Forest):适用于高维数据的异常检测算法
处理策略包括删除、截断(Winsorizing)或用中位数替代。需要特别注意的是:删除异常值应有明确的业务理由,不能盲目清洗,否则可能丢失重要的边缘案例。
6.1.3 特征缩放
不同特征的量纲和数值范围差异可能对基于距离或梯度的算法造成严重影响。常见的特征缩放方法:
标准化(Standardization / Z-Score Normalization):
$$x' = \frac{x - \mu}{\sigma}$$
将特征转化为均值为0、标准差为1的分布,适合大多数机器学习算法,对异常值较不敏感。
最小-最大归一化(Min-Max Normalization):
$$x' = \frac{x - x_{min}}{x_{max} - x_{min}}$$
将特征缩放至 $[0, 1]$ 区间,对异常值敏感,适合神经网络等需要固定范围输入的算法。
鲁棒缩放(Robust Scaling):
$$x' = \frac{x - Q_{50}}{Q_{75} - Q_{25}}$$
使用中位数和四分位距进行缩放,对异常值高度鲁棒,适合含有大量异常值的数据集。
重要提醒:缩放的统计量(均值、标准差、最小值等)应只在训练集上计算,然后应用于训练集和测试集,以防止数据泄露。
6.1.4 类别特征编码
机器学习算法通常要求数值型输入,因此需要将类别特征(Categorical Features)转化为数值表示:
标签编码(Label Encoding):将类别映射为整数(0, 1, 2, ...),适合有序类别特征(如学历等级),但对于无序类别会引入人为的顺序关系。
独热编码(One-Hot Encoding):将每个类别转化为一个二值特征,适合无序名义类别特征,但会导致特征维度爆炸(对高基数特征尤为严重)。
目标编码(Target Encoding):用该类别对应的目标变量均值替代类别标签,适合高基数类别特征,但需防范数据泄露(应在交叉验证的训练折内计算)。
频率编码(Frequency Encoding):用类别出现的频率替代类别标签,保留了类别的统计信息。
6.2 特征构建
特征构建(Feature Construction)是通过对原始特征进行变换或组合,创造出对模型更有信息量的新特征的过程,是特征工程中最需要创造力与领域知识的环节。
6.2.1 多项式特征
对于非线性关系,多项式特征可以在保持线性模型框架的同时捕捉非线性效应:
$$x_1, x_2 \rightarrow x_1, x_2, x_1^2, x_2^2, x_1 x_2$$
例如,在房价预测中,面积的平方可能比线性面积更能体现大户型的溢价效应。需要注意的是,多项式阶次越高,特征空间维度增长越快,过拟合风险也随之上升。
6.2.2 交互特征
交互特征(Interaction Features)捕捉两个或多个特征之间的联合效应:
$$x_{interaction} = x_i \times x_j$$
例如,在广告效果预测中,广告曝光次数($x_1$)与广告创意质量评分($x_2$)的乘积,可能比单独使用任何一个特征更能预测转化率。
6.2.3 对数变换与Box-Cox变换
当目标变量或特征分布高度右偏(长尾分布)时,对数变换可以使其更接近正态分布:
$$x' = \log(x + 1)$$
加1是为了避免对零值取对数。更一般的Box-Cox变换提供了一族参数化变换:
$$x' = \begin{cases} \frac{x^\lambda - 1}{\lambda} & \text{if } \lambda \neq 0 \ \ln(x) & \text{if } \lambda = 0 \end{cases}$$
通过最大似然估计选择最优的 $\lambda$ 值。
6.2.4 时间特征提取
对于包含时间戳的数据,可以从中提取大量有意义的特征:
基本时间特征:年、月、日、小时、分钟、星期几、是否周末
周期性特征:使用正弦/余弦变换处理周期性(避免12月与1月被认为距离遥远)
时间间隔特征:距离某一重要事件的时间差
滞后特征(Lag Features):历史时间窗口内的目标变量值
6.2.5 基于领域知识的特征构建
领域知识是特征构建中最宝贵的资产。以电商用户行为分析为例:
购买频率 = 总购买次数 / 注册天数
平均客单价 = 总消费金额 / 总购买次数
最近一次购买距今天数(Recency)
RFM特征组合(Recency、Frequency、Monetary)
这些经过业务理解提炼的复合特征,往往比原始数据直接输入模型具有更强的预测能力。
6.3 特征选择
特征选择(Feature Selection)的目的是从所有候选特征中选出对模型最有价值的子集,这不仅能够提高模型的预测精度,还能减少训练时间、降低内存消耗,以及提高模型的可解释性。
6.3.1 过滤法(Filter Methods)
过滤法独立于具体的机器学习模型,通过统计指标来评估每个特征的"价值":
方差过滤:去除方差接近于零的特征,这类特征对所有样本几乎提供相同的值,缺乏区分能力。
相关系数过滤:计算特征与目标变量的Pearson相关系数,低相关性特征可被剔除;同时也可用于检测特征间的多重共线性。
互信息(Mutual Information):衡量特征与目标变量之间的非线性依赖关系,能够捕捉Pearson相关系数无法检测的非线性关联。
卡方检验:适用于分类任务,检验类别特征与目标类别之间的统计独立性。
过滤法的优点:计算效率高,不依赖模型。缺点:独立评估每个特征,无法捕捉特征间的交互效应。
6.3.2 包裹法(Wrapper Methods)
包裹法将特征选择问题转化为搜索问题,以模型在特定特征子集上的性能作为评估准则:
递归特征消除(Recursive Feature Elimination, RFE):先用全部特征训练模型,根据特征重要性排序逐步删除重要性最低的特征,重复此过程直至达到目标特征数量。
前向选择(Forward Selection):从空集出发,每次添加使模型性能提升最大的特征。
后向消除(Backward Elimination):从全集出发,每次删除对模型性能影响最小的特征。
包裹法的优点:考虑特征间的交互,选择结果针对特定模型优化。缺点:计算成本高,容易过拟合(尤其在特征维度较高时)。
6.3.3 嵌入法(Embedded Methods)
嵌入法将特征选择融入模型训练过程本身,是三类方法中最为高效的:
L1正则化(LASSO):如前所述,通过将部分权重压缩为零,隐式实现特征选择。
基于树模型的特征重要性:随机森林、梯度提升树(如XGBoost、LightGBM)在训练后可以输出基于基尼不纯度或信息增益的特征重要性评分,高效识别有价值的特征。
正则化路径分析:通过观察LASSO在不同 $\lambda$ 值下的系数路径,理解各特征在不同正则化强度下的重要性变化。
6.3.4 特征选择的实践建议
先理解业务:在应用任何算法之前,结合业务知识剔除明显无关的特征。
处理多重共线性:高度相关的特征群中,保留最具代表性或业务含义最清晰的一个。
避免信息泄露:所有特征选择操作均应在训练集内进行,防止测试集信息污染选择过程。
稳定性验证:通过多次交叉验证验证特征选择结果的稳定性,避免因单次随机划分而选出的"偶然有效"特征。
迭代优化:特征工程不是一蹴而就的,应在模型评估结果的反馈下持续迭代改进。
七、综合案例:房价预测
为了将上述概念融会贯通,我们以经典的房价预测任务为例,梳理一个完整的建模流程:
第一步:理解数据与业务
分析目标变量(房价)的分布,确认是否需要对数变换
梳理原始特征:面积、卧室数量、浴室数量、建造年份、地段、装修情况等
第二步:数据预处理
处理缺失的装修情况(可用众数填充并创建缺失指示变量)
识别并处理异常房价(使用IQR方法)
对连续特征进行标准化,对地段类别特征进行目标编码
第三步:特征构建
创建房屋年龄特征(当前年份 - 建造年份)
创建面积与卧室数量的交互特征(人均面积)
对房屋总价进行对数变换
第四步:特征选择
使用相关系数矩阵检测多重共线性
应用基于随机森林的特征重要性筛选
第五步:模型训练与正则化
先训练无正则化的线性回归作为基线
通过交叉验证比较Ridge、LASSO和Elastic Net的表现
选择最优 $\lambda$ 值
第六步:模型评估
计算测试集上的RMSE和R²
绘制残差分布图,验证误差是否近似正态
绘制预测值vs真实值散点图,检查系统性偏差
结语
从线性回归的基本假设,到最小二乘法的解析求解,再到随机梯度下降法的迭代优化;从正则化技术对抗过拟合,到系统性的模型评估框架,再到涵盖预处理、特征构建与特征选择的特征工程体系——本文构建了一个围绕线性回归的完整机器学习知识框架。
这些技术不仅是线性回归的专属工具,更是整个机器学习体系的基础构件。深度学习中的全连接层本质上是线性变换的叠加;正则化思想渗透在几乎所有现代模型中;梯度下降是训练神经网络的核心优化方法;而特征工程的重要性更是在各类Kaggle竞赛与工业实践中一次次得到印证。
机器学习的学习之路没有捷径。对基础理论的深刻理解,才能在面对新问题时游刃有余。希望本文能够成为读者深入机器学习领域的坚实跳板,在此基础上不断探索更广阔的技术边界。
参考文献:
Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.
Géron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. O'Reilly.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.