Logistic

梯度提升分類:如何將預測保持在 [0,1]

  • March 28, 2016

問題

我正在努力理解預測是如何保持在使用 Gradient Boosting 進行二元分類時的時間間隔。

假設我們正在研究一個二元分類問題,我們的目標函數是對數損失,, 在哪裡是目標變量和是我們目前的模型。

在訓練下一個弱學習器時這樣我們的新模型是,應該保持什麼機制? 或者,也許是一個更相關的問題,是否有這樣的機制?


有關我在做什麼的更多信息

我正在嘗試使用回歸樹來實現梯度提升。我要做的是避免它是一個乘法通過一個因素, 這樣不低於零或高於一,我選擇在這個範圍內,最小化損失函數。

這帶來了以下問題:經過幾輪之後,我有一個點被完美分類,並且可用於將分類器推向梯度方向的最佳分割希望將這一點推到一個以上,我確保不會發生這種情況環境. 因此所有下一次迭代將選擇相同的拆分和相同的.

我嘗試了常見的正則化做法

  • 通過乘法降低學習率經過. 這只是延遲了問題。
  • 對特徵空間進行二次採樣,但有些點很容易分類,它們幾乎在“這是肯定的嗎?”中的每個方框都打勾。形式,幾乎每一個“好的分裂”都表現出這種行為。

我認為這不是參數的問題,應該有更健全的方法來解決這個問題。我並沒有放棄我的實現被破壞的可能性,但我沒有發現任何解決這個問題的方法。

在邏輯損失的背景下,我們正在操縱的應該是概率,那麼我們如何避免它呢?


我的直覺是把我們正在建立的模型,, 在一個 sigmoid 函數中,它有界,我想這會起作用,但我想知道是否有其他解決方案。由於梯度提升似乎成功地用於分類任務,因此應該存在“正確”(即有理由)的解決方案。

我喜歡將其與線性模型的情況類比,以及它們對 GLM(廣義線性模型)的擴展。

在線性模型中,我們擬合一個線性函數來預測我們的反應

為了推廣到其他情況,我們引入了一個鏈接函數,它將模型的線性部分轉換為響應的尺度(技術上這是一個反向鏈接,但我認為這樣更容易想到,轉換線性預測器轉換為響應,而不是將響應轉換為線性預測器)。

例如,邏輯模型使用 sigmoid(或 logit)函數

泊松回歸使用指數函數

為了構建與梯度提升的類比,我們將這些模型的線性部分替換為提升樹的總和。因此,例如,高斯情況(類似於線性回歸)成為眾所周知的

在哪裡是我們的弱學習者序列。二項式案例類似於邏輯回歸(正如您在回答中指出的那樣)

泊松提升類似於泊松回歸

問題仍然存在,當涉及鏈接功能時,如何擬合這些增強模型?對於鏈接是恆等函數的高斯情況,經常聽到的將弱學習器擬合到當前工作模型的殘差的咒語是可行的,但這並不能真正推廣到更複雜的模型。訣竅是將最小化的損失函數寫成模型線性部分的函數(即GLM 公式的一部分)。

例如,二項式損失通常會遇到

在這裡,損失是一個函數,與響應具有相同尺度的預測值,以及是線性預測器的非線性變換. 相反,我們可以將其重新表達為,(在這種情況下也稱為對數賠率)

然後我們可以取 this 相對於的梯度, 和 boost 直接最小化這個數量。

只有在最後,當我們想要為用戶產生預測時,我們才會將鏈接函數應用於弱學習器的最終序列,以使預測與響應具有相同的規模。在擬合模型時,我們在內部一直在線性尺度上工作。

引用自:https://stats.stackexchange.com/questions/204154

comments powered by Disqus