小李又冒泡啦!過完國慶,感覺整個生活的節奏快起來了,要做的事情也突然多了,現在就是定期佛性更新啦,沒有更新期間還收到了不少簡信以及多了幾個粉絲,真滴感謝!
過幾天組合要匯報西瓜書的線性模型,故做個記錄。
————————————————————
線性模型
1.基本形式
線性模型從字面上來說就是一條直線或一個平面(如下圖)
從圖上可以看出,它實際上是一個函數,是可以通過學習屬性的線性組合來預測的函數,我們可以利用它完成分類或者回歸的問題。
它的函數表達形式如下:我們通常用向量表達:
通過兩個表達式,可以看到因為w的存在,使得各個屬性都分配一個權值w,可直觀地反應各個屬性在模型的重要性。這也是線性模型的可解釋性。舉個例子:上面這個表達式是對西瓜的好壞的預測,從表達式可以看出,根蒂、敲聲、色澤在判定瓜好與壞種的權重是依次下降的,也就說明了要先看根蒂其次才是敲聲和色澤。
線性模型的優點:a.形式簡單、易于建模 b.可解釋性 c.非線性模型的基礎
2.線性回歸
線性回歸問題就是試圖學到一個線性模型盡可能準確地預測新樣本的輸出值.
例如:通過歷年的人口數據預測2017年人口數量。在這類問題中,往往我們會先得到一系列的有標記數據,例如:2000-->13億...2016-->15億,這時輸入的屬性只有一個,即年份;也有輸入多屬性的情形,假設我們預測一個人的收入,這時輸入的屬性值就不止一個了,例如:(學歷,年齡,性別,顏值,身高,體重)-->15k。
有時這些輸入的屬性值并不能直接被我們的學習模型所用,需要進行相應的處理,
對于離散值的屬性,可作下面的處理:
若屬性值之間存在“序關系”,則可以將其轉化為連續值,例如:身高屬性分為“高”“中等”“矮”,可轉化為數值:{1, 0.5, 0}。
若屬性值之間不存在“序關系”,則通常將其轉化為向量的形式,例如:性別屬性分為“男”“女”,可轉化為二維向量:{(1,0),(0,1)}。2.1一元線性回歸
一元線性回歸即輸入只有一元,如下圖
那么基于這個表達式,具體推導求解如下:
①均方誤差最小化:②設置一個代價函數E(w,b)③分別對,w和b求導,E為凸函數,導數為0即為最優解
④求解得:
具體公式推導見: 南瓜書PumpkinBook2.2多元線性回歸
當輸入變為多元的時候如何解決?
通常對于多元問題,使用矩陣的形式來表示數據。在本問題中,將具有m個樣本的數據集表示成矩陣X,將系數w與b合并成一個列向量,這樣每個樣本的預測值以及所有樣本的均方誤差最小化就可以寫成下面的形式:同樣地,我們使用最小二乘法對w和b進行估計,令均方誤差的求導等于0,需要注意的是,當一個矩陣的行列式不等于0時,我們才可能對其求逆,因此對于下式,我們需要考慮矩陣(X的轉置*X)的行列式是否為0,若不為0,則可以求出其解,若為0,則需要使用其它的方法進行計算,如正則化項。2.3對數線性回歸
若y值并不是線性變化,而是在指數尺度上變化,我們該怎么辦?這時候實際上,我們只需要將指數曲線投影在一條直線上,如上圖所示,這里的對數函數起到了將線性回歸模型的預測值與真實標記聯系起來的作用。
擴展:
3.對數幾率回歸
回歸就是通過輸入的屬性值得到一個預測值,利用上述廣義線性模型的特征,是否可以通過一個聯系函數,將預測值轉化為離散值從而進行分類呢?
二分類任務輸出標記為y∈{0,1},線性模型產生的預測值是實值,需將實值z轉換為0/1值。最理想的函數是階躍函數,但實際上,階躍函數不符合聯系函數連續單調可微的特點,這時候引入對數幾率函數(這實際上也是一個sigmoid函數)。若將y看做樣本為正例的概率,(1-y)看做樣本為反例的概率,則上式實際上使用線性回歸模型的預測結果器逼近真實標記的對數幾率。因此這個模型稱為“對數幾率回歸”(logistic regression)
如何確定w和b?
利用最大似然估計:
推導過程:
4.線性判別分析(LDA)
線性判別分析(Linear Discriminant Analysis,簡稱LDA),其基本思想是:將訓練樣本投影到一條直線上,使得同類的樣例盡可能近,不同類的樣例盡可能遠。如圖所示:
想讓同類樣本點的投影點盡可能接近,不同類樣本點投影之間盡可能遠,即:讓各類的協方差之和盡可能小,不用類之間中心的距離盡可能大。欲最大化目標如下(J式子,分子為類之間的中心距離,采用歐幾里得二范式,分母為協方差之和):基于這樣的情況,LDA定義了兩個散度矩陣。因此因而可得到了LDA的最大化目標:“廣義瑞利商”。轉化為最優化求解w的問題,當求解出w后,對新的樣本進行分類時,只需將該樣本點投影到這條直線上,根據與各個類別的中心值進行比較,從而判定出新樣本與哪個類別距離最近。引入拉格朗日乘子法求解:
推廣到多分類若W是一個投影矩陣,則多分類LDA將樣本投影到N-1維空間,N-1通常遠小于數據原有的屬性數,可減小樣本點的維數,且投影過程中保持區分類別的信息,故LDA也是種監督降維技術。
5.多分類學習
現實中我們經常遇到不只兩個類別的分類問題,即多分類問題,在這種情形下,我們常常運用“拆分”的策略,通過多個二分類學習器來解決多分類問題,即將多分類問題拆解為多個二分類問題,訓練出多個二分類學習器,最后將多個分類結果進行集成得出結論。
經典的拆分策略有三種:“一對一”(OvO)、“一對其余”(OvR)和“多對多”(MvM)
OvO:給定數據集D,假定其中有N個真實類別,將這N個類別進行兩兩配對(一個正類/一個反類),從而產生N(N-1)/2個二分類學習器,在測試階段,將新樣本放入所有的二分類學習器中測試,得出N(N-1)個結果,最終通過投票產生最終的分類結果。
OvR:給定數據集D,假定其中有N個真實類別,每次取出一個類作為正類,剩余的所有類別作為一個新的反類,從而產生N個二分類學習器,在測試階段,得出N個結果,若僅有一個學習器預測為正類,則對應的類標作為最終分類結果。OvO VS OvR
從上圖可以看出:OvO和OvR相比,前者要訓練的分類器要多,因此存儲和測試開銷要相對多些。但是在訓練時,前者每個分類器只使用部分數據,后者要用全量數據,所以類別多時,OvO的訓練開銷要更小一些
MvM:給定數據集D,假定其中有N個真實類別,每次取若干個類作為正類,若干個類作為反類,若進行了M次劃分,則生成了M個二分類學習器,在測試階段(解碼),得出M個結果組成一個新的碼,最終通過計算海明/歐式距離選擇距離最小的類別作為最終分類結果。此方法需特殊的設計,正反不能隨意取。
常用的技術:糾錯輸出碼(ECOC)
舉個例子:
對訓練數據集做5次劃分:
1.標記C2為正例,其他為反例,訓練出二分類的分類器f1
2.標記C1、C3為正例,其他為反例,訓練出二分類的分類器f2
3.標記C3、C4為正例,其他為反例,訓練出二分類的分類器f3
4.標記C1、C2、C4為正例,其他為反例,訓練出二分類的分類器f4
5.標記C1、C4為正例,其他為反例,訓練出二分類的分類器f5
ECOC編碼對分類器錯誤有一定容忍和修正能力,編碼越長、糾錯能力越強。
對同等長度的編碼,理論上來說,任意兩個類別之間的編碼距離越遠,則糾錯能力越強。
6.類別不平衡問題
分類任務中不同類別的訓練樣例差別很大的情況,例如正例有900個,而反例只有100個,這個時候我們就需要進行相應的處理來平衡這個問題.
總結
——————————
終于!希望下周匯報順利!