機器學習之模型評估(損失函數)

2021-01-14 黃宮羽


損失函數最小化機器學習的「目標函數」,它是模型評估的重要指標

損失函數一般分為回歸問題和分類問題

回歸問題最常用的是均方誤差(MSE)平均絕對誤差(MAE)

MAE梯度自始至終是一樣的,當損失接近0時,MSE梯度下降

MSE對離群點賦予更多的權值,MAE比MSE對異常值更加穩健

分類問題最常用的是交叉熵損失

熵是衡量事件包含信息量的大小,交叉熵是衡量兩個概率分布差異的大小



機器學習,是指在給定任務(T)下,對數據集(D)做一定特徵工程(F)後建立相應的模型(M),並通過模型評估(E)來評價模型好壞


機器學習的模型評估,主要包括兩部分:



損失函數是性能度量的一個部分,而損失函數又分很多種,因此單獨作為一篇介紹損失函數。


機器學習中的所有算法都依賴於最小化或最大化一個函數,我們稱之為「目標函數」。最小化的函數稱為「損失函數」,損失函數衡量的是模型預測預期結果的能力。通常情況下,損失函數分為二類:回歸問題分類問題。


1.回歸問題


回歸問題損失函數主要有:均方誤差、絕對平均誤差、Huber損失、Log-Cosh損失和分位數損失。其中最重要的的是均方誤差和絕對平均誤差。下面重點介紹。


均方誤差(MSE)也稱二次損失或L2損失,它是最常用的回歸損失函數,MSE是目標變量和預測值之間距離的平方和



平均絕對誤差(MAE)也稱L1損失,是目標值和預測值之間絕對差的總和的平均值:



由於MSE平方了誤差(y - y_predicted = e),若e大於1,誤差(e)的將會增加很多。

如果我們有一個離群值,e的值會大大增大,且MSE的值會遠遠大於e,這將會使MSE損失模型比MAE損失模型給離群值更多的權重。

若將RMSE作為損失的模型進行調整,損失模型將最小化異常點,而犧牲其他觀測值,這會降低其整體性能。


如果訓練數據被異常值破壞,MAE損失是有用的,也就是說我們在訓練數據中錯誤地收集了不現實的極大的負值和正值,而不是在測試環境中。


如果我們只需要對所有試圖最小化MSE的觀測結果給出一個預測,那麼這個預測應該是所有目標值的平均值。但如果我們試著最小化MAE,這個預測就是所有觀測值的中位數。

我們不難知道中位數比平均值對異常值更穩健,因此使得MAE比MSE對異常值更穩健


MAE損失函數的一個大問題是:它的梯度始終是相同的,這意味著即使損失值很小,梯度也會很大

當損失值較大時,MSE損失的梯度較高;當損失接近0時,MSE損失的梯度下降,使其在訓練結束時更加精確


如果異常值表示對業務很重要,那麼我們應該使用MSE,另一方面,如果我們認為異常值只是代表無用的數據,那麼我們應該選擇MAE作為損失函數


Huber損失,也稱平滑平均絕對誤差:



它對數據中的異常值不那麼敏感,它在0處也是可微的。當誤差很小的時候就變成了二次誤差,誤差有多小才能變成二次函數取決於超參數 𝛿 (delta),這個超參數是可調的。

超參數 𝛿的選擇是很關鍵的,因為它決定了你願意考慮哪些異常值,大於 𝛿 的殘差用L1最小化,因為L1對較大的異常值不太敏感,而小於 𝛿 的殘差用L2最小化。


Huber損失結合了MSE和MAE的優點:

使用MAE訓練的一個大問題是它的梯度是一個比較大的常數,這可能導致在使用梯度下降訓練結束時,丟失了最小值。

對於MSE,梯度隨著損失函數接近其最小值而減小,從而更容易找到最小值。Huber損失在這種情況下是很有幫助的,因為它在最小值附近減小了梯度,而且比MSE更健壯。


Log-Cosh損失比L2更平滑,是預測誤差的雙曲線餘弦的對數:




