iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0

前一天我們介紹了Python在建立機器學習模型與超參數的技巧,今天來介紹損失函數。

前面已經介紹完模型的模型的優化器與超參數,再來我們要看說模型訓練完之後成效到底是如何,這時候就要用到損失函數。

Introducing Loss Functions

講師在課堂當中提到許多損失函數的方法,不過都是針對使用的醫療資料集來進行說明,觀念的部分穿插在講解當中不好理解,所以稍微查了一下課堂當中提到的這些損失函函數。

Introducing Loss Functions-1
Introducing Loss Functions-2

我們先來認識一下評估模型結果使用的損失函數有哪些:

  • 均方根誤差(RMSE, Root Mean Square Error)
  • 均方誤差(MSE, Mean Square Error)
  • 平均絕對誤差(MAE, Mean Absolute Error)
  • 平均絕對百分比誤差(MAPE, Mean absolute percentage error)
  • 標準差(Std, Standard Deviation)

均方根誤差RMSE

  • 觀測值與真值偏差的平方和與觀測次數比值的平方根。
  • 用來衡量觀測值同真值之間的偏差

平均絕對誤差MAE

  • 是絕對誤差的平均值,能反映預測值誤差的實際情況

平均絕對百分比誤差MAPE

  • 可以用來衡量一個模型預測結果的好壞
    公式:(絕對值(真實值-預測值)/真實值)/平均*100

MAPE是一個非常好用的評估指標,因為MAPE的P是百分比的意思,與其看損失了多少的數字,不如看百分比比較能夠清晰明瞭,但其他損失函數也有他好用的地方。
Python當中沒有特別為損失函數定義直接用的函數,所以只能自己寫,然而要注意的是真實值是放在分母當除數,如果說資料集當中有0的資料會導致無法算出結果,這點需要注意。

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

標準差Std

  • 方差的算數平方根
  • 用來衡量一組數自身的離散程度

RMSE、MSE非常像

RMSE比MSE多開一個根號,用途是甚麼?只不過是用於對資料更好的描述,比如說要做房價預測,每坪是幾萬元,我們預測結果也是萬元,那差值的平方單位應該是千萬級別的,這時候就不太好描述自己做的模型效果,所以說才會有RMSE方便我們使用。

迴歸/分類問題的損失函數

在前面介紹機器學習的迴歸與分類問題時也有提到,不同的問題需要用不同的計算損失函數方法來解決

迴歸問題

  • 使用均方誤差來最小化預測的連續值與標籤的連續值之間的誤差

分類問題

  • 使用交叉熵來最小化我們的預測類和標籤類之間的錯誤或錯誤分類

今天先介紹到這,明天我們來介紹隨機森林與梯度提升機。

參考資料與圖片來源


上一篇
[Day26] Python在建立機器學習模型與超參數的技巧
下一篇
[Day28] 認識隨機森林與梯度提升機
系列文
透視Google Machine Learning的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言