西瓜書總複習之第3章-線性模型

3、線性模型

(本文僅爲個人方便複習回顧)

談及線性模型,其實我們很早就已經與它打過交道,還記得高中數學必修3課本中那個頑皮的“最小二乘法”嗎?這就是線性模型的經典算法之一:根據給定的(x,y)點對,求出一條與這些點擬合效果最好的直線y=ax+b,之前我們利用下面的公式便可以計算出擬合直線的係數a,b(3.1中給出了具體的計算過程),從而對於一個新的x,可以預測它所對應的y值。前面我們提到:在機器學習的術語中,當預測值爲連續值時,稱爲“迴歸問題”,離散值時,稱爲“分類問題”。本篇先從線性迴歸任務開始,接着討論分類和多分類問題。

1.png

3.1 線性迴歸

線性迴歸問題就是試圖學到一個線性模型儘可能準確地預測新樣本的輸出值,例如:通過歷年的人口數據預測2017年人口數量。在這類問題中,往往我們會先得到一系列的有標記數據,例如:2000–>13億…2016–>15億,這時輸入的屬性只有一個,即年份;也有輸入多屬性的情形,假設我們預測一個人的收入,這時輸入的屬性值就不止一個了,例如:(學歷,年齡,性別,顏值,身高,體重)–>15k。

有時這些輸入的屬性值並不能直接被我們的學習模型所用,需要進行相應的處理,對於連續值的屬性,一般都可以被學習器所用,有時會根據具體的情形作相應的預處理,例如:歸一化等;對於離散值的屬性,可作下面的處理:

  • 若屬性值之間存在“序關係”,則可以將其轉化爲連續值,例如:身高屬性分爲“高”“中等”“矮”,可轉化爲數值:{1, 0.5, 0}。

  • 若屬性值之間不存在“序關係”,則通常將其轉化爲向量的形式,例如:性別屬性分爲“男”“女”,可轉化爲二維向量:{(1,0),(0,1)}。

(1)當輸入屬性只有一個的時候,就是最簡單的情形,也就是我們高中時最熟悉的“最小二乘法”(Euclidean distance),首先計算出每個樣本預測值與真實值之間的誤差並求和,通過最小化均方誤差MSE,使用求偏導等於零的方法計算出擬合直線y=wx+b的兩個參數w和b,計算過程如下圖所示:

2.png

(2)當輸入屬性有多個的時候,例如對於一個樣本有d個屬性{(x1,x2…xd),y},則y=wx+b需要寫成:

0.png

通常對於多元問題,常常使用矩陣的形式來表示數據。在本問題中,將具有m個樣本的數據集表示成矩陣X,將係數w與b合併成一個列向量,這樣每個樣本的預測值以及所有樣本的均方誤差最小化就可以寫成下面的形式:

3.png

4.png

5.png

同樣地,我們使用最小二乘法對w和b進行估計,令均方誤差的求導等於0,需要注意的是,當一個矩陣的行列式不等於0時,我們纔可能對其求逆,因此對於下式,我們需要考慮矩陣(X的轉置*X)的行列式是否爲0,若不爲0,則可以求出其解,若爲0,則需要使用其它的方法進行計算,書中提到了引入正則化,此處不進行深入。

6.png

另一方面,有時像上面這種原始的線性迴歸可能並不能滿足需求,例如:y值並不是線性變化,而是在指數尺度上變化。這時我們可以採用線性模型來逼近y的衍生物,例如lny,這時衍生的線性模型如下所示,實際上就是相當於將指數曲線投影在一條直線上,如下圖所示:

7.png

更一般地,考慮所有y的衍生物的情形,就得到了“廣義的線性模型”(generalized linear model),其中,g(*)稱爲聯繫函數(link function)。

8.png

3.2 線性機率迴歸

迴歸就是通過輸入的屬性值得到一個預測值,利用上述廣義線性模型的特徵,是否可以通過一個聯繫函數,將預測值轉化爲離散值從而進行分類呢?線性機率迴歸正是研究這樣的問題。對數機率引入了一個對數機率函數(logistic function),將預測值投影到0-1之間,從而將線性迴歸問題轉化爲二分類問題。

