【Sklearn馴化-回歸指標】一文搞懂機器學習中回歸算法評估指標:mae、rmse等
?
本次修煉方法請往下查看
🌈 歡迎蒞臨我的個人主頁 👈這里是我工作、學習、實踐 IT領域、真誠分享 踩坑集合,智慧小天地!
🎇 免費獲取相關內容文檔關注:微信公眾號,發送 pandas 即可獲取
🎇 相關內容視頻講解 B站
🎓 博主簡介:AI算法馴化師,混跡多個大廠搜索、推薦、廣告、數據分析、數據挖掘崗位 個人申請專利40+,熟練掌握機器、深度學習等各類應用算法原理和項目實戰經驗。
🔧 技術專長: 在機器學習、搜索、廣告、推薦、CV、NLP、多模態、數據分析等算法相關領域有豐富的項目實戰經驗。已累計為求職、科研、學習等需求提供近千次有償|無償定制化服務,助力多位小伙伴在學習、求職、工作上少走彎路、提高效率,近一年好評率100% 。
📝 博客風采: 積極分享關于機器學習、深度學習、數據分析、NLP、PyTorch、Python、Linux、工作、項目總結相關的實用內容。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
🌵文章目錄🌵
- 🎯 1. 基本介紹
- 💡 2. 指標介紹
- 2.1 MAE:平均絕對誤差
- 2.2 MSE:均方誤差
- 2.2 RMSE:均方誤差
- 2.3 MAPE:平均絕對百分比誤差
- 2.4 SMAPE:平均絕對百分比誤差
- 2.5 WMAPE:加權的百分比誤差
- 2.6 決定系數(R-squared, R2)
- 🔍 3. 代碼實踐
- 3.1 導入庫和準備數據
- 3.2 訓練回歸模型
- 3.2 指標計算
- 🔍 4. 注意事項
- 🔍 5. 總結
下滑查看解決方法
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
??
🎯 1. 基本介紹
??回歸分析是統計學中用于估計變量之間關系的一種方法。在機器學習中,回歸模型用于預測連續的輸出值。scikit-learn(簡稱sklearn)提供了多種回歸指標來評估模型的預測性能。
💡 2. 指標介紹
2.1 MAE:平均絕對誤差
??mae是回歸模型中常用的評估指標之一。它用于衡量模型預測結果與真實值之間的平均絕對差異程度,即平均預測誤差的絕對值。計算MAE的公式如下:
L = 1 m ∑ i = 1 m ∣ y i ? y ^ i ∣ L=\frac{1}{m}\sum_{i=1}^{m}|y_i - \hat{y}_i| L=m1?i=1∑m?∣yi??y^?i?∣
??MAE的值越小,表示模型的預測能力越好。它具有對異常值不敏感的特點,適用于對預測結果的平均誤差情況進行評估。在sklearn中,可以使用mean_absolute_error函數來計算MAE。
2.2 MSE:均方誤差
??它用于衡量模型預測結果與真實值之間的均方差,即平均預測誤差的平方
L = 1 m ∑ i = 1 m ( y i ? y ^ ) 2 L=\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y})^2 L=m1?i=1∑m?(yi??y^?)2
?? 該方法會放大預測值偏大的,對異常值比較敏感,MSE的值越小,表示模型的預測能力越好。它在某些情況下比均絕對誤差(MAE)更敏感,因為它對預測值與真實值之間的較大誤差進行了平方處理。但是MSE的值的量綱是原始數據平方,可能不易于直觀理解。
2.2 RMSE:均方誤差
??均方根誤差是MSE的平方根,它與原始數據具有相同的單位。
L = 1 m ∑ i = 1 m ( y i ? y ^ ) 2 L=\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y})^2} L=m1?i=1∑m?(yi??y^?)2?
??因為使用的是平均誤差,而平均誤差對異常點較敏感,如果回歸器對某個點的回歸值很不合理,那么它的誤差則比較大,從而會對RMSE的值有較大影響,即平均值是非魯棒的。
2.3 MAPE:平均絕對百分比誤差
??
L = 1 n ∑ i = 1 m ∣ y i ? y ^ i y i ∣ L=\frac{1}{n}\sum_{i=1}^{m}|\frac{y_i-\hat{y}_i}{y_i}| L=n1?i=1∑m?∣yi?yi??y^?i??∣
評價的是相對于真實值的誤差比例,但是有一個問題就是,如果真實值為0的話,該評價指標無效
如果預測值小于真實值(低估),如果大于(高估)
低估: 此時, 即上界為100;
高估: 此時, 即上界為無窮大.
由于高估會帶來較大懲罰, 為了最小化MAPE值, 算法會傾向低估, 從而導致預測的銷量偏低.
2.4 SMAPE:平均絕對百分比誤差
??該方法可以處理掉真實值為0的情況,但是如果預測值也為0的話就會有問題
L = 1 n ∑ i = 1 m ∣ y i ? y ^ i ∣ ∣ y i ∣ + ∣ y i ^ ∣ L=\frac{1}{n}\sum_{i=1}^{m}\frac{|y_i-\hat{y}_i|}{|y_i|+|\hat{y_i}|} L=n1?i=1∑m?∣yi?∣+∣yi?^?∣∣yi??y^?i?∣?
在實際的銷量預測中, 由于銷量的上界通常是有限的(通過經驗可以預估), 因而即使出現"高估"的情形, 預測銷量一般不會超過實際銷量的常數倍(例如不超過10倍). 從這個角度來看, 高估時誤差的上界一般低于低估時對應的上界. 換句話說, 低估帶來的懲罰比高估大. 因此如果使用SMAPE作為誤差指標, 其預測銷量一般會高于實際銷量.
2.5 WMAPE:加權的百分比誤差
??該方法的好處就是可以處理mape這個問題:例如一件賣了10件的商品預測值在5-15之間和賣了5000件的商品預測在4955-5005的貢獻的mape是一樣的,但顯然兩個預測的準確度差異巨大。該方法給銷量的商品更大的權重。
L = ∑ n ∣ y i ? y ^ i ∣ ∑ n y i L=\frac{\sum_{n}|y_i - \hat{y}_i|}{\sum_{n}y_i} L=∑n?yi?∑n?∣yi??y^?i?∣?
2.6 決定系數(R-squared, R2)
??決定系數衡量模型捕捉數據可變性的程度。具體的公式如下所示:
r 2 = ∑ i = 1 n ( y i ? y i ′ ) 2 ∑ i = 1 n ( y i ? y 平均 ) 2 r^2=\frac{\sum_{i=1}^{n}(y_i-y'_i)^2}{\sum_{i=1}^{n}(y_i-y平均)^2} r2=∑i=1n?(yi??y平均)2∑i=1n?(yi??yi′?)2?
🔍 3. 代碼實踐
3.1 導入庫和準備數據
?? 下面我們對相關的公式進行構造數據,并通過代碼對其進行實踐操作,具體的代碼如下所示:
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression# 生成模擬回歸數據
X, y = make_regression(n_samples=100, n_features=1, noise=0.4, random_state=42)# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3.2 訓練回歸模型
?? 為了能夠更加清晰的看出來各個指標的效果,我們訓練一個回歸模型然后來看各個指標之間的差異性,具體的代碼如下所示:
# 創建線性回歸模型并訓練
model = LinearRegression()
model.fit(X_train, y_train)# 在測試集上進行預測
y_pred = model.predict(X_test)
3.2 指標計算
?? 下面我們根據預測和真實值之間的差異性來計算回歸模型的指標,具體的代碼如下所示:
# 計算MSE和RMSE
mse = mean_squared_error(y_test, y_pred)
rmse = mse ** 0.5print(f"均方誤差: {mse:.2f}")
print(f"均方根誤差: {rmse:.2f}")# 計算R-squared
r2 = r2_score(y_test, y_pred)
print(f"決定系數: {r2:.2f}")
??
🔍 4. 注意事項
- 回歸指標的選擇應基于模型的目標和數據的特性。
- MSE和RMSE對異常值敏感,如果數據中包含異常值,可能需要考慮使用其他指標。
- R-squared雖然直觀,但增加變量時可能會產生誤導,考慮使用調整R-squared。
🔍 5. 總結
??回歸指標是評估回歸模型預測性能的重要工具。scikit-learn提供了多種指標,包括MSE、RMSE和R-squared,幫助我們量化模型的準確性和有效性。通過本博客的代碼示例,我們學習了這些指標的計算方法和實際應用。希望這篇博客能夠幫助你更好地理解sklearn中的回歸指標,并將其應用于實際的回歸分析中。