機器學習常見的損失函數以及何時使用它們

2020-12-12 deephub

每一個機器學習工程師都應該知道機器學習中這些常見的損失函數以及何時使用它們。

在數學優化和決策理論中,損失函數或成本函數將一個或多個變量的值映射為一個實數,該實數直觀地表示與該事件相關的一些「成本」。

損失函數是機器學習算法中的一個重要部分,主要用於進行算法對特徵數據集建模效果的評估,衡量算法的性能。

損失函數是每個樣本預測值和真實值的差值,而成本函數是所有損失函數的平均值。但是一般兩者語義沒有明顯的區分。 損失函數直接反映了機器學習模型的預測結果。一般而言,損失函數越低,所建立的模型所提供的結果就越好。所以損失函數被用於評估模型的性能,通常人們想要損失函數最小化。

廣義地說,損失函數根據應用場景可以分為兩大類:分類問題和回歸問題。在分類問題中,任務是預測問題所處理的所有類的各自概率。相反,在回歸問題中,任務是預測一組給定的獨立特徵對學習算法的連續值。

假定符號如下:n/m——訓練樣本的數量;i——第i個訓練樣本;y(i)——第i個樣本的真實值;y_hat(i)——第i個樣本的預測值。

分類問題中的損失函數

二值交叉熵損失/對數損失(Binary Cross-Entropy Loss / Log Loss)這是分類問題中最為常見的損失函數。交叉熵損失隨著預測概率準確度的提高而降低,能夠被用於反映分類模型(輸出為0-1之間的概率)的性能。

當類別數量為2時,是二值分類問題:

當類別數量大於2時,是多分類問題:

交叉熵損失公式由正則似然函數導出,但進行了對數處理。

鉸鏈損失(Hinge Loss)用於分類問題的第二個最常見的損失函數是鉸鏈損失函數,也是交叉熵損失函數的替代方法,主要用於支持向量機(SVM)模型評估。

鉸鏈損失不僅對錯誤的預測做出懲罰,也對概率較低的正確預測做出懲罰。它主要用於分類標籤為-1和1的支持向量機分類器。使用過程中需要確保將惡性類標籤從0更改為-1。

回歸問題中的損失函數

均方誤差/二次損失/L2損失(Mean Square Error / Quadratic Loss / L2 Loss)均方誤差是指真實值和預測值之間的平方差的均值。是最常用的回歸問題損失函數。

相應的代價函數是這些平方誤差(MSE)的平均值。MSE損失函數通過平方化誤差來懲罰模型的誤差,這種性質使得MSE代價函數對異常值的魯棒性降低。因此,如果數據容易出現許多異常值,則不應使用它。

平均絕對誤差/L1損失 (Mean Absolute Error / L1 Loss)評價絕對誤差定義為實際值與預測值之間絕對差值的平均值。它是第二個最常用的回歸損失函數。它測量一組預測中誤差的平均大小,而不考慮它們的方向。

相應的成本函數是這些絕對誤差(MAE)的平均值。與MSE損失函數相比,MAE損失函數對異常值具有更強的魯棒性。因此,如果數據有很多異常值,可以考慮使用它。

Huber損失/平滑平均絕對誤差(Huber Loss / Smooth Mean Absolute Error)Huber損失函數是MSE和MAE的組合,當誤差較大時,取平均絕對誤差,當誤差變得很小時,取均方誤差。轉換條件由超參數(delta)控制。

delta值的選擇非常關鍵,因為它決定了我們將什麼視為異常值。因此,與基於超參數值的MSE損失函數相比,Huber損失函數對異常值不太敏感。如果數據容易出現離群值,可以考慮使用它。

對數餘弦損失(Log-Cosh Loss)對數餘弦損失函數定義為預測誤差雙曲餘弦的對數。它是回歸任務中使用的另一個函數,比MSE損失函數平滑得多。它具有Huber損失函數的所有優點,而且它在任何地方都是兩次可微的,不像Huber損失函數不具有可微性質。而一些學習算法,如XGBoost使用牛頓法來尋找最佳值,因此需要二階導數(Hessian)。

當x較小時,log(cosh(x))約等於(x**2)/2,當x較大時,約等於abs(x)-log(2)。這意味著「logcosh」的工作原理與均方誤差類似,但不會受到偶爾出現的顯著錯誤預測的強烈影響。

分位數損失( Quantile Loss)分位數是指一組中有一小部分樣本低於該值。顧名思義,分位數回歸損失函數用於預測分位數。對於一組預測,損失將是其平均值。

