劃成兩半:Logistic分類器
本文使用 Zhihu On VSCode 創作併發布
本文講解Logistic迴歸的基本統計學計算,只進行到最大似然估計,估計後驗等計算過於複雜而暫不進行。
本文的md原始碼地址:AnBlog/統計和機器學習
[TOC]
幹什麼
機率模型
模型的任務是,拿到一個特徵資料
,判斷這個特徵的物件更可能屬於哪個類別。可能只有兩個可以選擇的類,也就是二分類問題,也可能有多個,也就是多類分類問題。翻譯成數學語言,就是要求
,
就是目標預測變數,取一系列離散值,代表多個不同的類。
Logistic迴歸預設場景是二分類問題,目標
取0或1。如果是多分類問題,可參考「Sigmoid迴歸」,原理和Logistic迴歸幾乎相同,且可以直接轉化為二分類問題,故不作討論。二分類問題估計的是「伯努利分佈」,機率密度函式如下:
以上寫法只是
的花哨版本。
資料條件
和線性迴歸一樣,Logistic迴歸可能是兼具「最簡單」和「最常用」的少數機器學習模型之一。也和線性迴歸一樣,Logistic迴歸是「線性模型」,在一些「非線性」場景下可能發揮不太好。
如果你對線性迴歸還不熟悉,請看:
anarion:線性迴歸和貝葉斯的線性迴歸
線性分類器,假設樣本「線性可分」,就像下面這樣。可以用一條直線,分開兩類的樣本。
線性可分
左邊是線性可分,右邊的分界很「不線性」。如果要用一條直線分開右邊的樣本,效果肯定很糟糕。
刻畫機率
正如上面的圖裡的點,一條直線把樣本空間分成兩半,越遠離直線的點分類就越明確。三維空間裡是平面,再高的維度就畫不出來了,思想卻是相同。
樣本點離分介面越遠,樣本點分到某個類的機率就應該越接近0或1。
線性分介面由一個線性方程表示:
給這個函式
輸入一個樣本
,它的取值就可以表示樣本點到分介面的距離!
這個結論對於你也許不是那麼明顯,你可以直接選擇相信我,也可以回憶一下高中學過的點到直線距離公式:
相同形式可以拓展到高維情形:
的符號反應樣本點在分介面的哪一側。這裡對
沒有限制,而「支援向量機」就會限制
,這大概是支援向量機的優越之處。
要刻畫樣本分到某類的機率,肯定是根據
的取值,正如上面說的那樣。這個函式應該具有以下形狀:
Sigmoid
具有這個形狀的函式有很多,這裡選擇最有名的Sigmoid函式:
伯努利分佈的引數應該這樣刻畫。原來的分佈應該寫成這樣:
原分佈依賴
,
依賴
,故分佈依賴
。其中
是需要估計的引數,
是外部輸入的資料。
似然
表達似然
似然是引數
已知時,樣本資料出現的機率。
取對數:
這裡
上標表示把第
行資料輸入給函式
:
最大似然估計
求
對引數的導數,注意是對向量求導,結果是個向量:
求對數的導數,注意還是對向量求導,結果還是個向量:
進一步計算:
帶入:
令這個為0,沒有
解析解哦。我嘗試了很多種辦法,最後還是沒有辦法!如果你看不明白,寫成矩陣形式更清晰:
令這兩者相等以獲得極值點:
這不是一般的
形式的方程,即便可以解出一個向量
滿足方程
,得到
,也不可以用得到的
表達出
。就是這樣求不出解析解。
雖然如此,數值求解的方法和其他估計的方法還是可以使用的。