優點:當 x 較小時,log(cosh(x))近似等於(x**2)/2;x 較大時,近似等於 abs(x) - log(2)。這意味這「logcosh」的工作原理與MSE非常相似,但不會受到偶爾出現異常值的影響。它具有Huber損失的所有優點,且在任何情況下都是可微的。

缺點:logcosh損失並不完美,當預測值與真實值偏差較大時,梯度和二階微分是一個常數



分位數損失可以用在了解預測的範圍(而不是僅了解點估計):



在現實世界的大多數預測問題中,我們常常對預測中的不確定性感興趣。因此預測範圍可以極大地改進許多業務問題的決策過程。


2.分類問題


分類問題損失函數主要有交叉熵損失、0-1損失、合頁損失、指數損失和Modified Huber 損失。其中最重要的是交叉熵損失。本文對它做一個重點介紹。


交叉熵損失也稱負對數似然,它是二分類問題中最常用的損失函數,比如邏輯回歸。



要理解交叉熵,先要理解熵。熵是資訊理論中最基本、最核心的一個概念,它衡量一個概率分布的隨機程度,或者說包含的信息量的大小。


我們知道,如果一個事件發生的概率越大,它所包含的信息量越少,反之則越多。比如事件「太陽從東邊升起」,這幾乎是100%確定的事情,有用的信息量很少。因此,事件包含的信息量與事件發生的概率成反比。

接著進一步思考,如果是獨立的兩個事件,那麼其信息量應該是求和,而它們同時發生的可能,應該是概率的乘積。所以,我們要找到一個指標,能夠衡量概率和信息的之間的這種直觀關係,天才的數學家們想到了這樣一個指標:



p(x)是事件發生的概率,h(x)表示事件包含的信息量。可以看到,指標h(x)滿足上述兩個要求:信息量與概率成反比;兩個獨立事件發生的信息量是各自求和。


有了以上定義,熵的概念自然而然就出來了,上面是考察了一個確定事件下的信息量,那麼如果這個事件是一個隨機變量呢(記得嗎,學習概率論的時候也是從事件到隨機事件的過度,這個就是天才數學家們的思維,你學到了嗎),就用數學期望衡量其信息量的大小。這個數學期望就是我們要的熵:



這裡,隨機變量越均勻(隨機),熵越大,反之越小。


有了熵的概念,我們就可以引出交叉熵了。交叉熵是定義在兩個概率分布而不是一個概率分布之上,它衡量了兩個概率分布的差異其值越大,兩個概率分布相差越大;其值越小,則兩個概率分布的差異越小。



可以證明,當兩個分布相等時,交叉熵有極小值:



進一步證明當p=q是,交叉熵是極小值,交叉熵hessian矩陣為:



該矩陣是正定的,故函數有最小值。


有了交叉熵概念,我們就知道交叉熵損失的意義的,對於二分類問題,往往求解是概率分布,當然希望,預測的概率分布與真實的概率分布接近。因此,最小化損失其各自(0類和1類,或好人和壞人)交叉熵。



0-1損失是最簡單也是最容易直觀理解的一種損失函數



0-1 Loss 的特點就是非常直觀容易理解。但是它存在兩個缺點:

0-1 Loss 對每個錯分類點都施以相同的懲罰(損失為 1),這樣對犯錯比較大的點(ys 遠小於 0)無法進行較大的懲罰,所有犯錯點都同等看待,這不符合常理,不太合適。

0-1 Loss 不連續、非凸、不可導,難以使用梯度優化算法。


合頁損失,又稱Hinge Loss



它的形狀就像一本要合上的書,故稱為合頁損失。顯然,只有當 ys < 1 時,Loss 才大於零;對於 ys > 1 的情況,Loss 始終為零。一般多用於支持向量機(SVM)中,體現了 SVM 距離最大化的思想。


指數損失,又稱Exponential Loss。



它與交叉熵 Loss 類似,但它是指數下降的,因此梯度較其它 Loss 來說,更大一些。一般多用於AdaBoost 中


Modified Huber損失



結合了 Hinge Loss 和 交叉熵 Loss 的優點。一方面能在 ys > 1 時產生稀疏解提高訓練效率;另一方面對於 ys < −1 樣本的懲罰以線性增加,這意味著受異常點的幹擾較少


