數據科學大量使用代數,統計,微積分和概率的概念,也借用了很多數學術語。機器學習(ML)是數據科學中的一個令人着迷的領域,它依賴于數學。XGBoost是一種基于梯度提升決策樹的流行且越來越主導的機器學習(ML)算法,可以用于分類和回歸問題,并且因其性能和速度而聞名。XGBoost使用一種稱為“對數損失”的流行度量,就像大多數其他梯度提升算法一樣。該基于概率的度量用于測量分類模型的性能。但在我們開始使用它來評估我們的模型之前,有必要了解它背後的數學。本文涉及對數損失的數學概念。在本文中,我們将簡要介紹它如何影響ML分類算法的性能,尤其是XGBoost。
定義對數損失
對數損失(Log loss)是 logarithmic loss的簡稱,是一個用于分類的損失函數,用來量化在分類問題中預測不準确所付出的代價。對數損失通過考慮分類概率來懲罰錯誤分類。為了闡明這個概念,讓我們首先回顧一下這個術語的數學表示:
在上面的等式中,N是實例或樣本的數量。'yi'将是第i個實例的可能結果。實例可以假設有兩個結果,例如0和1.在上面的等式中,'yi'将是1,因此'1-yi'是0.'pi'表示概率假設值為'yi'的第i個實例。換句話說,對數損失累計樣本假定狀态0和1都超過實例總數的概率。等式背後的簡單條件是:對于真實輸出(yi),概率因子是-log(真實輸出的概率),而另一個輸出是-log(1-真實輸出的概率)。
讓我們嘗試在Python中以編程方式表示條件:
如果我們看一下上面的方程,預測的輸入值0和1是沒有定義的。為了解決這個問題,log loss函數将預測概率(p)調整為很小的epsilon值。這個epsilon值通常保持為(1e-15)。因此,我們可以通過應用以下Python代碼來進行此調整:
max(min(p, 1−10^−15), 10^-15)
在此操作中,可能會發生以下情況:
當p = 0時:
當p = 1時:
現在,讓我們複制上面的整個數學方程式,Python代碼如下:
我們也可以将其表示為R中的函數:
LogLossBinary = function(actual, predicted, eps = 1e-15) { predicted = pmin(pmax(predicted, eps), 1-eps) - (sum(actual * log(predicted) (1 - actual) * log(1 - predicted))) / length(actual) }
在我們讨論如何在分類算法中實現這一概念之前,讓我們先簡要介紹另一個與對數損失相關的概念。交叉熵是一個類似的度量,随着預測概率偏離實際标簽,與之相關的損失也會增加。一個完美的模型應該有一個對數損失值或交叉熵損失值為0。那麼,為什麼它們是兩個不同的項呢?
當涉及到機器學習算法時,交叉熵是對數損失的更一般形式。對數損失用于二元分類算法,交叉熵用于多元分類問題。換句話說,當有兩種可能的結果時使用對數損失,當有兩種以上可能的結果時使用交叉熵。
方程可表示為:
在這裡,“M”是給定情況下可能出現的結果或标簽的數量。與上式相似,“pij”是模型将标号j賦值給實例i的概率,讓我們通過一個例子來理解這一點:
讓我們假設一個問題,我們必須預測一個學生在考試中根據他的屬性可以得到的分數範圍。如果有三種可能的結果:高,中,低由[(1,0,0)(0,1,0)(0,0,1)]表示。現在,對于特定學生,預測概率為(0.2,0.7,0.1)。這表明預測的分數範圍很可能是“中”,因為概率最高。因此,交叉熵誤差将是:
CE_loss = -(ln(0.2)(0) ln(0.7)(1) ln(0.1)(0))
= -(0 (-0.36)(1) 0)
= 0.36
現在,我們已經了解了這個理論,我們可以更好地開始在機器學習分類模型中使用它。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!