當我們對預測一個區間而不是僅僅對點預測感興趣時,分位數損失函數是十分有用的。

作者:Sparsh Gupta

deephub翻譯組:Oliver Lee

相關焦點

  • 機器學習中學習率的常見問題
    本文旨在解決機器學習中有關學習率的常見問題。什麼是學習率?它的用途是什麼?神經網絡計算其輸入的加權和,並通過一個激活函數得到輸出。為了獲得準確的預測,一種稱為梯度下降的學習算法會在從輸出向輸入後退的同時更新權重。
  • 常見的機器學習算法,你知道幾個?
    最近幾年,得益於數據量的上漲、運算力的提升,特別是機器學習新算法的出現,人工智慧迎來了大爆發的時代。  提到機器學習這個詞時,有些人首先想到的可能是科幻電影裡的機器人。事實上,機器學習是一門多領域交叉學科,涉及概率論、統計學、算法複雜度理論等多門學科。
  • 使用Flask部署機器學習模型
    在模型訓練過程之後,我們使用predict())函數來生成預測。>我們已經成功地構建了機器學習管道,我們將使用joblib庫中的dump函數保存這個管道對象。使用此選項,可以自動獲取大量唯一的tweets我們將為給定的文本查詢請求50條tweet以及tweet創建時間、tweet id和tweet文本,函數將返回所有tweet的數據幀:def get_related_tweets(text_query): # 存儲推文的列表 tweets_list = [] # 推特數量
  • 在python中使用SageMaker Debugger進行機器學習模型的開發調試
    在這篇博客文章中,將討論調試機器學習代碼與傳統軟體的不同之處,以及為什麼調試機器學習代碼要困難得多。然後,將展示如何使用更好的機制來捕獲調試信息、在訓練期間實時監控常見問題、發現問題後及時幹預以防止發生進一步的錯誤及浪費計算機資源。
  • 幾行代碼搞定ML模型,低代碼機器學習Python庫正式開源
    想提高機器學習實驗的效率,把更多精力放在解決業務問題而不是寫代碼上?低代碼平臺或許是個不錯的選擇。最近,機器之心發現了一個開源低代碼機器學習 Python 庫 PyCaret,它支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型。
  • Ian Goodfellow發推講2個機器學習黑魔法,教你如何推導公式
    大數據文摘作品作者:小魚、土豆《深度學習》(花書)作者Ian Goodfellow今早連發了10條推特,細數了他最喜歡的兩個機器學習「黑魔法」。他在著名的GAN論文中使用這兩個小竅門推導了公式。想實現一些函數的權重衰減或許可以用代數方法實現,但想要用代數方法解決神經網絡中大多數函數的參數優化問題就有些過於複雜。為了得到一個不太複雜的模型,常見的方法就是使用線性模型,因為線性模型能很好的解決凸優化問題。但線性模型又過於簡單,其模型效果遠不及神經網絡。
  • 應聘機器學習工程師?這是你需要知道的12個基礎面試問題
    使用批歸一化時,我們無需再使用過多的 dropout;這是很有助益的,因為我們無需擔心再執行 dropout 時丟失太多信息。但是,仍然建議組合使用這兩種技術。問題2:闡述偏置和方差的概念以及它們之間的權衡關係偏置(bias)是什麼?這很好理解,偏置是當前模型的平均預測結果與我們需要預測的實際結果之間的差異。
  • 分布式機器學習的參數伺服器
    由於參數需要在多個節點之間共享,然後使用這些節點執行和完善它們的計算來更新它們,所以當涉及到共享時,這些大量數據可能成為瓶頸。共享在帶寬、順序機器學習(ML)算法的同步、機器的容錯性方面代價高昂,故障率高達10%。
  • Cruise如何使用機器學習來預測不可預測的
    像大多數視音頻公司一樣,Cruise使用機器學習為自動駕駛原型提供知識,以了解未來的道路並預測其他駕駛者,騎自行車的人和行人在道路發生之前將要做什麼,但Cruise的系統旨在做到的是所謂的「長尾事件」。儘管許多自動駕駛汽車可以預測常見的動作(例如變道或交通突然停止),但不常見的動作(例如掉頭或行人突然駛入車輛前方)(這些稱為「長尾事件」)更難以準確預測。
  • 詳解if函數的使用方法以及使用技巧
    這一章,我們來學習下IF函數的使用方法, IF函數也是一個我們工作中經常用到的函數,我個人認為if函數是唯一一個能與vlookup函數並駕齊驅的函數,在日常的工作中它解決大部分我們工作中遇到的邏輯判斷問題,而且if函數還可以嵌套使用,進行多次邏輯判斷,十分的強大,下面就讓我們來學習下它是如何使用的
  • 重中之重:數據科學與機器學習背後的數學理論
    重要的是,在使用這些包之前,讀者必須要對每一個包的數學基礎有所了解,不僅限將這些包作為黑盒子工具來使用。案例研究:構建多元回歸模型假設現在要建立一個多元回歸模型。在此之前,我們需要問自己幾個問題:· 數據集有多大?
  • 95後哈佛小哥撰寫從零開始的機器學習入門必備,書籍資源已開放
    書籍地址:https://dafriedman97.github.io/mlbook/content/introduction.html這本書涵蓋了機器學習領域最常見的方法,就像是一位機器學習工程師的工具箱,適用於入門級學習者。
  • excel函數COUNT的使用以及和函數COUNTA的區別
    excel中COUNT函數的功能就是統計出所選擇的區域範圍內單元格的值是數字的個數,但是對文字,錯誤值等其他類型的值的單元格不做統計。 COUNT函數中的參數所表示的含義
  • 蜂鳥數據Trochil:機器學習的原理-構建更好的策略4
    他們搜索可以通過某些用戶定義的準則獲利的模式,並使用它們來構建特定的模式檢測功能。看起來可能像這樣(來自Zorro的模式分析器):當信號與模式之一匹配時,此C函數將返回1,否則返回0。從冗長的代碼中可以看出,這不是檢測模式的最快方法。Zorro在不需要導出檢測功能時使用的一種更好的方法是按信號的大小對信號進行排序並檢查排序順序。
  • MLAPP機器學習之監督學習-分類
    如果類標籤不是互斥的(例如,某人可能被歸類為高大強壯),我們稱之為多標籤分類,當我們使用術語分類時,我們將意味著具有單個輸出的多類分類,除非我們另外聲明。形式化問題的一種求解方法是函數逼近。假設y = f(x)對於某個未知函數f,學習的目的是在給定一個標記訓練集的情況下估計函數f,然後使用y= f(x)進行預測。(用帽子的符號來表示一個估計值。)我們的主要目標是對新的輸入進行預測,這意味著我們以前沒有見過的輸入(這稱為泛化)。
  • 驚為天人,NumPy手寫全部主流機器學習模型,代碼超3萬行
    它為 Python 提供高效率的多維數組計算,並提供了一系列高等數學函數,我們可以快速搭建模型的整個計算流程。毫不負責任地說,NumPy 就是現代深度學習框架的「爸爸」。儘管目前使用 NumPy寫模型已經不是主流,但這種方式依然不失為是理解底層架構和深度學習原理的好方法。
  • 在Python中使用super函數,以及多重繼承和組合
    [ 使用 super 函數]super 函數能夠自動找到基類的方法,而且還傳入了 self參數:代碼進行如下修改class Shark(shark = Shark()>>> shark.move()我的位置是: 6 1>>> shark.move()我的位置是: 5 1super 函數的
  • 機器學習模型的超參數優化
    引言模型優化是機器學習算法實現中最困難的挑戰之一。機器學習和深度學習理論的所有分支都致力於模型的優化。機器學習中的超參數優化旨在尋找使得機器學習算法在驗證數據集上表現性能最佳的超參數。超參數與一般模型參數不同,超參數是在訓練前提前設置的。
  • 如何使用 Julia 語言實現「同態加密+機器學習」?
    本文介紹了使用 Julia 語言進行基於同態加密數據機器學習的全過程,對於入門者具有極大的參考價值。注意:本文討論了最前沿的密碼學技術,旨在提供一種利用「Julia Computing」進行研究的視角。請不要將文中的任何示例用於生產應用程式。在使用密碼學之前一定要諮詢專業的密碼學專家。
  • KlipC使用Python模型和機器學習來計算貨幣(EUR / USD)未來走勢
    今天在本文中,KlipC的風險總監和機器學習專家Philip Nucci將教我們的用戶如何使用名為支持向量回歸(SVR)的機器學習算法創建直觀的貨幣預測Python程序。該程序將讀取EUR / USD的歷史數據和波動性,並根據當天價格預測開盤價。我們選擇EUR / USD是因為它是最廣為人知的貨幣對,並且在貨幣市場中的流動性最強。