作者:[龍心塵](http://blog.csdn.net/longxinchen_ml?viewmode=contents) && [寒小陽](http://blog.csdn.net/han_xiaoyang?viewmode=contents)
時間:2015年10月。
出處:[http://blog.csdn.net/longxinchen_ml/article/details/49284391](http://blog.csdn.net/longxinchen_ml/article/details/49284391),
[http://blog.csdn.net/han_xiaoyang/article/details/49332321](http://blog.csdn.net/han_xiaoyang/article/details/49332321)。
聲明:版權所有,轉載請注明出處,謝謝。
### 一、 引言
前一篇文章[《機器學習系列(1)_邏輯回歸初步》](http://blog.csdn.net/han_xiaoyang/article/details/49123419)中主要介紹了邏輯回歸的由來,作用和簡單的應用,這里追加這篇[《機器學習系列(2)用初等數學視角解讀邏輯回歸》](http://blog.csdn.net/han_xiaoyang/article/details/49332321)來看看從直觀的數學視角,可以怎么去理解邏輯回歸的思想思路。
> 為了降低理解難度,本文試圖用最基礎的初等數學來解讀邏輯回歸,少用公式,多用圖形來直觀解釋推導公式的現實意義,希望使讀者能夠對邏輯回歸有更直觀的理解。
### 二、 邏輯回歸問題的通俗幾何描述
邏輯回歸處理的是分類問題。我們可以用通俗的幾何語言重新表述它:
空間中有兩群點,一群是圓點“〇”,一群是叉點“X”。我們希望從空間中選出一個分離邊界,將這兩群點分開。

> 注:分離邊界的維數與空間的維數相關。如果是二維平面,分離邊界就是一條線(一維)。如果是三維空間,分離邊界就是一個空間中的面(二維)。如果是一維直線,分離邊界就是直線上的某一點。不同維數的空間的理解下文將有專門的論述。
為了簡化處理和方便表述,我們做以下4個約定:
1.我們先考慮在二維平面下的情況。
2.而且,我們假設這兩類是線性可分的:即可以找到一條最佳的直線,將兩類點分開。
3.用離散變量y表示點的類別,y只有兩個可能的取值。y=1表示是叉點“X”,y=0表示是是圓點“〇”。
4.點的橫縱坐標用
表示。
于是,現在的問題就變成了:怎么依靠現有這些點的坐標
和標簽(y),找出分界線的方程。
### 三、 如何用解析幾何的知識找到邏輯回歸問題的分界線?
1.我們用逆推法的思路:
假設我們已經找到了這一條線,再尋找這條線的性質是什么。根據這些性質,再來反推這條線的方程。
2.這條線有什么性質呢?
首先,它能把兩類點分開來。——好吧,這是廢話。( ̄▽ ̄)”
然后,兩類點在這條線的法向量p上的投影的值的正負號不一樣,一類點的投影全是正數,另一類點的投影值全是負數!
- 首先,這個性質是非常好,可以用來區分點的不同的類別。
- 而且,我們對法向量進行規范:只考慮延長線通過原點的那個法向量p。這樣的話,只要求出法向量p,就可以唯一確認這條分界線,這個分類問題就解決了。


3.還有什么方法能將法向量p的性質處理地更好呢?
因為計算各個點到法向量p投影,需要先知道p的起點的位置,而起點的位置確定起來很麻煩,我們就干脆將法向量平移使其起點落在坐標系的原點,成為新向量p’。因此,所有點到p’的投影也就變化了一個常量。


假設這個常量為
,p’向量的橫縱坐標為
。空間中任何一個點
到p’的投影就是
,再加上前面的常量值就是:
看到上面的式子有沒有感到很熟悉?這不就是邏輯回歸函數
中括號里面的部分嗎?
令
就可以根據z的正負號來判斷點x的類別了。
### 四、 從概率角度理解z的含義。
由以上步驟,我們由點x的坐標得到了一個新的特征z,那么:
> z的現實意義是什么呢?
首先,我們知道,z可正可負可為零。而且,z的變化范圍可以一直到正負無窮大。
z如果大于0,則點x屬于y=1的類別。而且z的值越大,說明它距離分界線的距離越大,更可能屬于y=1類。
那可否把z理解成點x屬于y=1類的概率P(y=1|x) (下文簡寫成P)呢?顯然不夠理想,因為概率的范圍是0到1的。
但是我們可以將概率P稍稍改造一下:令Q=P/(1-P),期望用Q作為z的現實意義。我們發現,當P的在區間[0,1]變化時,Q在[0,+∞)區間單調遞增。函數圖像如下(以下圖像可以直接在度娘中搜“x/(1-x)”,超快):

但是Q的變化率在[0,+∞)還不夠,我們是希望能在(-∞,+∞)區間變化的。而且在P=1/2的時候剛好是0。這樣才有足夠的解釋力。
>注:因為P=1/2說明該點屬于兩個類別的可能性相當,也就是說這個點恰好在分界面上,那它在法向量的投影自然就是0了。
而在P=1/2時,Q=1,距離Q=0還有一段距離。那怎么通過一個函數變換然它等于0呢?有一個天然的函數log,剛好滿足這個要求。
于是我們做變換R=log(Q)=log(P/(1-P)),期望用R作為z的現實意義。畫出它的函數圖像如圖:

這個函數在區間[0,1]中可正可負可為零,單調地在(-∞,+∞)變化,而且1/2剛好就是唯一的0值!基本完美滿足我們的要求。
回到我們本章最初的問題,
> “我們由點x的坐標得到了一個新的特征z,那么z的具體意義是什么呢?”
由此,我們就可以將z理解成x屬于y=1類的概率P經過某種變換后對應的值。也就是說,z= log(P/(1-P))。反過來就是P=
。圖像如下:

這兩個函數log(P/(1-P)) 、
看起來熟不熟悉?
> 這就是傳說中的logit函數和sigmoid函數!
小小補充一下:
- 在概率理論中,Q=P/(1-P)的意義叫做賠率(odds)。世界杯賭過球的同學都懂哈。賠率也叫發生比,是事件發生和不發生的概率比。
- 而z= log(P/(1-P))的意義就是對數賠率或者對數發生比(log-odds)。
于是,我們不光得到了z的現實意義,還得到了z映射到概率P的擬合方程:
> 
有了概率P,我們順便就可以拿擬合方程P=
來判斷點x所屬的分類:
> 當P>=1/2的時候,就判斷點x屬于y=1的類別;當P<1/2,就判斷點x屬于y=0的類別。

### 五、 構造代價函數求出參數的值
到目前為止我們就有兩個判斷某點所屬分類的辦法,一個是判斷z是否大于0,一個是判斷g(z)是否大于1/2。
然而這并沒有什么X用,
> 以上的分析都是基于“假設我們已經找到了這條線”的前提得到的,但是最關鍵的
三個參數仍未找到有效的辦法求出來。
還有沒有其他的性質可供我們利用來求出參數
的值?
- 我們漏了一個關鍵的性質:這些樣本點已經被標注了y=0或者y=1的類別!
- 我們一方面可以基于z是否大于0或者g(z) 是否大于1/2來判斷一個點的類別,另一方又可以依據這些點已經被標注的類別與我們預測的類別的插值來評估我們預測的好壞。
- 這種衡量我們在某組參數下預估的結果和實際結果差距的函數,就是傳說中的代價函數Cost Function。
- 當代價函數最小的時候,相應的參數
就是我們希望的最優解。
由此可見,設計一個好的代價函數,將是我們處理好分類問題的關鍵。而且不同的代價函數,可能會有不同的結果。因此更需要我們將代價函數設計得解釋性強,有現實針對性。
為了衡量“預估結果和實際結果的差距”,我們首先要確定“預估結果”和“實際結果”是什么。
- “實際結果”好確定,就是y=0還是y=1。
- “預估結果”有兩個備選方案,經過上面的分析,我們可以采用z或者g(z)。但是顯然g(z)更好,因為g(z)的意義是概率P,剛好在[0,1]范圍之間,與實際結果{0,1}很相近,而z的意思是邏輯發生比,范圍是整個實數域(-∞,+∞),不太好與y={0,1}進行比較。
接下來是衡量兩個結果的“差距”。
- 我們首先想到的是y-hθ(x)。
- 但這是當y=1的時候比較好。如果y=0,則y- hθ(x)= - hθ(x)是負數,不太好比較,則采用其絕對值hθ(x)即可。綜合表示如下:

- 但這個函數有個問題:求導不太方便,進而用梯度下降法就不太方便。
- 因為梯度下降法超出的初等數學的范圍,這里就暫且略去不解釋了。
- 于是對上面的代價函數進行了簡單的處理,使之便于求導。結果如下:

代價函數確定了,接下來的問題就是機械計算的工作了。常見的方法是用梯度下降法。于是,我們的平面線形可分的問題就可以說是解決了。
### 六、 從幾何變換的角度重新梳理我們剛才的推理過程。
回顧我們的推理過程,我們其實是在不斷地將點
進行幾何坐標變換的過程。
- 第一步是將分布在整個二維平面的點
通過線性投影映射到一維直線中,成為點x(z)
- 第二步是將分布在整個一維直線的點x(z)通過sigmoid函數映射到一維線段[0,1]中成為點x(g(z))。
- 第三步是將所有這些點的坐標通過代價函數統一計算成一個值,如果這是最小值,相應的參數就是我們所需要的理想值。

### 七、 對于簡單的非線性可分的問題。
1.由以上分析可知。比較關鍵的是第一步,我們之所以能夠這樣映射是因為假設我們點集是線性可分的。但是如果分離邊界是一個圓呢?考慮以下情況。

2.我們仍用逆推法的思路:
- 通過觀察可知,分離邊界如果是一個圓比較合理。
- 假設我們已經找到了這個圓,再尋找這個圓的性質是什么。根據這些性質,再來反推這個圓的方程。
3.我們可以依據這個性質:
- 圓內的點到圓心的距離小于半徑,圓外的點到圓心的距離大于半徑
- 假設圓的半徑為r,空間中任何一個點
到原點的距離為
。
- 令
,就可以根據z的正負號來判斷點x的類別了
- 然后令
,就可以繼續依靠我們之前的邏輯回歸的方法來處理和解釋問題了。
4.從幾何變換的角度重新梳理我們剛才的推理過程。
- 第一步是將分布在整個二維平面的點
通過某種方式映射到一維直線中,成為點x(z)
- 第二步是將分布在整個一維射線的點x(z)通過sigmoid函數映射到一維線段[0,1]中成為點x(g(z))。
- 第三步是將所有這些點的坐標通過代價函數統一計算成一個值v,如果這是最小值,相應的參數就是我們所需要的理想值。

### 八、 從特征處理的角度重新梳理我們剛才的分析過程
其實,做數據挖掘的過程,也可以理解成做特征處理的過程。我們典型的數據挖掘算法,也就是將一些成熟的特征處理過程給固定化的結果。
對于邏輯回歸所處理的分類問題,我們已有的特征是這些點的坐標
,我們的目標就是判斷這些點所屬的分類y=0還是y=1。那么最理想的想法就是希望對坐標
進行某種函數運算,得到一個(或者一些)新的特征z,基于這個特征z是否大于0來判斷該樣本所屬的分類。
對我們上一節非線性可分問題的推理過程進行進一步抽象,我們的思路其實是:
- 第一步,將點
的坐標通過某種函數運算,得到一個新的類似邏輯發生比的特征,
- 第二步是將特征z通過sigmoid函數得到新的特征
。
- 第三步是將所有這些點的特征q通過代價函數統一計算成一個值
,如果這是最小值,相應的參數(r)就是我們所需要的理想值。

### 九、 對于復雜的非線性可分的問題
由以上分析可知。比較關鍵的是第一步,如何設計轉換函數
。我們現在開始考慮分離邊界是一個極端不規則的曲線的情況。

我們仍用逆推法的思路:
- 通過觀察等先驗的知識(或者完全不觀察亂猜),我們可以假設分離邊界是某種6次曲線(這個曲線方程可以提前假設得非常復雜,對應著各種不同的情況)。
- 第一步:將點
的坐標通過某種函數運算,得到一個新的特征
。并假設z是某種程度的邏輯發生比,通過其是否大于0來判斷樣本所屬分類。
- 第二步:將特征z通過sigmoid函數映射到新的特征
- 第三步:將所有這些樣本的特征q通過邏輯回歸的代價函數統一計算成一個值
,如果這是最小值,相應的參數
就是我們所需要的理想值。
### 十、 多維邏輯回歸的問題
以上考慮的問題都是基于在二維平面內進行分類的情況。其實,對于高維度情況的分類也類似。
高維空間的樣本,其區別也只是特征坐標更多,比如四維空間的點x的坐標為
。但直接運用上文特征處理的視角來分析,不過是對坐標
進行參數更多的函數運算得到新的特征
。并假設z是某種程度的邏輯發生比,通過其是否大于0來判斷樣本所屬分類。
而且,如果是高維線性可分的情況,則可以有更近直觀的理解。
- 如果是三維空間,分離邊界就是一個空間中的一個二維平面。兩類點在這個二維平面的法向量p上的投影的值的正負號不一樣,一類點的投影全是正數,另一類點的投影值全是負數。

- 如果是高維空間,分離邊界就是這個空間中的一個超平面。兩類點在這個超平面的法向量p上的投影的值的正負號不一樣,一類點的投影全是正數,另一類點的投影值全是負數。
- 特殊的,如果是一維直線空間,分離邊界就是直線上的某一點p。一類點在點p的正方向上,另一類點在點p的負方向上。這些點在直線上的坐標可以天然理解成類似邏輯發生比的情況。可見一維直線空間的分類問題是其他所有高維空間投影到法向量后的結果,是所有邏輯回歸問題的基礎。

### 十一、 多分類邏輯回歸的問題
以上考慮的問題都是二分類的問題,基本就是做判斷題。但是對于多分類的問題,也就是做選擇題,怎么用邏輯回歸處理呢?

其基本思路也是二分類,做判斷題。
比如你要做一個三選一的問題,有ABC三個選項。首先找到A與BUC(”U”是并集符號)的分離邊界。然后再找B與AUC的分離邊界,C與AUB的分離邊界。

這樣就能分別得到屬于A、B、C三類的概率,綜合比較,就能得出概率最大的那一類了。

### 十二、 總結列表
為了把本文的關系梳理清楚,我們畫了以下這張圖表。

- 前言
- 機器學習系列(1)_邏輯回歸初步
- 機器學習系列(2)_從初等數學視角解讀邏輯回歸
- 機器學習系列(3)_邏輯回歸應用之Kaggle泰坦尼克之災
- 手把手入門神經網絡系列(1)_從初等數學的角度初探神經網絡
- 手把手入門神經網絡系列(2)_74行代碼實現手寫數字識別
- 機器學習系列(4)_機器學習算法一覽,應用建議與解決思路
- 機器學習系列(5)_從白富美相親看特征預處理與選擇(上)
- 機器學習系列(6)_從白富美相親看特征預處理與選擇(下)
- 機器學習系列(7)_機器學習路線圖(附資料)
- NLP系列(2)_用樸素貝葉斯進行文本分類(上)
- NLP系列(3)_用樸素貝葉斯進行文本分類(下)
- NLP系列(4)_樸素貝葉斯實戰與進階