1.MSE - 均方誤差
MSE是用 真實值 - 預測值 然后平方后求和平均,常用線性回歸的損失函數。
在線性回歸時我們希望損失函數最小,從而判斷測試集的損失值有多少。
# 數學公式計算
MSE = np.sum((y_pred-y_test)**2)/len(y_test)
# scikit-learn對應的指標
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
reg = LinearRegression().fit(X_train,y_train)
y_pred = reg.predict(X_test)
# 調用mean_squared_error
MSE = mean_squared_error(y_test,y_pred)
2.RMSE - 均方根誤差
RMSE在MSE基礎上開根號,更好的描述真實值和預測值的數據
常用於衡量模型預測結果的標准
# 接着上面的例子MSE開根號計算得到RMSE
RMSE = MSE ** 0.5
3.MAE - 平均絕對誤差
平均誤差的絕對值
常用來反映預測值誤差的實際情況(風險度)
# 數學公式計算
MAE = np.sum(np.absolute(y_pred-y_test))/len(y_test)
# scikit-learn對應的指標
from sklearn.metrics import mean_absolute_error
# 調用mean_absolute_error
MAE = mean_absolute_error(y_test, y_pred)
4.R² - 判別系數
其中f
是擬合(或建模)值,y
是真實值,SSR
(Sum of squares of the regression)是殘差平方和,由預測數據與標簽均值之間差值的平方和構,SST
(Total sum of squares)是實際值和均值之間的差值的平方和
判定系數R²測量了回歸直線對預測數據擬合的程度,即:
1 - 模型沒有捕獲到的信息量占真實標簽重所帶的信息量的比例,所以,兩者越接近1越好
調整R²考慮添加更多預測變量(特征)來改善模型
# 3種調用方式
# 方式1:從sklearn.metrics導入r2_score
from sklearn.metrics import r2_score
# 調用r2_score
r2 = r2_score(y_test, y_pred)
# 方式2:使用線性回歸LinearRegression的score方法
reg = LinearRegression().fit(X_train,y_train)
# 調用score
r2 = reg.score(X_test,y_test)
# 方式3:從sklearn.metrics導入r2_score
from sklearn.metrics import explained_variance_score
r2 = explained_variance_score(y_test, y_pred)
5.在哪里使用哪個指標來確定機器學習模型的性能?
-
MAE:通常用於在連續變量數據上測量性能。它對異常值不是很敏感,因為它不會懲罰錯誤。
-
MSE:最常用的指標之一,當數據集包含大量噪聲時,它最沒用。但當數據集包含異常值(太高或太低)時,它最有用。
-
RMSE:在RMSE中,誤差在平均之前先平方,這意味着RMSE為更大的錯誤分配更高的權重。這表明當存在大錯誤並且它們會極大地影響模型的性能時,RMSE更有用。RMSE比MSE更廣泛用於評估回歸模型於其他隨機模型的性能,因為它的因變量(Y軸)具有相同的單位。
-
R²: R2評估性能最容易讓人一目了然地了解你的模型的性能。
總體來說,MAE、MSE 和 RMSE 的值越低,意味着回歸模型的准確度越高。然而,R 平方值越高被認可越高。
相關參考:
https://www.jianshu.com/p/9ee85fdad150