D²回归评分函数是一种评估回归模型性能的度量方法。它通过计算模型预测值与实际值之间的差异来评估模型的准确性。D²评分的最佳可能得分是1.0,这意味着模型的预测与实际值完全一致。然而,D²评分也可能是负值,这表明模型的预测效果非常差,甚至不如一个简单的常数预测。
D²评分函数的核心思想是使用所谓的“pinball loss”来衡量模型预测值与实际值之间的差异。Pinball loss是一种损失函数,它根据预测值与实际值之间的差异来计算损失,其中alpha参数决定了损失函数的斜率。alpha参数的默认值是0.5,这相当于使用绝对误差来计算D²评分。
在实际应用中,D²评分函数可以处理单输出和多输出的回归问题。对于多输出问题,可以通过设置multioutput参数来定义如何聚合多个输出值的评分。例如,可以选择“raw_values”来返回每个输出的完整错误集,或者选择“uniform_average”来计算所有输出的平均评分。
D²评分函数的计算公式如下:
D^2 = 1 - \frac{\sum_{i=1}^{n} (y_{\text{true},i} - y_{\text{pred},i})^2}{\sum_{i=1}^{n} (y_{\text{true},i} - \alpha \cdot \text{quantile}(y_{\text{true}}))^2}
其中,y_true是实际值,y_pred是模型预测值,n是样本数量,quantile是实际值的alpha分位数。
D²评分函数在机器学习领域有着广泛的应用,特别是在评估回归模型的性能时。它可以帮助了解模型的预测能力,并指导对模型进行优化和改进。
需要注意的是,D²评分函数并不是一个完美的度量方法。它可能对异常值非常敏感,而且在样本数量较少时,评分的稳定性可能会受到影响。因此,在实际应用中,可能需要结合其他度量方法来全面评估模型的性能。
from sklearn.metrics import d2_pinball_score
# 真实值和预测值
y_true = [1, 2, 3]
y_pred = [1, 3, 3]
# 计算D²评分
score = d2_pinball_score(y_true, y_pred)
print(score) # 输出: 0.5
# 设置不同的alpha值
score_alpha_09 = d2_pinball_score(y_true, y_pred, alpha=0.9)
print(score_alpha_09) # 输出: 0.772...
score_alpha_01 = d2_pinball_score(y_true, y_pred, alpha=0.1)
print(score_alpha_01) # 输出: -1.045...
# 当预测值与真实值完全相同时
score_perfect = d2_pinball_score(y_true, y_true, alpha=0.1)
print(score_perfect) # 输出: 1.0