最後,給出sklearn下損失函數的調用方式:


from sklearn.metrics import mean_squared_error  from sklearn.metrics import mean_absolute_error from sklearn.metrics import log_loss            from sklearn.metrics import zero_one_loss   from sklearn.metrics import hinge_loss      
mean_squared_error(squared=False)



參考資料:

《機器學習(周志華著)》

https://mp.weixin.qq.com/s/de6SkZjbNrmf0Dd1k5p_Lw

https://mp.weixin.qq.com/s/AdpO4xxTi0G7YiTfjEz_ig

https://mp.weixin.qq.com/s/O1cc2W8M3thJoKN6-uRmEQ

相關焦點

  • 機器學習經典損失函數比較
    機器學習經典損失函數比較 胡薇 發表於 2018-06-13 17:53:53 所有的機器學習算法都或多或少的依賴於對目標函數最大化或者最小化的過程。
  • 入門| 機器學習中常用的損失函數你知多少?
    選自towards data science作者:Ravindra Parmar機器之心編譯參與:李詩萌、王淑婷本文作者將常用的損失函數分為了兩大類:分類和回歸。然後又分別對這兩類進行了細分和講解,其中回歸中包含了一種不太常見的損失函數:平均偏差誤差,可以用來確定模型中存在正偏差還是負偏差。
  • 機器學習中常用的5種回歸損失函數
    那你了解Huber損失、Log-Cosh損失、以及常用於計算預測區間的分位數損失麼?這些可都是機器學習大牛最常用的回歸損失函數哦!機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」。其中,我們一般把最小化的一類函數,稱為「損失函數」。它能根據預測結果,衡量出模型預測能力的好壞。
  • 機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • Python機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。損失函數是我們喜歡使用的機器學習算法的核心。但大多數初學者和愛好者不清楚如何以及在何處使用它們。
  • 機器學習模型評估和超參數調優實踐
    在這篇文章中,我們將詳細探討如何評估機器學習模型結果,以及優化超參數的最佳實踐。模型評估就像學生為考試複習一樣,機器學習模型在準備完成預期任務之前必須經過一個學習和訓練的過程。這種訓練將使它能夠從實際數據中歸納和派生模式,但是我們如何評估我們的模型是否提供了數據的良好表示呢?我們如何驗證模型,並預測它將如何處理以前沒有見過的數據呢?
  • 機器學習初學者都應該知道的5類回歸損失函數
    最小化的函數稱為「損失函數」,損失函數衡量的是模型預測預期結果的能力,最常用的最小化損失函數的方法是「梯度下降法」,把損失函數想像成起伏的山脈,梯度下降法就像從山上滑下來到達最低點。沒有一個損失函數適用於所有類型的數據,它取決於許多因素,包括異常值的存在,機器學習算法的選擇,梯度下降法的時間效率和預測的置信度等。
  • 機器學習模型評估指標Python代碼示例
    我們什麼時候評估我們的機器學習模型呢?答案不是只有一次。在您選擇了一個準確度最好的機器學習模型後,您將跳轉到超參數調優部分,以提高精度和通用性。這裡是您將使用這些度量的第二點。在本文中,我試圖製作機器學習模型評估指標的總結。交叉驗證用於模型比較我們拆分數據的原因和方式的起點是泛化。
  • 機器學習大牛最常用的5個回歸損失函數,你知道幾個?
    大數據文摘出品編譯:Apricock、睡不著的iris、JonyKai、錢天培「損失函數」是機器學習優化中至關重要的一部分。L1、L2損失函數相信大多數人都早已不陌生。那你了解Huber損失、Log-Cosh損失、以及常用於計算預測區間的分位數損失麼?這些可都是機器學習大牛最常用的回歸損失函數哦!
  • 不管你是不是年薪30W的算法工程師,都要了解這幾個模型評估指標
    在機器學習領域,對模型的評估非常的重要,只有選擇與問題相匹配的評估方法,才能更好的模型訓練和模型選擇的時候出現的問題,才能更好的對模型進行迭代優化。模型評估主要分為離線評估和在線評估。針對分類、排序、回歸、序列預測等不同類型的機器學習問題,模型評估指標的選擇也有所不同。知道每種評估指標的精確定義、有針對性的選擇合適的評估指標、根據評估指標的反饋進行模型的調整,這些都是機器學習在模型評估階段的關鍵問題,也是一名合格的算法工程師應該具備的基本功。模型評估指標反映模型效果。
  • Python機器學習7:如何保存、加載訓練好的機器學習模型
    本文將介紹如何使用scikit-learn機器學習庫保存Python機器學習模型、加載已經訓練好的模型。學會了這個,你才能夠用已有的模型做預測,而不需要每次都重新訓練模型。本文將使用兩種方法來實現模型的保存和加載:Pickle和joblib。
  • 在機器學習回歸問題中,你應該使用哪種評估指標?
    你可以用它來大致了解一個模型的性能。我們看看R軸是怎麼計算的。向前!這是一種表示R的方法。1 - (SSE/SST)SSE是誤差的平方和;實際值與預測值之差的平方和。SST為總平方和(有時用TSS表示);實際值與實際均值之差的平方之和實際值與實際均值之差的平方之和。
  • 11個重要的機器學習模型評估指標
    全文共8139字,預計學習時長16分鐘構建機器學習模型的想法應基於建設性的反饋原則。你可以構建模型,從指標得到反饋,不斷改進,直到達到理想的準確度。評估指標能體現模型的運轉情況。評估指標的一個重要作用在於能夠區分眾多模型的結果。
  • 入門機器學習之線性回歸
    大概就是,做一個房屋價值的評估系統,一個房屋的價值來自很多地方,比如說面積、房間的數量(幾室幾廳)、地段、朝向等等,這些影響房屋價值的變量被稱為特徵(feature),feature在機器學習中是一個很重要的概念,有很多的論文專門探討這個東西。在此處,為了簡單,假設我們的房屋就是一個變量影響的,就是房屋的面積。
  • 理解損失函數(代碼篇)機器學習你會遇到的「坑」
    全文共1950字,預計學習時長4分鐘在上一節,我們主要講解了替代損失(Surrogate loss)由來和性質,明白了機器學習中損失函數定義的本質,我們先對回歸任務總結一下常用的損失函數:均方誤差(MSE):
  • 人工智慧機器學習三大類之回歸模型(RM)
    人工智慧機器學習三大類之回歸模型(RM) 工程師1 發表於 2018-07-13 01:39:00 人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下回歸模型(RM)。
  • softmax 損失函數 & 參數更新詳解
    對參數求偏導推導及更新要點回歸:邏輯回歸二分類用sigmoid變換成預測單個「概率」,損失函數為交叉熵,用梯度下降求解參數wbsoftmax多分類用softmax變換成多個「概率」,損失函數和求解思路類似相比(−∞,+∞)範圍內的數值結果,概率天然具有更好的可解釋性;我們獲得了K個類別(−
  • 驚為天人,NumPy手寫全部主流機器學習模型,代碼超3萬行
    最近,來自普林斯頓的一位博士後將 NumPy 實現的所有機器學習模型全部開源,並提供了相應的論文和一些實現的測試效果。項目地址:https://github.com/ddbourgin/numpy-ml根據機器之心的粗略估計,該項目大約有 30 個主要機器學習模型,此外還有 15 個用於預處理和計算的小工具,全部.py 文件數量有 62 個之多。
  • 機器學習才不只是統計學的美化!
    然而,機器學習真的只是被美化的統計學嗎?哈佛大學數據科學碩士、機器學習從業者Joe Davison認為,遠不止如此。他從統計學和機器學習分別出發,對比了兩者的不同之處,希望讓人們正確認知機器學習和人工智慧。這篇博客在海外科技網站Medium上獲得了超過7.4k的認同。
  • 如何在Keras中創建自定義損失函數?
    Keras 中的自定義損失函數可以以我們想要的方式提高機器學習模型的性能,並且對於更有效地解決特定問題非常有用。例如,假設我們正在構建一個股票投資組合優化模型。在這種情況下,設計一個定製損失函數將有助於實現對在錯誤方向上預測價格變動的巨大懲罰。