均方误差(Mean Squared Error, MSE)是回归分析中常用的一种损失函数,用于衡量模型预测值与实际值之间的差异。它通过计算预测值与实际值差的平方的平均值来衡量误差的大小。在机器学习领域,MSE是一个非常重要的指标,常用于评估模型的预测性能。
在Python的sklearn.metrics
模块中,提供了一个计算均方误差的函数mean_squared_error
。该函数的参数包括真实值y_true
、预测值y_pred
以及可选的样本权重sample_weight
。此外,还可以通过multioutput
参数来指定多输出情况下的错误聚合方式。
在计算均方误差时,可以选择是否计算平方根,即计算均方根误差(Root Mean Squared Error, RMSE)。从版本1.4开始,squared
参数被标记为弃用,并将在1.6版本中移除。因此,如果需要计算RMSE,建议使用root_mean_squared_error
函数。
以下是mean_squared_error
函数的主要参数说明:
y_true
:真实值,可以是一维数组或二维数组,形状为(n_samples,)
或(n_samples, n_outputs)
。y_pred
:预测值,可以是一维数组或二维数组,形状与y_true
相同。sample_weight
:样本权重,可选参数,默认为None
。如果提供,可以对不同样本的误差进行加权。multioutput
:多输出情况下的错误聚合方式,可选值为'raw_values'
或'uniform_average'
,默认为'uniform_average'
。squared
:是否计算平方误差,默认为True
。从1.4版本开始被标记为弃用。以下是使用mean_squared_error
函数计算均方误差的示例代码:
from sklearn.metrics import mean_squared_error
# 单输出示例
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mse = mean_squared_error(y_true, y_pred)
print(mse) # 输出: 0.375
# 多输出示例
y_true = [[0.5, 1], [-1, 1], [7, -6]]
y_pred = [[0, 2], [-1, 2], [8, -5]]
mse = mean_squared_error(y_true, y_pred)
print(mse) # 输出: 0.708...
# 使用'raw_values'聚合方式
mse_raw = mean_squared_error(y_true, y_pred, multioutput='raw_values')
print(mse_raw) # 输出: [0.41666667, 1. ]
# 使用自定义权重聚合
mse_custom = mean_squared_error(y_true, y_pred, multioutput=[0.3, 0.7])
print(mse_custom) # 输出: 0.825...
通过以上示例代码,可以看到mean_squared_error
函数在不同情况下的使用方式。在实际应用中,可以根据具体需求选择合适的参数和聚合方式,以获得更准确的误差评估结果。
均方误差回归损失是机器学习中的一个重要概念,与之相关的其他主题包括: