機器學習筆記(2): Logistic 迴歸

jeefy發表於2024-06-07

Logistic 迴歸是線性迴歸中一個很重要的部分。

Logistic 函式:

\[\sigma(x) = \frac {L} {1 + \exp(-k(x - x_0))} \]

其中:

  • \(L\) 表示最大值
  • \(x_0\) 表示對稱中心
  • \(k\) 表示傾斜度

一般來說,都將 \(L\) 設為 \(1\),而 \(k\)\(x_0\) 在引數中控制。


認為特徵只有一個,那麼自然:

\[p(y = 1 | x) = \sigma(\omega_0 + \omega_1 x) = \frac 1 {1 + \exp(\omega_0 + \omega_1 x)} \]

認為 \(\vec x\) 是特徵向量,並且是增廣向量,也就是:

\[\vec x = \begin{bmatrix} x_0 & x_1 & \ldots & x_c & 1 \end{bmatrix} \]

認為引數向量也是增廣的:

\[\omega = \begin{bmatrix} \omega_0 \\ \omega_1 \\ \vdots \\ \omega_c \\ 1 \end{bmatrix} \]

那麼:

\[p(y = 1 | \vec x) = \sigma(\vec x \omega) = \frac 1 { 1 + \exp(\vec x \omega)} \]

對於多組資料,\(X = \begin{bmatrix} \vec x_0 \\ \vec x_1 \\ \ldots \\ \vec x_m \end{bmatrix}\)

\[p(\vec y = 1 | X) = \sigma(X \omega) \]

注意最終得到是一個向量,\(\sigma\) 函式作用於向量中的每個單獨的元素。


利用交叉熵作為損失函式:

\[R(\omega) = - \frac 1 m \sum_{n = 1}^m \left(y_n \log \hat y_n + \left(1 - y_n \right)\log \left(1 - \hat y _n \right) \right) \]

其中 \(\hat y\) 表示預測分類,而 \(y\) 表示實際分類。

由於 \(\sigma'(x) = \sigma(x)(1 - \sigma(x))\),自然的可以推出其偏導數:

\[ \begin{aligned} \frac \delta {\delta \omega} R(\omega) &= - \frac 1m \sum \left( y_n \frac {\hat y_n (1 - \hat y_n)}{\hat y_n} x_n + (1 - y_n) \frac {- \hat y_n (1 - \hat y_n)}{1 - \hat y_n} x_n \right) \\ &= - \frac 1m \sum \left( y_n - \hat y_n \right) x_n \\ \end{aligned} \]

寫成向量形式也就是:

\[- \frac 1 m (\hat y - y) \cdot x \]

於是利用梯度下降演算法:

\[\omega = \omega - \frac \alpha m X {\Large (}\sigma(X \omega) - y{\Large )} \]

程式碼和梯度下降函式十分相似。


Feature Mapping

合理的利用線性迴歸可以解決很多複雜的問題。

大機率我們需要一個類似於圓的東西才可以擬合。

考慮到在高中我們學過:

\[C: Ax^2 + B y^2 + C x + D y + F =0 \]

可以表示一個圓,那麼我們就可以利用重對映:

\[(x, y) \to \begin{bmatrix} 1 & x & y & xy & x^2 & y^2 \end{bmatrix} \]

的方式將特徵向量進行一點點簡單的變換,那麼自然就變成了對於多個引數的線性迴歸問題,一種可能的擬合是:

當然,我們也可以更復雜的利用這些引數,例如 \(x^3\)\(\sqrt x\)\(\frac 1 x\) 之類的引數,這取決於我們想要如何去擬合。


正則化引數

和平方損失函式的正則化方式一模一樣,見 機器學習筆記(1): 梯度下降演算法


Softmax Regression

其實就是多分類的 Logistic 迴歸:

\[p(y = c | \vec x) = {\rm softmax}(\vec x W) = \frac {\exp(\vec x W_c)}{\sum_{k = 1}^C \exp(\vec W_k)} \]

其中 \(C\) 表示分類數,而 \(W = \begin{bmatrix} \omega_1 & \omega_2 & \ldots & \omega_C \end{bmatrix}\),其中 \(\omega_i\) 就表示某一個 Logistic 函式的引數。

由於其實就是多個 Logistic 函式,所以其偏導數和引數學習過程非常相似:

\[W = W - \frac \alpha m X \left( \sigma(X W) - Y \right) \]

值得注意的是,對於每一個 \(\omega_i\) 減去同一個 \(\theta\) 結果不會改變,意味著一般都需要正則化。

相關文章