在机器学习中,模型可能会过度拟合数据,这意味着它捕捉到了数据中的潜在模式和噪声。然而,当应用于未见过的数据时,学到的关联可能不再成立。通常在将训练好的预测应用到测试数据上时发现这一点,与训练数据相比,统计性能显著下降。
克服过拟合的一种方法是通过正则化,这可以通过在线性模型中对大权重(系数)进行惩罚,迫使模型缩小所有系数。正则化减少了模型对训练样本中获得的特定信息的依赖。
以岭回归为例,通过向损失函数添加一个随着系数增加而增加的惩罚项来影响模型的性能。正则化损失函数如下所示:
L(X, y, β) = || y - Xβ ||^2_2 + α || β ||^2_2
其中,X 是输入数据,y 是目标变量,β 是与特征相关的系数向量,α 是正则化强度。
正则化损失函数旨在平衡准确预测训练集和防止过拟合之间的权衡。在这种正则化损失中,左侧(例如 ||y - Xβ||^2_2)测量实际目标变量y和预测值之间的平方差。单独最小化这一项可能导致过拟合,因为模型可能变得过于复杂,对训练数据中的噪声过于敏感。
为了解决过拟合问题,岭回归正则化添加了一个约束,称为惩罚项(α || β ||^2_2),添加到损失函数中。这个惩罚项是模型系数的平方和,乘以正则化强度α。通过引入这个约束,岭回归正则化不鼓励任何单个系数β_i取过大的值,并鼓励较小且更均匀分布的系数。α的值越高,系数越趋向于零。然而,过高的α可能导致模型欠拟合,无法捕捉数据中的重要模式。
因此,正则化损失函数结合了预测准确性项和惩罚项。通过调整正则化强度,实践者可以微调对权重施加的约束程度,训练一个能够很好地泛化到未见过的数据上,同时避免过拟合的模型。
为了展示岭回归正则化如何工作,将创建一个无噪声的数据集。然后将在一系列正则化强度(α)上训练一个正则化模型,并绘制训练系数和这些系数与原始值之间的均方误差如何随着正则化强度的变化而变化。
创建了一个包含100个样本和10个特征的玩具数据集,适合进行回归分析。在10个特征中,有8个是有信息的,对回归有贡献,而剩下的2个特征对目标变量没有任何影响(它们的真实系数为0)。请注意,在这个例子中数据是无噪声的,因此可以期望回归模型能够完全恢复真实的系数w。
使用Ridge,这是一个具有L2正则化的线性模型。训练了几个模型,每个模型的模型参数alpha值不同,这是一个正的常数,乘以惩罚项,控制正则化强度。对于每个训练好的模型,计算真实系数w和模型找到的系数clf之间的误差。将识别出的系数和计算出的错误存储在列表中,这使得方便地绘制它们。
现在绘制10个不同的正则化系数作为正则化参数alpha的函数,其中每种颜色代表不同的系数。在右侧,绘制了估计器的系数误差如何随着正则化的变化而变化。
左侧的图表显示了正则化强度(alpha)如何影响岭回归系数。alpha的较小值(弱正则化)允许系数紧密地类似于用于生成数据集的真实系数(w)。这是因为人工数据集没有添加额外的噪声。随着alpha的增加,系数向零缩小,逐渐减少了以前更重要的特征的影响。
右侧的图表显示了模型找到的系数和真实系数(w)之间的均方误差(MSE)。它提供了一个与岭模型与真实生成模型的接近程度相关的度量。低误差意味着它找到了更接近真实生成模型的系数。在这种情况下,由于玩具数据集是无噪声的,可以看到最不正则化的模型检索到的系数最接近真实系数(w)(误差接近0)。
当alpha很小时,模型捕捉到了训练数据的复杂细节,无论是由噪声引起的还是由实际信息引起的。随着alpha的增加,最高的系数更快地缩小,使它们对应的特征在训练过程中的影响力降低。这可以增强模型对未见过的数据的泛化能力(如果有很多噪声要捕捉),但如果正则化相对于数据包含的噪声量变得太强(如本例所示),它也可能导致性能损失。
在通常包含噪声的真实世界场景中,选择合适的alpha值变得至关重要,以在过拟合和欠拟合模型之间取得平衡。在这里,看到了Ridge对系数增加了惩罚以对抗过拟合。另一个与训练数据集中的异常值有关的问题。异常值是一个与其他观测值显著不同的数据点。具体来说,这些异常值影响了之前展示的损失函数的左侧项。