基本形式
給定由d個屬性描述的示例x=(x1; x2; …; xd),其中xi是x在第i個屬性上的取值,線性模型(linear model)試圖學得一個通過屬性的線性組合來進行預測的函數,即
寫成向量形式即
- 確定w與b后模型即隨之確定
- 非線性模型(nonlinear model)可在線性模型基礎上通過引入層級結構或高維映射得到
- 線性模型具有很好的解釋性(comprehensibility)
線性回歸
線性回歸(linear regression)目的即確定一個w和b,是的f(x)與y的均方誤差最小化。
- 均方誤差對應歐幾里得距離即歐氏距離(Euclidean distance)
- 基于均方誤差最小化進行模型求解的方法稱最小二乘法(least square method)
- 最小二乘法即試圖找到一條直線,使所有樣本到直線上的歐氏距離之和最小
w和b最優解的閉式(closed-form)解為:
多元線性回歸
更一般的情形是對于d個屬性描述的變量,進行多元線性回歸(multivariate linear regression)
為便于討論,令w'=(w;b),數據集D表示為一個m×(d+1)大小的矩陣X,器每一行對應一個示例,每行前d個元素對應于示例的d個屬性值,最后一個元素恒置為1,即
標記向量為y,則有
令
并將其對w'求導得到:
令其為0可以得到w'的最優解的閉式解
-
若XTX為滿秩矩陣(full-rank matrix)或正定矩陣(positive definite matrix)時,則求得
image
線性回歸模型為
image - 若XTX不是滿秩矩陣(往往不是),則會得到多個可行解,由歸納偏好選擇哪一組解為輸出,常見的做法為引入正則化(regularization)項
廣義線性模型
廣義線性模型(generalized linear model)即當f與x不是標準的線性關系時,可以選取一個恰當的單調可微函數g,令
得到廣義線性模型,g稱為聯系函數(link function)
例如當g(·)=ln(·)時可以得到對數線性回歸(log-linear regression)
對數幾率回歸
對于二分類任務,可以通過將輸出標記y歸到0或1,從而使用線性回歸的方法,即將預測值轉換成0/1值,可以使用單位階躍函數(unit-step function)
但是由于其不連續,可以使用單位階躍函數的替代函數(surrogate function)并希望其單調可微,從而可以選取對數幾率函數(logistic function),一種Sigmoid函數(即形似S的函數)
它可以將z值轉換成一個0/1值,從而
將y視為樣本x作為正例的可能性,則1-y是其反例可能性,兩者的比值成為幾率(odds),反映了x作為正例的相對可能性,對其取對數即對數幾率(log odds,或logit)
確定w與b
通過極大似然法(maximum likelihood method)估計w和b,給定數據集(xi,yi),對率回歸模型最大化對數似然(log-likelihood)
上式最大化等價于最小化下式
該式是關于β的高階可導連續凸函數,根據凸優化理論可以使用梯度下降法、牛頓法等求其最優解得到:
線性判別分析
線性判別分析(Linear Discriminant Analysis,LDA)是一種經典的線性學習方法,適用于二分類問題。
LDA的思想為:給定訓練樣例集,設法將樣例投影到一條直線上,使得同類樣例的投影點盡可能接近、異類樣例的投影點盡可能遠離;在對新樣本進行分類時,將其投影到同樣的這條直線上,再根據投影點的位置來確定新樣本的類別。
-
類內散度矩陣(within-class scatter matrix)用于表示每一個類內的分散程度,希望其越小越好
image -
類間三度矩陣(between-class scatter matrix)用于表示類與類之間的分散程度,希望其越大越好
image
LDA欲最大化的目標即Sb和Sw的廣義瑞利商(generalized Rayleigh quotient)
求算方式:由于不失一般性(J式中分子和分母都是關于w的二次項,因此J的解與w的長度無關,只與其方向有關),可以設分母為1,等價于等式條件約束下的凸優化問題:
使用拉格朗日乘子可以求解其對偶問題,從而求解該優化問題,考慮到數值解的穩定性,一般會將Sw進行奇異值分解
- LDA可從貝葉斯決策理論的角度來闡釋,并可證明,當兩類數據同先驗、滿足高斯分布且協方差相等時,LDA可達到最優分類
- LDA可以推廣到多分類任務中,需要定義全局散度矩陣
- LDA也常被視為一種經典的監督降維技術
多分類學習
多分類學習的基本思路是拆解法,即將多分類任務拆為若干個二分類任務求解。先對問題進行拆分,然后為拆出的每個二分類任務訓練一個分類器;在測試時,對這些分類器的預測結果進行集成以獲得最終的多分類結果。
經典的拆分策略有
- 一對一(One vs. One,OvO)
- 一對其余(One vs. Rest,OvR)
- 多對多(Many vs. Many,MvM)
一對一 與 一對其余
假設有N個類別。
- OvO將這N個類別兩兩配對,從而產生N(N-1)/2個二分類任務。在測試階段,新樣本將同時提交給所有分類器,于是將得到N(N-1)/2個分類結果,最終結果可通過投票產生:即把被預測得最多的類別作為最終分類結果。
- OvR每次將一個類的樣例作為正例、所有其他類的樣例作為反例來訓練N個分類器。在測試時若僅有一個分類器預測為正類,則對應的類別標記作為最終分類結果。若有多個分類器預測為正類,則通常考慮各分類器的預測置信度,選擇置信度最大的類別標記作為分類結果。
- OvR只需訓練N個分類器,而OvO需訓練N(N-1)/2個分類器。因此,OvO的存儲開銷和測試時間開銷通常比OvR更大
- 在訓練時,OvR的每個分類器均使用全部訓練樣例,而OvO的每個分類器僅用到兩個類的樣例,因此,在類別很多時,OvO的訓練時間開銷通常比OvR更小
多對多
MvM是每次將若干個類作為正類,若干個其他類作為反類(OvO和OvR是MvM的特例)。MvM的正、反類構造可以使用最常用的糾錯輸出碼(Error Correcting Output Codes,ECOC)技術。
ECOC是將編碼的思想引入類別拆分,并盡可能在解碼過程中具有容錯性。ECOC工作過程主要分為兩步
- 編碼:對N個類別做M次劃分,每次劃分將一部分類別劃為正類,一部分劃為反類,從而形成一個二分類訓練集;這樣一共產生M個訓練集,可訓練出M個分類器
- 解碼:M個分類器分別對測試樣本進行預測,這些預測標記組成一個編碼。將這個預測編碼與每個類別各自的編碼進行比較,返回其中距離最小的類別作為最終預測結果
常用的編碼方式
- 二元碼,每個類別分別指定為正類和反類
- 三元碼,每個類別可以指定為正類、反類或者停用類
糾錯輸出碼具有一定的容錯能力
類別不平衡問題
類別不平衡(class-imbalance)指分類任務中不同類別的訓練樣例數目差別很大的情況。一般的應對方式是再縮放(rescaling)
- 直接對訓練集里的多的一類樣例進行欠采樣(undersampling),即去除一些多的一類樣例,使得正、反例數目接近,然后再進行學習
- 直接對訓練集里的少的一類樣例進行過采樣(oversampling),即增加一些少的一類樣例,使得正、反例數目接近,然后再進行學習
-
直接基于原始訓練集進行學習,但在用訓練好的分類器進行預測時,將樣例數量比例嵌入決策過程,稱為闕值移動(threshold-moving)
image
注意!
- 欠采樣法的時間開銷通常遠小于過采樣法,因為前者丟棄了很多樣例,使得分類器訓練集遠小于初始訓練集,而過采樣法增加了很多樣例,其訓練集大于初始訓練集
- 過采樣法不能簡單地對初始樣例進行重復采樣,否則會招致嚴重的過擬合;過采樣法的代表性算法SMOTE是通過對訓練集里的一類樣例進行插值來產生額外的樣例
- 欠采樣法若隨機丟棄樣例,可能丟失一些重要信息;欠采樣法的代表性算法Easy Ensemble則是利用集成學習機制,將少的一類樣例劃分為若干個集合供不同學習器使用,這樣對每個學習器來看都進行了欠采樣,但在全局來看卻不會丟失重要信息
全文參考:周志華 著 《機器學習》
轉載請注明出處,本文永久更新鏈接:小天才的雜貨鋪-個人博客