弹性网络回归是一种结合了L1和L2正则化的线性回归方法。它通过在损失函数中加入正则化项来防止模型过拟合,同时保持模型的稀疏性。这种方法特别适用于特征数量多于样本数量的情况。
对于单输出任务,弹性网络的优化函数如下所示:
1 / (2 * n_samples) * ||y - Xw||^2_2 + alpha * l1_ratio * ||w||_1 + 0.5 * alpha * (1 - l1_ratio) * ||w||^2_2
其中,||w||_1表示w的L1范数,||w||^2_2表示w的L2范数。对于多输出任务,优化函数稍有不同,如下所示:
(1 / (2 * n_samples)) * ||Y - XW||_Fro^2 + alpha * l1_ratio * ||W||_21 + 0.5 * alpha * (1 - l1_ratio) * ||W||_Fro^2
这里,||W||_21表示W的每一行的范数之和的平方根的总和,即行范数的和。
弹性网络回归模型的参数配置如下:
弹性网络回归模型的返回值包括:
以下是使用弹性网络回归模型的一个简单示例:
from sklearn.linear_model import enet_path
from sklearn.datasets import make_regression
X, y, true_coef = make_regression(n_samples=100, n_features=5, n_informative=2, coef=True, random_state=0)
alphas, estimated_coef, _ = enet_path(X, y, n_alphas=3)
print(alphas.shape) # 输出: (3,)
print(estimated_coef)
弹性网络回归模型与其他相关模型的比较: