模型评估
在统计学和机器学习中具有至关重要,它帮助我们主要目标是量化模型预测新数据的能力。

在这个数据充斥的时代,没有评估的模型就如同盲人摸象,可能带来误导和误判。
模型评估
不仅是一种方法,更是一种保障,确保我们在数据海洋中航行时,能够依赖准确的模型,做出明智的决策。

本篇主要介绍
模型评估
时,如何利用
scikit-learn
帮助我们快速进行各种
误差
的分析。

1. 平均绝对误差

平均绝对误差
(Mean Absolute Error,简称
MAE
),它用于度量预测值与真实值之间的
平均误差大小

它能直观地反映出预测的准确性,MAE
越小
,说明模型的预测能力
越好

1.1. 计算公式

平均绝对误差
的计算公式如下:
\(\text{MAE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n-1} \left| y_i - \hat{y}_i \right|.\)
其中,
\(n\)
是样本数量,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值。

1.2. 使用示例

from sklearn.metrics import mean_absolute_error
import numpy as np

# 随机生成100个sample
n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_absolute_error(y_true, y_pred)

mean_absolute_error
就是
scikit-learn
中用来计算
MAE
的函数。

2. 均方误差

均方误差

Mean Squared Error
,简称
MSE
),它用于衡量模型的预测值与实际观测值之间的差异。
MSE
越小,表示模型的预测值与实际观测值之间的差异较小,即模型具有较高的预测精度。

2.1. 计算公式

\(\text{MSE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n - 1} (y_i - \hat{y}_i)^2.\)
其中,
\(n\)
是样本数量,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值。

2.2. 使用示例

from sklearn.metrics import mean_squared_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_squared_error(y_true, y_pred)

mean_squared_error
就是
scikit-learn
中用来计算
MSE
的函数。

3. 均方对数误差

均方对数误差

Mean Squared Log Error
,简称
MSLE
),与
均方误差

MSE
)相比,
MSLE
在计算误差时先对预测值和真实值取对数。
通过对数转换,
MSLE
能够
减小
较大值和较小值之间的
差异
,使得误差度量更为稳定。
MSLE
的值越小,表示预测结果与真实值的差异越小,即模型的拟合程度越好。

3.1. 计算公式

\(\text{MSLE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n - 1} (\log_e (1 + y_i) - \log_e (1 + \hat{y}_i) )^2.\)
其中,
\(n\)
是样本数量,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值。

3.2. 使用示例

from sklearn.metrics import mean_squared_log_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_squared_log_error(y_true, y_pred)

mean_squared_log_error
就是
scikit-learn
中用来计算
MSLE
的函数。

4. 平均绝对百分比误差

平均绝对百分比误差

Mean Absolute Percentage Error
,简称
MAPE
),
平均绝对误差

MAE
)相比,
MAPE
将误差转化为百分比形式,这使得它在不同尺度的数据上具有更好的可比性。
MAPE
越小,表示模型的预测结果与实际结果的差异较小,即模型的预测准确性较高。

4.1. 计算公式

\(\text{MAPE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n-1} \frac{{}\left| y_i - \hat{y}_i \right|}{\max(\epsilon, \left| y_i \right|)}\)
其中,
\(n\)
是样本数量,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值。
\(\epsilon\)
是一个任意小但严格为正的数,以避免在
\(y_i\)
为零时出现未定义的结果。

4.2. 使用示例

from sklearn.metrics import mean_absolute_percentage_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_absolute_percentage_error(y_true, y_pred)

mean_absolute_percentage_error
就是
scikit-learn
中用来计算
MAPE
的函数。

5. 绝对误差中值

绝对误差中值

Median Absolute Error
,简称
MedAE
),它用于衡量预测模型对于数据集的精度。

平均误差
相比,中值对异常值更为稳健,对于数据集中的异常值和离群点,
绝对误差中值
具有较强的抗性。
MedAE
越小的模型,通常意味着它在大多数数据点上的预测更为准确。

5.1. 计算公式

\(\text{MedAE}(y, \hat{y}) = \text{median}(\mid y_1 - \hat{y}_1 \mid, \ldots, \mid y_n - \hat{y}_n \mid).\)
其中,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值,
\(median\)
表示取中位数。

5.2. 使用示例

from sklearn.metrics import median_absolute_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

median_absolute_error(y_true, y_pred)

median_absolute_error
就是
scikit-learn
中用来计算
MedAE
的函数。

6. 最大误差

最大误差

Max Error
),它用于衡量模型预测值与真实值之间的最大差异,揭示模型在最坏情况下的表现。
如果模型在大多数情况下的预测误差都很小,但
最大误差
很大,那么这可能意味着模型对于某些特定情况的处理不够好,需要进一步优化。

6.1. 计算公式

\(\text{Max Error}(y, \hat{y}) = \max(| y_i - \hat{y}_i |)\)
其中,
\(y_i\)
是真实值,
\(\hat{y_i}\)
是预测值,
\(max\)
表示取最大值。

6.2. 使用示例

from sklearn.metrics import max_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

max_error(y_true, y_pred)

max_error
就是
scikit-learn
中用来计算
Max Error
的函数。

7. 总结

本篇主要介绍了
6种
常用的误差分析函数,包括:

  • 平均绝对误差
  • 均方误差
  • 均方对数误差
  • 平均绝对百分比误差
  • 绝对误差中值
  • 最大误差

误差的计算方式其实也不算不复杂,不过,掌握
scikit-learn
中封装好的各种误差计算函数,
还是可以帮助我们在评估回归模型时节约不少时间。

标签: none

添加新评论