邏輯迴歸算法及其在文本分類中的應用

總結一下工作學習中的算法,如有紕漏,請大家多多指教,一起探討共同進步!

這裏首先講解一下邏輯迴歸算法,並給出其在文本分類中的應用。

相關代碼見我的github,地址爲:https://github.com/duguiming111/Text_Classification/blob/master/lr_main.py


邏輯迴歸算法原理 

邏輯迴歸(logistic regression)雖然名字是迴歸,但是它是統計學習中的經典分類方法,是一種判別學習模型。以二分類爲例:

首先大致說一下線性迴歸,詳細的線性迴歸算法見我的線性迴歸算法原理,線性模型是在給定的數據集上進行模型參數的訓練,使得模型能夠儘可能地預測實際輸出標記。引用周志華老師西瓜書上的例子:

                                                                f_{good}(x)=0.2\cdot x_{colour}+0.5\cdot x_{root}+0.3\cdot x_{sound}+1

其中,變量代表樣本(西瓜)的屬性,常量就是訓練得到的模型參數,當給定一個西瓜的屬性,就能夠判斷這個西瓜是好瓜還是壞瓜。可以看做將西瓜屬性的一個線性組合。

在邏輯迴歸中先介紹一個函數sigmoid函數,它的公式爲:

                                                                                          g(z)=\frac{1}{1+e^{^{-z}}}

對其求導可以得到(求導過程不難可以自己推導):

                                                                                    {g}'(z)=g(z)(1-g(z))

那麼,邏輯迴歸函數爲:

                                                                              h_{\vartheta }(x)=g(\vartheta ^{T}x)=\frac{1}{1+e^{-\vartheta ^{T}x}}

假定:

                                                                                    P(y=1|x;\vartheta )=h_{_{\vartheta }}(x)

                                                                                  P(y=0|x;\vartheta )=1-h_{\vartheta }(x)

                                                                           P(y|x;\vartheta )=(h^{_{\vartheta }}(x))^{y}(1-h_{\vartheta }(x))^{1-y}

邏輯迴歸的代價函數爲:

                                                                                L(\theta )=P(y|x;\theta)\\=\prod_{i=1}^m P(y^{(i)}|x^{(i)};\theta )\\=\prod_{i=1}^m(h_{\theta}(x^{(i)}))(1-h_{\theta}(x^{(i)}))^{(1-y^{(i)})}

對其取對數,可以得到:

                                                                    l(\theta )=log L(\theta )\\=\prod_{i=1}^{m}y^{(i)} log h(x^{(i)})+(1-y^{(i)}) log (1-h(x^{(i)}))

在這裏求代價函數的最大值,先對上式求導:

                                                                    \frac{\partial }{\partial \theta_{j}}l(\theta)=(y{{1} \over {g^{(\theta ^{T}x)}}}-(1-y){{1} \over {g^{(\theta ^ {T}x)}}})\frac{\partial }{\partial \theta_{j}}g(\theta ^{T}x)\\=(y{{1} \over {g(\theta ^{T}x)}}-(1-y){{1} \over {g(\theta ^{T}x)}})g(\theta ^{T}x)(1-g(\theta ^{T}x))\frac{\partial }{\partial \theta_{j}} \theta ^{T}x\\=(y(1-g(\theta ^{T}x))-(1-y)g(\theta ^{T}x))x_{j}\\=(y-y\cdot g(\theta ^ {T}x)-g(\theta ^ {T}x)+y\cdot g(\theta ^ {T}x))x_{j}\\=(y-g(\theta ^ {T}x)x_{j}\\=(y-h_{\theta}(x))x_{j}

更新參數:

                                                                    \theta _{j} := \theta_{j} + \alpha (y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}

邏輯迴歸由條件概率分佈邏輯迴歸的應用案例比較多:

1、垃圾短信識別

2、惡性腫瘤識別

3、推薦系統召回後的排序

還有很多,在這裏就不一一列舉。在文章開頭給出了垃圾短信識別代碼,不足之處,請大家指教。


參考文獻

[1]  周志華. 機器學習

[2]  李航. 統計學方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章