您當前的位置:首頁 > 攝影

劃成兩半:Logistic分類器

作者:由 anarion 發表于 攝影時間:2022-07-06

本文使用 Zhihu On VSCode 創作併發布

本文講解Logistic迴歸的基本統計學計算,只進行到最大似然估計,估計後驗等計算過於複雜而暫不進行。

本文的md原始碼地址:AnBlog/統計和機器學習

[TOC]

幹什麼

機率模型

模型的任務是,拿到一個特徵資料

x

,判斷這個特徵的物件更可能屬於哪個類別。可能只有兩個可以選擇的類,也就是二分類問題,也可能有多個,也就是多類分類問題。翻譯成數學語言,就是要求

p(y=c|x)

y

就是目標預測變數,取一系列離散值,代表多個不同的類。

Logistic迴歸預設場景是二分類問題,目標

y

取0或1。如果是多分類問題,可參考「Sigmoid迴歸」,原理和Logistic迴歸幾乎相同,且可以直接轉化為二分類問題,故不作討論。二分類問題估計的是「伯努利分佈」,機率密度函式如下:

p(y|\mu)=\mu^y(1-\mu)^{1-y}

以上寫法只是

p(y=1|\mu)=\mu

的花哨版本。

資料條件

和線性迴歸一樣,Logistic迴歸可能是兼具「最簡單」和「最常用」的少數機器學習模型之一。也和線性迴歸一樣,Logistic迴歸是「線性模型」,在一些「非線性」場景下可能發揮不太好。

如果你對線性迴歸還不熟悉,請看:

anarion:線性迴歸和貝葉斯的線性迴歸

線性分類器,假設樣本「線性可分」,就像下面這樣。可以用一條直線,分開兩類的樣本。

劃成兩半:Logistic分類器

線性可分

左邊是線性可分,右邊的分界很「不線性」。如果要用一條直線分開右邊的樣本,效果肯定很糟糕。

刻畫機率

正如上面的圖裡的點,一條直線把樣本空間分成兩半,越遠離直線的點分類就越明確。三維空間裡是平面,再高的維度就畫不出來了,思想卻是相同。

樣本點離分介面越遠,樣本點分到某個類的機率就應該越接近0或1。

線性分介面由一個線性方程表示:

\eta=\theta^Tx=0

給這個函式

\eta

輸入一個樣本

x

,它的取值就可以表示樣本點到分介面的距離!

這個結論對於你也許不是那麼明顯,你可以直接選擇相信我,也可以回憶一下高中學過的點到直線距離公式:

d(x,y)=\frac{|y_0-(kx_0+b)|}{\sqrt{1+k^2}}

相同形式可以拓展到高維情形:

d(x)=\frac{|\theta^Tx|}{||\theta||}

\eta

的符號反應樣本點在分介面的哪一側。這裡對

||\theta||

沒有限制,而「支援向量機」就會限制

||\theta||

,這大概是支援向量機的優越之處。

要刻畫樣本分到某類的機率,肯定是根據

\eta

的取值,正如上面說的那樣。這個函式應該具有以下形狀:

劃成兩半:Logistic分類器

Sigmoid

具有這個形狀的函式有很多,這裡選擇最有名的Sigmoid函式:

\mu=\frac{1}{1+\exp(-\eta)}=\frac{1}{1+\exp(-\theta^Tx)}

伯努利分佈的引數應該這樣刻畫。原來的分佈應該寫成這樣:

p(y|\theta,x)=(\frac{1}{1+\exp(-\theta^Tx)})^y(1-\frac{1}{1+\exp(-\theta^Tx)})^{1-y}

原分佈依賴

\mu

\mu

依賴

\theta,x

,故分佈依賴

\theta,x

。其中

\theta

是需要估計的引數,

x

是外部輸入的資料。

似然

表達似然

似然是引數

\theta

已知時,樣本資料出現的機率。

p(D|\theta)=\prod_ip(x^{(i)},y^{(i)}|\theta)=\prod_i(\mu^{(i)})^{y^{(i)}}(1-\mu^{(i)})^{1-y^{(i)}}

取對數:

\ln p(D|\theta)=\sum_i(y^{(i)}\ln \mu^{(i)}+(1-y^{(i)})\ln(1-\mu^{(i)}))

這裡

\mu

上標表示把第

i

行資料輸入給函式

\mu

\mu^{(i)}=\frac{1}{1+\exp(-\theta^Tx^{(i)})}

最大似然估計

\mu

對引數的導數,注意是對向量求導,結果是個向量:

\frac{d}{d\theta}\mu=-\frac{1}{(1+\exp(-\theta^Tx))^2}\exp(-\theta^Tx)(-x)=\frac{x\exp(-\theta^Tx)}{(1+\exp(-\theta^Tx))^2}=x\mu(1-\mu)

求對數的導數,注意還是對向量求導,結果還是個向量:

\frac{d}{d\theta}\ln p(D|\theta)=\sum_i(y^{(i)}\frac{d}{d\theta}\ln\mu^{(i)}+(1-y^{(i)})\frac{d}{d\theta}\ln(1-\mu^{(i)}))

進一步計算:

\frac{d}{d\theta}\ln\mu^{(i)}=\frac{x^{(i)}\mu^{(i)}(1-\mu^{(i)})}{\mu^{(i)}}=x^{(i)}(1-\mu^{(i)}),\frac{d}{d\theta}\ln(1-\mu^{(i)})=\frac{-x^{(i)}\mu^{(i)}(1-\mu^{(i)})}{1-\mu^{(i)}}=-x^{(i)}\mu^{(i)}

帶入:

\frac{d}{d\theta}\ln p(D|\theta)=\sum_i(y^{(i)}x^{(i)}-x^{(i)}\mu^{(i)})=\sum_ix^{(i)}(y^{(i)}-\mu^{(i)})

令這個為0,沒有

\theta

解析解哦。我嘗試了很多種辦法,最後還是沒有辦法!如果你看不明白,寫成矩陣形式更清晰:

\sum_ix^{(i)}y^{(i)}=yX^T,\sum_ix^{(i)}\mu^{(i)}=\mu X^T

令這兩者相等以獲得極值點:

(y-\mu)X^T=0

這不是一般的

Ax=0

形式的方程,即便可以解出一個向量

v

滿足方程

vX^T=0

,得到

\mu=y-v

,也不可以用得到的

\mu

表達出

\theta

。就是這樣求不出解析解。

雖然如此,數值求解的方法和其他估計的方法還是可以使用的。

標簽: 線性  樣本  迴歸  向量  Logistic