L1范数和L2范数、MSE和MAE是常用的度量指标。它们在衡量向量或模型之间的差异方面有所不同。
- L1范数和L2范数:
- L1范数(也称为曼哈顿范数)是指向量中各个元素绝对值之和。公式为:||x||1 = Σ|xi|。
- L2范数(也称为欧几里得范数)是指向量中各个元素的平方和的平方根。公式为:||x||2 = √(Σ(xi^2))。
L1范数与L2范数的不同之处在于:
- L1范数倾向于产生稀疏解,即将某些维度的权重置为0,对于特征选择有较好的效果。
- L2范数倾向于产生平滑解,即各个维度的权重分布较为均匀,对于降低模型复杂度有较好的效果。
L1范数和L2范数可以互相转换使用的原因是,当参数的维度较高时,使用L1范数可以得到稀疏解,有助于特征选择和模型解释;而使用L2范数可以得到平滑解,有助于降低模型复杂度和防止过拟合。
下面是使用L1范数和L2范数进行线性回归的示例代码:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error
# 生成示例数据
X = np.random.rand(100, 2)
y = 2*X[:, 0] + 3*X[:, 1] + np.random.randn(100)
# 使用L1范数进行线性回归
reg_l1 = LinearRegression(penalty='l1')
reg_l1.fit(X, y)
y_pred_l1 = reg_l1.predict(X)
mse_l1 = mean_squared_error(y, y_pred_l1)
mae_l1 = mean_absolute_error(y, y_pred_l1)
# 使用L2范数进行线性回归
reg_l2 = LinearRegression(penalty='l2')
reg_l2.fit(X, y)
y_pred_l2 = reg_l2.predict(X)
mse_l2 = mean_squared_error(y, y_pred_l2)
mae_l2 = mean_absolute_error(y, y_pred_l2)
print("L1范数:")
print("MSE:", mse_l1)
print("MAE:", mae_l1)
print("L2范数:")
print("MSE:", mse_l2)
print("MAE:", mae_l2)
通过比较MSE和MAE的结果,可以看出使用L1范数和L2范数在线性回归问题中得到的结果略有差异,但都可以有效地评估模型的性能。