對於迴歸預測結果,通常會有平均絕對誤差、平均絕對百分比誤差、均方誤差等多個指標進行評價。這裡,我們先介紹最常用的3個:

平均絕對誤差(MAE)
就是絕對誤差的平均值,它的計算公式如下:
M A E ( y , y ^ ) = 1 n ( i = 1 n y y ^ ) MAE(y,\hat{y}) = \frac{1}{n}(\sum_{i = 1}^{n}\left | y - \hat{y} \right |)
其中, y i y_{i} 表示真實值, y ^ i \hat y_{i} 表示預測值, n n 則表示值的個數。MAE 的值越小,說明預測模型擁有更好的精確度。我們可以嘗試使用 Python 實現 MAE 計算函式:

import numpy as np

def mae_value(y_true, y_pred):
    """
    引數:
    y_true -- 測試集目標真實值
    y_pred -- 測試集目標預測值
    
    返回:
    mae -- MAE 評價指標
    """
    
    n = len(y_true)
    mae = sum(np.abs(y_true - y_pred))/n
    return mae

均方誤差(MSE)
它表示誤差的平方的期望值,它的計算公式如下:
M S E ( y , y ^ ) = 1 n i = 1 n ( y i y ^ ) 2 {MSE}(y, \hat{y} ) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y})^{2}

其中, y i y_{i} 表示真實值, y ^ i \hat y_{i} 表示預測值, n n 則表示值的個數。MSE 的值越小,說明預測模型擁有更好的精確度。同樣,我們可以嘗試使用 Python 實現 MSE 計算函式:

import numpy as np

def mse_value(y_true, y_pred):
    """
    引數:
    y_true -- 測試集目標真實值
    y_pred -- 測試集目標預測值
    
    返回:
    mse -- MSE 評價指標
    """
    
    n = len(y_true)
    mse = sum(np.square(y_true - y_pred))/n
    return mse

平均絕對百分比誤差 M A P E MAPE

M A P E MAPE M A D MAD 的變形,它是一個百分比值,因此比其他統計量更容易理解。例如,如果 M A P E MAPE 5 5 ,則表示預測結果較真實結果平均偏離 5 5% M A P E MAPE 的計算公式如下:
M A P E ( y , y ^ ) = i = 1 n y i y ^ i y i n × 100 {MAPE}(y, \hat{y} ) = \frac{\sum_{i=1}^{n}{|\frac{y_{i}-\hat y_{i}}{y_{i}}|}}{n} \times 100

其中, y i y_{i} 表示真實值, y ^ i \hat y_{i} 表示預測值, n n 則表示值的個數。 M A P E MAPE 的值越小,說明預測模型擁有更好的精確度。使用 Python 實現 MSE 計算函式:

import numpy as np

def mape(y_true, y_pred):
    """
    引數:
    y_true -- 測試集目標真實值
    y_pred -- 測試集目標預測值
    
    返回:
    mape -- MAPE 評價指標
    """
    
    n = len(y_true)
    mape = sum(np.abs((y_true - y_pred)/y_true))/n*100
    return mape

參考