《機器學習》學習筆記(三)——線性模型

機器學習(Machine Learning)是一門多學科交叉專業,涵蓋概率論知識,統計學知識以及複雜算法知識,使用計算機作爲工具並致力於真實實時的模擬人類學習方式, 並將現有內容進行知識結構劃分來有效提高學習效率。本專欄將以學習筆記形式對《機器學習》的重點基礎知識進行總結整理,歡迎大家一起學習交流!
專欄鏈接:《機器學習》學習筆記

目錄

1 線性模型的基本形式

2 線性迴歸(linear regression)

2.1 對離散變量的處理

2.1.1 若樣本只有一個屬性

2.1.2 若樣本只有多個屬性(多元線性迴歸)

2.2 廣義線性模型(y的衍生)

2.3 對數機率迴歸(用線性模型做分類任務)

求解思路

3 線性模型做“分類”

3.1 線性判別分析(LDA)

3.2 LDA的目標(線性判別分析的目標)

3.2.1 LDA的目標

3.2.2 求解思路

3.2.3 推廣到多類

3.3 多分類問題的拆分辦法

3.4 多分類學習

3.5 糾錯輸出碼(Error Correcting Output Code)

3.6 類別不平衡

4 總結

歡迎留言,一起學習交流~~~

END


1 線性模型的基本形式

線性模型要做的有兩類任務:分類任務、迴歸任務

分類的核心就是求出一條直線w的參數,使得直線上方和直線下方分別屬於兩類不同的樣本
       
迴歸就是用來擬合儘可能多的點的分佈的方法,我們可以通過擬合的直線知道一個新樣本的相關數值
        
線性模型:試圖學得一個通過屬性的線性組合來進行預測的函數,即:
              
上述公式可簡寫成向量形式簡單、基本、可理解性好
               w是參數向量,x是屬性向量
具體而言,首先對模型w1、w2……wd進行學習,主要通過公式Y=wX確定(列方程組求出w),Y即f(x),X即(x1,x2,……,xd)亦即樣本點的d個屬性值,第一步也就是訓練過程。訓練好之後,進入測試過程,通過得知的w1、w2……wd,已知另一個新的樣本屬性x及可求出其對應的y值。對於分類問題來說,y值趨近於0則屬於第1類樣本,y趨近於1則屬於第2類樣本;對於迴歸問題來講,通過上述公式求出的是新樣本點對應的函數值。

在線性模型的基礎上通過引入層級結構或高維映射可得到許多功能更爲強大的非線性模型(nonlinear model)。
層級結構:類似f(x)=w(w(wx+b)+b)b……

2 線性迴歸(linear regression)

線性迴歸(linear regression)試圖學得一個線性模型以儘可能地預測實值輸出標記。

2.1 對離散變量的處理

①若屬性值之間存在序關係,可通過連續化將其轉換爲連續值
           如:個子的高中低按有序排列對應{1, 0.5, 0}
②若屬性之間不存在序關係,假定屬性值有k個,則通常轉化爲k維向量(One-Hot)
           如:瓜類的取值黃瓜,西瓜,冬瓜,三類屬性值轉化爲三維向量
                  若規定取值(黃瓜,西瓜,冬瓜),那麼比如冬瓜,對應位置標1,其餘位置標0,
                  進一步而言,可轉化爲冬瓜(0,0,1),西瓜(0,1,0),黃瓜(1,0,0)

離散屬性的處理:若有“序”(order),則連續化;否則,轉化爲 k 維向量。

2.1.1 若樣本只有一個屬性

             
令均方誤差最小化,有(求最優參數
            
其中是擬合直線預測的結果值,是真實的結果值
      意味着對求出預測值與真實值相差最小的樣本的w和b

     是將公式帶入上式的結果,由於=,故上兩式相等
進行最小二乘參數估計(名字由來是對參數w和b求min且取平方值)

對E(w,b)關於w , b求一階偏導,再令導數爲0則可得w , b最優解的閉式解:
                 
                    
兩個參數,所以求偏導。
令導數爲 0, 得到閉式(closed-form)解(U型函數如f(x)=x^2通常爲凸函數,對凸函數求導=0可得w,b最優解的閉式解):
                    
                         

2.1.2 若樣本只有多個屬性(多元線性迴歸)

更一般的情況,樣本由多個屬性描述。給定數據集,其中
此時線性迴歸模型試圖學得:(本文前面提到過該式的由來,這裏就不在贅述)
此即爲多元線性迴歸(multivariate linear regression)
類似的,我們可以利用最小二乘法來對w和b進行估計

根據上述內容,我們已經知道
                                                
b吸收入向量形式,數據集表示爲
               
                

 

:我們把w和b寫成向量形式=(w,b) 把數據集D表示成m(d+1)的矩陣X。
       上述中m表示樣本數,d表示屬性數
       每一行對應一個示例,該行前d個元素表示d個屬性值,最後一個爲1(常數項b係數爲1)

那麼同樣,我們在稍前一點的單屬性樣本公式
亦可用這裏所述的矩陣形式表示:
                              
前面也講過,求最優解也就是求導且令導數爲0,則這個點就是最優樣本點。
  令,對求導,
                               
  令其爲零可得
然而,麻煩來了:涉及矩陣求逆!
這就得分兩種情況討論了:
(不滿秩簡單理解就是樣本數目比方程數目中未知數個數要少)
滿秩或正定,則
不滿秩,則可解出多個
對於情況②,就需求助於歸納偏好,或引入正則化。具體而言,對於解出的多個,它們都能使均方誤差最小化,選擇哪一個作爲輸出,將由學習算法的歸納偏好決定,常見做法是引入正則化(regularization)項

2.2 廣義線性模型(y的衍生)

爲了便於討論,我們把線性迴歸模型簡寫爲
若我們認爲示例所對應的輸出標記不是在線性尺度上而是在指數尺度上變化,那就可將輸出標記的對數作爲線性模型逼近的目標 
具體做法是取對數壓縮,即
此即爲對數線性迴歸(log-linear regression),它形式上仍是線性迴歸,但實質上是求取輸入空間到輸出空間的非線性函數映射
      

對數函數起到了將線性迴歸模型的預測值與真實標記(指數函數的y)聯繫起來的作用

對於樣例若希望線性模型的預測值逼近真實標記,則得到線性迴歸模型
實際是在用逼近y

因此,更一般地,我們可推廣到一個廣義線性模型(generalized linear model)
考慮單調可微函數g(⋅) (連續且充分光滑),令
                                                          

函數g(⋅) 稱爲“聯繫函數”(link function)
顯然,對數線性迴歸(log-linear regression)就是廣義線性模型在時的特例
                                                           
當然,廣義線性模型也可進行均方差誤差最小化呢且通常,廣義線性模型的參數估計通過加權最小二乘法或極大似然法進行。

2.3 對數機率迴歸(用線性模型做分類任務)

根據上述公式可利用線性模型做分類任務,具體而言,利用單調可微函數將分類任務的真實標記y與線性迴歸模型的預測值z聯繫起來。
二分類的真實標記y∈{0,1},而線性迴歸模型產生的預測值,爲實值,則可將z對應到{0,1}裏,最理想的是單位階躍函數(unit-step function):
                             
即線性模型的預測值z大於零就判定爲正例,小於零就判定爲反例,爲臨界值0時則可任意判定

 不連續,不符合“聯繫函數”的要求,故引入對數機率函數作爲替代函數。

單位階躍函數和對數機率函數

 

 

很顯然,対率函數曲線的特性近似於階躍函數,它是一種“Sigmoid函數”,它將z值轉化爲一個接近0或1的y值,其輸出值在z=0附近變化很陡。

對數機率函數(Sigmoid函數)
                                         

將對數機率函數作爲帶入中得:
                                      
轉化爲線性形式則爲:
                                      
這裏給出轉化形式的推導過程
                  令           
                  則          
                              
                              
                  兩側取對數
                   即           
                 亦即          
實際上上式是在用線性迴歸模型的預測結果去逼近真實標記的對數機率
若將y看做樣本x作爲正例的可能性,則1−y是其反例的可能性,兩者的比值稱爲 “機率”, 反映了x作爲正例的相對可能性,則爲對數機率(log odds,亦稱logit)

事實上,在上述內容中,線性迴歸模型產生的實值輸出
                                                                        期望輸出
所以要找y和z的聯繫函數,也就是稍前所述的理想的“單位階躍函數”
                                   

對數機率迴歸的優點:
•   無需事先假設數據分佈
•   可得到“類別”的近似概率預測
•   可直接應用現有數值優化算法求取最優解

求解對數機率迴歸模型的w和b
首先,我們將式    中的
                      y視爲類後驗概率估計 p(y=1|x) ,即在 x 條件下 y=1 的概率
                      則1-y即可表示爲 p(y=0|x)
                      且有 p(y=1|x) + p(y=0|x) = 1
於是,式      可寫成
                      
更進一步,有
                      
這裏我們用極大似然法來估計w和b
給定數據集,其中是數據,是標籤,對率迴歸模型最大化“對數似然”(log-likelihood)
                       
利用上式,在已知數據,參數w和b條件下,可求出概率最大化的結果

求解思路

若將 y 看作類後驗概率估計 p(y=1|x),則
                                
 
          可寫成
                               
 
         於是,可使用“極大似然法”(maximum likelihood method)
         給定數據集 
 
        最大化“對數似然”(log-likelihood)函數
                               

         令 ,則 可寫成   
         再令
                   
         則似然項可重寫爲
                  
         於是,最大化似然函數          
         等價爲最小化                    
高階可導連續凸函數,可用經典的數值優化方法如梯度下降法/牛頓法 [Boyd and Vandenberghe, 2004]

總結一下,廣義線性模型實際上就是通過“聯繫函數”聯繫起來的:
                如對數機率函數就是
時的特殊情況;
                而一元或多元函數就是g(·) = 1 時的情況。

3 線性模型做“分類”

3.1 線性判別分析(LDA)

由於將樣例投影到一條直線(低維空間),因此也被視爲一種“監督降維”技術(降維)
        
由於的轉置,他們之間在圖像上呈現正交關係,故上圖中的存在有利於求出分開兩類樣本的直線的參數

分類算法常見的有:LDA、PCA、ICA等

3.2 LDA的目標(線性判別分析的目標)

3.2.1 LDA的目標

LDA的目標是最小化類內的投影點,最大化類間的投影點

給定數據集,其中,是樣本屬性值,是樣本標籤,且數目是從1到m共m個樣本
        第 i 類示例的集合         
        第 i 類示例的均值向量         
        第 i 類示例的協方差矩陣 
        兩類樣本的中心在直線上的投影:
        兩類樣本的協方差:
同類樣例的投影點儘可能接近   儘可能小
異類樣例的投影點儘可能遠離    儘可能大
於是,最大化
                 
注:使分子越大,分母越小,得到最大化,即用一個式子滿足兩種目標要求
類內散度矩陣 (within-class scatter matrix)
                    
類間散度矩陣 (between-class scatter matrix)
                    
LDA的目標:最大化廣義瑞利商 (generalized Rayleigh quotient)
                       
w 成倍縮放不影響 J 值,僅考慮方向

3.2.2 求解思路

令  ,最大化廣義瑞利商等價形式爲
                           
運用拉格朗日乘子法,有
                            
的方向恆爲,不妨令
  (不僅有方向,且有大小)
於是
                             
實踐中通常是進行奇異值分解     
                                
然後
                              

3.2.3 推廣到多類

上述問題討論的是二分類問題

那麼現在,我們假定有 N 個類

多分類LDA有多種實現方法:採用中的任何兩個
                                  
                                      
的閉式解是的 N-1 個最大廣義,特徵值所對應的特徵向量組成的矩陣

3.3 多分類問題的拆分辦法

3.4 多分類學習

拆解法:將一個多分類任務拆分爲若干個二分類任務求解

OvO:訓練N(N-1)/2個分類器, 存儲開銷和測試時間大;訓練只用兩個類的樣例, 訓練時間短
OVR:訓練N個分類器,存儲 開銷和測試時間小;訓練用到全部訓練樣例, 訓練時間長

預測性能取決於具體數據分佈,多數情況下兩者差不多

3.5 糾錯輸出碼(Error Correcting Output Code)

多對多(Many vs Many, MvM): 將若干類作爲正類,若干類作爲反類
一種常見方法:糾錯輸出碼(Error Correcting Output Code)


上圖中二元意味着這個問題是二分類問題,三元意味着這個問題是三種分類情況問題
其次,
上圖(a)對4個類別C1、C2、C3、C4做5次劃分f1、f2、f3、f4、f5
            做五次劃分,就會形成長度爲五的編碼
            第一次劃分f1將C1、C3、C4劃分爲反類,將C2劃分爲正類
            第二次劃分f2將C2、C4劃分爲反類,將C1、C3劃分爲正類
             ……
            海明距離:五次劃分下的測試示例(編碼)分別與其對應的類別Cx做運算,若是不同類(不同色),則+1
                              因此分別爲3、4、1、2
            歐氏距離:簡單而言,就是相減平方求和再開方
                             如C1:
其餘算法與圖(b)同理,這裏就不再贅述。

☆ECOC編碼對分類器錯誤有一定容忍和修正能力,編碼越長、糾錯能力越強
☆對同等長度的編碼,理論上來說,任意兩個類別之間的編碼距離越遠,則糾錯能力越強

3.6 類別不平衡


不同類別的樣本比例相差很大(類別不平衡問題);“小類”往往更重要     

基本思路:

基本策略     ——“再縮放”(rescaling):
                      
然而,精確估計 m-/m+ 通常很困難!

常見類別不平衡學習方法:
•  過採樣 (oversampling)       
例如:SMOTE
•  欠採樣 (undersampling)     例如:EasyEnsemble
•  閾值移動 (threshold-moving)

4 總結

[1]線性模型是一個形式簡單、易於建模的機器學習模型,因爲w直觀表達了各屬性在預測中的重要性,因此線性模型有很好的可解釋性。
[2]線性迴歸背後的邏輯是用模型的預測值去逼近真實標記y,並通過計算訓練樣本在向量空間上距離模型線的歐式距離之和的最小值來確定參數w和b。
[3]線性迴歸可寫成廣義線性模型形式:g(y) = wx + b,通過選擇不同的聯繫函數  g(.)會構成不同的線性迴歸模型。
[4]在遇到多分類學習任務時,基本的解決思路是“拆解法”,即將多分類任務拆爲若干個二分類任務求解。
[5]當不同類別的樣例數不同時,會造成類別不平衡問題,解決該問題的基本策略是對數據進行“再縮放。


歡迎留言,一起學習交流~~~

感謝閱讀

END

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