回归模型中目标转换的影响

机器学习领域,数据预处理是构建有效模型的关键步骤之一。本文将探讨在回归分析中,对目标变量进行转换对模型性能的影响。将通过两个例子来说明这一点:一个使用合成数据,另一个基于艾姆斯房价数据集。

合成数据示例

首先,生成了一个合成的随机回归数据集。目标变量y通过以下方式进行修改:将所有目标转换为非负数(通过加上最低y的绝对值),并应用指数函数以获得非线性目标,这些目标不能使用简单的线性模型拟合。因此,将使用对数函数(np.log1p)和指数函数(np.expm1)在训练线性回归模型之前转换目标,并使用它进行预测。

在下面的代码块中,首先绘制了应用对数函数前后目标的概率密度函数。然后,将一个线性模型应用于原始目标。由于非线性,训练的模型在预测期间将不够精确。随后,使用对数函数来线性化目标,即使使用类似的线性模型,也能实现更好的预测,这一点通过中位数绝对误差(MedAE)来报告。

import numpy as np from sklearn.datasets import make_regression X, y = make_regression(n_samples=10000, noise=100, random_state=0) y = np.expm1((y + abs(y.min())) / 200) y_trans = np.log1p(y) import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split f, (ax0, ax1) = plt.subplots(1, 2) ax0.hist(y, bins=100, density=True) ax0.set_xlim([0, 2000]) ax0.set_ylabel("概率") ax0.set_xlabel("目标") ax0.set_title("目标分布") ax1.hist(y_trans, bins=100, density=True) ax1.set_ylabel("概率") ax1.set_xlabel("目标") ax1.set_title("转换后的目标分布") f.suptitle("合成数据", y=1.05) plt.tight_layout()

接下来,将展示如何使用TransformedTargetRegressor来结合回归模型和目标转换。这种转换能够提高模型的预测精度,尤其是在处理非线性目标时。

艾姆斯房价数据集

类似地,使用艾姆斯房价数据集来展示在模型学习之前转换目标的影响。在这个例子中,要预测的目标是每栋房子的售价。使用QuantileTransformer来规范化目标分布,然后应用RidgeCV模型。

转换的效果在合成数据上更为明显,但在艾姆斯房价数据集上也有所体现。转换导致R^2值增加,MedAE大幅下降。没有目标转换的残差图(预测目标 - 真实目标 vs 预测目标)呈现出曲线形的“倒微笑”形状,这是由于残差值随预测目标值的变化而变化。通过目标转换,形状更加线性,表明模型拟合得更好。

from sklearn.datasets import fetch_openml from sklearn.preprocessing import quantile_transform ames = fetch_openml(name="house_prices", as_frame=True) X = ames.data.select_dtypes(np.number) X = X.drop(columns=["LotFrontage", "GarageYrBlt", "MasVnrArea"]) y = ames.target / 1000 y_trans = quantile_transform(y.to_frame(), n_quantiles=900, output_distribution="normal", copy=True).squeeze() f, (ax0, ax1) = plt.subplots(1, 2) ax0.hist(y, bins=100, density=True) ax0.set_ylabel("概率") ax0.set_xlabel("目标") ax0.set_title("目标分布") ax1.hist(y_trans, bins=100, density=True) ax1.set_ylabel("概率") ax1.set_xlabel("目标") ax1.set_title("转换后的目标分布") f.suptitle("艾姆斯房价数据:售价", y=1.05) plt.tight_layout()

通过这些例子,可以看到在回归模型中对目标变量进行适当的转换可以显著提高模型的预测性能。这种技术尤其适用于目标变量呈现非线性分布的情况。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485