评估回归模型

评估回归模型的优劣,主要就是看预测值和实际值之间的偏差,这点和分类问题还是比较像

解释方差得分(explained_variance_score)

这个指标主要体现预测的稳定性

如果$\hat{y}$是预估的目标真实输出,$y$ 是相应目标输出,并且$Var$指方差--标准差的平方,那么解释的方差预估如下:

$$ \texttt{explained-variance}(y, \hat{y}) = 1 - \frac{Var\{ y - \hat{y}\}}{Var\{y\}}$$

最好的得分是1.0,值越低越差.

平均绝对误差(mean_absolute_error)

这个指标是一个对绝对误差损失预期值或者l1-norm损失的风险度量.

如果$\hat{y}_i$是$i-th$样本的预测值,并且$y_i$是对应的真实值,则平均绝对误差(MAE)预估的$n_{\text{samples}}$定义如下:

$$ \text{MAE}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{samples^{-1}}} \left| y_i - \hat{y}_i \right| $$

均方误差(mean_squared_error)

该指标对应于平方(二次)误差或损失的预期值的风险度量.

如果$\hat{y}_i$是$i-th$样本的预测值,并且$y_i$是对应的真实值,则均方误差(MSE)预估的$n_{\text{samples}}$定义如下

$$ \text{MSE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum_{i=0}^{n_{samples^-1} } (y_i - \hat{y}_i)^2 $$

均方误差对数(mean_squared_log_error)

该指标对应平方对数(二次)差或损失的预估值风险度量.

如果$\hat{y}_i$是$i-th$样本的预测值,并且$y_i$是对应的真实值,则均方误差对数(MSLE)预估的$n_{\text{samples}}$定义如下:

$$\text{MSLE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum_{i=0}^{n_{samples^-1}} (\log_e (1 + y_i) - \log_e (1 + \hat{y}_i) )^2$$

其中$\log_e (x)$表示$x$的自然对数.当目标具有指数增长的趋势时,该指标最适合使用,例如人口数量,跨年度商品的平均销售额等.需注意,该指标会对低于预测的估计值进行估计.

中位绝对误差(median_absolute_error)

这个指标对离群值很敏感.通过取目标和预测之间的所有绝对差值的中值来计算损失.

如果$\hat{y}_i$是$i-th$样本的预测值,并且$y_i$是对应的真实值,则中位绝对误差(MedAE)预估的$n_{\text{samples}}$定义如下:

$$ \text{MedAE}(y, \hat{y}) = \text{median}(\mid y_1 - \hat{y}_1 \mid, \ldots, \mid y_n - \hat{y}_n \mid) $$

R² score可决系数(r2_score)

可决系数反映将来样本如何可能被模型预测的估量.最佳分数为1.0,可以为负数(因为模型可能会更糟).总是预测y的预期值,不考虑输入特征的常数模型将得到$R^2$得分为0.

如果$\hat{y}_i$是$i-th$样本的预测值,并且$y_i$是对应的真实值,则$R^2$得分预估的$n_{\text{samples}}$定义如下:

$$ R^2(y, \hat{y}) = 1 - \frac{\sum_{i=0}^{n_{samples^{-1}}} (y_i - \hat{y}_i)^2}{\sum_{i=0}^{n_{samples^{-1}}} (y_i - \bar{y})^2} $$

其中$\bar{y} = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{samples^{-1}}} y_i$

使用sklearn做模型评估

除了上面的这些指标,sklearn还提供了一些其他接口来做分类模型的评估

接口 说明
metrics.explained_variance_score(y_true, y_pred) 解释方差得分
metrics.mean_absolute_error(y_true, y_pred) 平均绝对误差
metrics.mean_squared_error(y_true, y_pred[, …]) 均方误差
metrics.mean_squared_log_error(y_true, y_pred) 均方误差对数
metrics.median_absolute_error(y_true, y_pred) 中位绝对误差
metrics.r2_score(y_true, y_pred[, …]) R² score可决系数

In [ ]: