邏輯迴歸:遺失與正規化

邏輯迴歸模型的訓練程序與線性迴歸模型相同,但有兩項主要差異:

以下各節將深入探討這兩項考量。

對數損失

線性迴歸模組中,您使用了平方損失 (也稱為 L2 損失) 做為損失函式。如果輸出值的變化率保持不變,平方損失就非常適合線性模型。舉例來說,假設線性模型為 $y' = b + 3x_1$,每當輸入值 $x_1$ 增加 1,輸出值 $y'$ 就會增加 3。

不過,邏輯迴歸模型的變化率並非恆定。 如「計算機率」一節所示,sigmoid 曲線呈 S 形,而非線性。當對數勝算 ($z$) 值接近 0 時,$z$ 的微幅增加會導致 $y$ 的變化遠大於 $z$ 為正數或負數時。下表顯示輸入值為 5 到 10 時,Sigmoid 函式的輸出結果,以及擷取結果差異所需的對應精確度。

輸入 邏輯輸出 精確度位數
5 0.993 3
6 0.997 3
7 0.999 3
8 0.9997 4
9 0.9999 4
10 0.99998 5

如果您使用平方損失計算 Sigmoid 函式的錯誤,隨著輸出結果越來越接近 01,您需要更多記憶體來保留追蹤這些值所需的精確度。

邏輯迴歸的損失函式為對數損失。對數損失方程式會傳回變更幅度的對數,而不只是資料與預測之間的距離。對數損失的計算方式如下:

$\text{Log Loss} = -\frac{1}{N}\sum_{i=1}^{N} y_i\log(y_i') + (1 - y_i)\log(1 - y_i')$

其中:

  • \(N\) 是資料集中標示範例的數量
  • \(i\) 是資料集中的範例索引 (例如 \((x_3, y_3)\) 是資料集中的第三個範例)
  • \(y_i\) 是第 \(i\)個範例的標籤。由於這是邏輯迴歸, \(y_i\) 必須是 0 或 1。
  • 是模型對第 \(i\)個範例的預測結果 (介於 0 和 1 之間),以 \(x_i\)中的特徵集為準。 \(y_i'\)

邏輯迴歸中的正規化

正規化是一種機制,可在訓練期間懲罰模型複雜度,在邏輯迴歸模型中極為重要。如果沒有正規化,在模型具有大量特徵的情況下,邏輯迴歸的漸近性質會持續將損失推向 0。因此,大多數邏輯迴歸模型會採用下列兩種策略之一,降低模型複雜度: