前一天我們介紹了Python在建立機器學習模型與超參數的技巧,今天來介紹損失函數。
前面已經介紹完模型的模型的優化器與超參數,再來我們要看說模型訓練完之後成效到底是如何,這時候就要用到損失函數。
講師在課堂當中提到許多損失函數的方法,不過都是針對使用的醫療資料集來進行說明,觀念的部分穿插在講解當中不好理解,所以稍微查了一下課堂當中提到的這些損失函函數。
我們先來認識一下評估模型結果使用的損失函數有哪些:
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
RMSE比MSE多開一個根號,用途是甚麼?只不過是用於對資料更好的描述,比如說要做房價預測,每坪是幾萬元,我們預測結果也是萬元,那差值的平方單位應該是千萬級別的,這時候就不太好描述自己做的模型效果,所以說才會有RMSE方便我們使用。
在前面介紹機器學習的迴歸與分類問題時也有提到,不同的問題需要用不同的計算損失函數方法來解決
今天先介紹到這,明天我們來介紹隨機森林與梯度提升機。