邏輯迴歸:使用 S 函數計算機率

許多問題都需要以機率估算值做為輸出內容。 邏輯迴歸是計算機率的極有效率機制。實務上,您可以透過下列任一方式使用傳回的機率:

  • 「照原樣」套用。舉例來說,如果垃圾內容預測模型將電子郵件做為輸入內容,並輸出 0.932 值,這表示電子郵件是垃圾內容的機率為 93.2%

  • 轉換為二元類別,例如 TrueFalseSpamNot Spam

本單元著重於直接使用邏輯迴歸模型輸出內容。在分類單元中,您將瞭解如何將這項輸出內容轉換為二元類別。

Sigmoid 函數

您可能想知道,邏輯迴歸模型如何確保輸出結果代表機率,且一律輸出介於 0 和 1 之間的值。巧合的是,有一系列函式稱為「邏輯函式」,其輸出內容具有相同的特徵。標準邏輯函式又稱「S 函數」 (「S 函數」sigmoid意指「S 形」),公式如下:

\[f(x) = \frac{1}{1 + e^{-x}}\]

其中:

  • f(x) 是 sigmoid 函式的輸出內容。
  • e歐拉數: 數學常數 ≈ 2.71828。
  • x 是 S 函數的輸入值。

圖 1 顯示對應的 Sigmoid 函式圖。

繪製在笛卡兒座標平面上的 S 形 (Sigmoid) 曲線,以原點為中心。
圖 1. S 函數的圖形。當 x 值減少至負無限大時,曲線會趨近於 0;當 x 值增加至無限大時,曲線會趨近於 1。

隨著輸入 x 增加,Sigmoid 函式的輸出會趨近於 1,但永遠不會達到 1。同樣地,輸入值越小,Sigmoid 函式的輸出值就越接近 0,但永遠不會達到 0

按這裡深入瞭解 Sigmoid 函式背後的數學原理

下表顯示輸入值介於 -7 到 7 之間時,Sigmoid 函式的輸出值。請注意,隨著負輸入值減少,S 型函數會迅速趨近於 0;隨著正輸入值增加,S 型函數會迅速趨近於 1。

不過,無論輸入值多大或多小,輸出值一律會大於 0 且小於 1。

輸入 Sigmoid 輸出
-7 0.001
-6 0.002
-5 0.007
-4 0.018
-3 0.047
-2 0.119
-1 0.269
0 0.50
1 0.731
2 0.881
3 0.952
4 0.982
5 0.993
6 0.997
7 0.999

使用 Sigmoid 函式轉換線性輸出

下列方程式代表羅吉斯迴歸模型的線性成分:

\[z = b + w_1x_1 + w_2x_2 + \ldots + w_Nx_N\]

其中:

  • z 是線性方程式的輸出內容,也稱為對數勝算
  • b 是偏誤。
  • w 值是模型學習到的權重。
  • x 值是特定範例的特徵值。

如要取得邏輯迴歸預測結果,請將 z 值傳遞至 S 函數,產生介於 0 和 1 之間的值 (機率):

\[y' = \frac{1}{1 + e^{-z}}\]

其中:

  • y' 是邏輯迴歸模型的輸出內容。
  • e歐拉數: 數學常數 ≈ 2.71828。
  • z 是線性輸出 (如上述方程式所計算)。

按這裡進一步瞭解對數比

在方程式 $z = b + w_1x_1 + w_2x_2 + \ldots + w_Nx_N$ 中,z 稱為對數勝算,因為如果您從下列 Sigmoid 函式開始 (其中 $y$ 是邏輯迴歸模型的輸出,代表機率):

$$y = \frac{1}{1 + e^{-z}}$$

然後求解 z

$$ z = \log\left(\frac{y}{1-y}\right) $$

接著,z 定義為兩種可能結果 (y1 – y) 機率比率的對數。

圖 2 說明如何使用這些計算,將線性輸出轉換為邏輯迴歸輸出。

左側:醒目顯示點 (-7.5, –10)、(-2.5, 0) 和 (0, 5) 的線條。右側:S 形曲線,並醒目顯示對應的轉換點 (-10, 0.00004)、(0, 0.5) 和 (5, 0.9933)。
圖 2. 左側:線性函數 z = 2x + 5 的圖形,並標示三個點。右圖:經過 Sigmoid 函式轉換後,醒目顯示的相同三點。

如圖 2 所示,線性方程式會成為 S 函數的輸入,請注意,線性方程式可以輸出非常大或非常小的 z 值,但 Sigmoid 函式的輸出值 y' 一律介於 0 和 1 之間 (不含 0 和 1)。舉例來說,左側圖表中的黃色正方形 z 值為 -10,但右側圖表中的 Sigmoid 函式會將 -10 對應至 y' 值 0.00004。

練習:確認理解程度

具有三項特徵的邏輯迴歸模型具有下列偏差和權重:

\[\begin{align} b &= 1 \\ w_1 &= 2 \\ w_2 &= -1 \\ w_3 &= 5 \end{align} \]

假設有下列輸入值:

\[\begin{align} x_1 &= 0 \\ x_2 &= 10 \\ x_3 &= 2 \end{align} \]

請回答下列兩個問題。

1. 這些輸入值的 z 值為何?
–1
0
0.731
1
答對了!權重和偏差值定義的線性方程式為 z = 1 + 2x1 – x2 + 5 x3。將輸入值代入方程式,可得出 z = 1 + (2)(0) - (10) + (5)(2) = 1
2. 這些輸入值的邏輯迴歸預測結果為何?
0.268
0.5
0.731

如上述 #1 計算結果,輸入值的對數勝算為 1。 將 z 的值代入 Sigmoid 函式:

\(y = \frac{1}{1 + e^{-z}} = \frac{1}{1 + e^{-1}} = \frac{1}{1 + 0.367} = \frac{1}{1.367} = 0.731\)

1
請注意,Sigmoid 函式的輸出結果一律會大於 0 且小於 1。