9.png

10.png

若將y看做樣本爲正例的概率,(1-y)看做樣本爲反例的概率,則上式實際上使用線性迴歸模型的預測結果器逼近真實標記的對數機率。因此這個模型稱爲“對數機率迴歸”(logistic regression),也有一些書籍稱之爲“邏輯迴歸”。下面使用最大似然估計的方法來計算出w和b兩個參數的取值,下面只列出求解的思路,不列出具體的計算過程。

11.png

12.png

3.3 線性判別分析

線性判別分析(Linear Discriminant Analysis,簡稱LDA),其基本思想是:將訓練樣本投影到一條直線上,使得同類的樣例儘可能近,不同類的樣例儘可能遠。如圖所示:

13.png14.png

想讓同類樣本點的投影點儘可能接近,不同類樣本點投影之間儘可能遠,即:
讓各類的協方差之和儘可能小,不用類之間中心的距離儘可能大。基於這樣的考慮,LDA定義了兩個散度矩陣。

  • 類內散度矩陣(within-class scatter matrix)

15.png

  • 類間散度矩陣(between-class scaltter matrix)

16.png

因此得到了LDA的最大化目標:“廣義瑞利商”(generalized Rayleigh quotient)。

17.png

從而分類問題轉化爲最優化求解w的問題,當求解出w後,對新的樣本進行分類時,只需將該樣本點投影到這條直線上,根據與各個類別的中心值進行比較,從而判定出新樣本與哪個類別距離最近。求解w的方法如下所示,使用的方法爲λ乘子。

18.png

若將w看做一個投影矩陣,類似PCA的思想,則LDA可將樣本投影到N-1維空間(N爲類簇數),投影的過程使用了類別信息(標記信息),因此LDA也常被視爲一種經典的監督降維技術

3.4 多分類學習

現實中我們經常遇到不只兩個類別的分類問題,即多分類問題,在這種情形下,我們常常運用“拆分”的策略,通過多個二分類學習器來解決多分類問題,即將多分類問題拆解爲多個二分類問題,訓練出多個二分類學習器,最後將多個分類結果進行集成得出結論。最爲經典的拆分策略有三種:“一對一”(OvO)、“一對其餘”(OvR)和“多對多”(MvM),核心思想與示意圖如下所示。

  • OvO:給定數據集D,假定其中有N個真實類別,將這N個類別進行兩兩配對(一個正類/一個反類),從而產生N(N-1)/2個二分類學習器,在測試階段,將新樣本放入所有的二分類學習器中測試,得出N(N-1)個結果,最終通過投票產生最終的分類結果。

  • OvM:給定數據集D,假定其中有N個真實類別,每次取出一個類作爲正類,剩餘的所有類別作爲一個新的反類,從而產生N個二分類學習器,在測試階段,得出N個結果,若僅有一個學習器預測爲正類,則對應的類標作爲最終分類結果。

  • MvM:給定數據集D,假定其中有N個真實類別,每次取若干個類作爲正類,若干個類作爲反類(通過ECOC碼給出,編碼),若進行了M次劃分,則生成了M個二分類學習器,在測試階段(解碼),得出M個結果組成一個新的碼,最終通過計算海明/歐式距離選擇距離最小的類別作爲最終分類結果。

19.png

20.png

3.5 類別不平衡問題

類別不平衡(class-imbanlance)就是指分類問題中不同類別的訓練樣本相差懸殊的情況,例如正例有900個,而反例只有100個,這個時候我們就需要進行相應的處理來平衡這個問題。常見的做法有三種

  1. 在訓練樣本較多的類別中進行“欠採樣”(undersampling),比如從正例中採出100個,常見的算法有:EasyEnsemble
  2. 在訓練樣本較少的類別中進行“過採樣”(oversampling),例如通過對反例中的數據進行插值,來產生額外的反例,常見的算法有SMOTE
  3. 直接基於原數據集進行學習,對預測值進行“再縮放”處理。其中再縮放也是代價敏感學習的基礎。21.png
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章