机器学习笔记(三)线性模型
3.線性模型
3.1基本形式
線性模型(linearmodel)形式簡單、易于建模,如果能把問題都用線性模型來刻畫,那現今的世界就單調多了,好在我們的宇宙是如此的豐富,以至于需要通過更強大的非線性模型(nonlinear model)來描述。然而,線性模型作為最基本的,再復雜的也都歸于最簡單,非線性模型在很多情況下都是在線性模型基礎上通過引入層級結構或高維映射而來,分治策略思想。下面定義線性模型的基本形式:
給定由d個屬性描述的示例x=(x1;x2;...;xd),其中xi是x在第i個屬性上的取值,線性模型將會學習到一個通過屬性的線性組合來進行預測函數,即:
f(x)=w1x1+w2x2+…+ wdxd+b,用向量形式寫成:f(x)=wTx+b
其中w=(w1;w2;...;wd),w和b得到之后,模型就確定。
3.2線性回歸
線性回歸(linearregression)通過學習到一個線性模型來盡可能準確地預測實值輸出標記。這句話的意思就是說,訓練出一個線性模型的學習器,然后用來預測實值輸出。給定數據集D={(x1,y1), (x2,y2),…, (xm,ym)},其中xi=( xi1;xi2;...;xid),yi∈R。
先考慮只有一個屬性的線性回歸,即yi ≈f(xi)=wxi+b。若是離散屬性,其值之間存在序(order)關系,要將其連續化為連續值,假定屬性有k個離散屬性值,則轉化為k維向量;若是離散屬性,但值之間是無序的,在引入不恰當關系時會導致距離計算出現誤差。
有模型了,有兩點要研究了,一是求解w和b,二是衡量f(x)和y的差別。用均方誤差來度量回歸任務中的學習器性能。最小化均方誤差:
(regularization)。
線性模型簡單,但也有諸多變化。對于樣例(x,y),y∈R,定義線性回歸模型y=w Tx+b,使模型的預測值逼近真實的標記y。變化在于,能否令模型的預測值逼近y的衍生變化呢?就是說,w Tx+b=g(y),如將示例對應的輸出標記定義為指數尺度上的變化,即g(y)=lny,也就是lny= w Tx+b,折就是對數線性回歸,也就是讓e wTx+b=y。這種關系的演變,雖然還是線性回歸,但實際上已是求取輸入空間到輸出空間的非線性函數映射。一般化定義這種衍生,設g是單調可微函數(連續且充分光滑),令y=g -1(w Tx+b)或者表達為g(y)= w Tx+b,這樣的模型稱之為廣義線性模型(generalizedlinear model),其中函數g稱為聯系函數(linkfunction)。對數線性回歸g(y)=lny是一個特例。廣義線性模型的參數估計通過加權最小二乘法或極大似然法進行。極大似然估計是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以干脆就把這個參數作為估計的真實值。3.3對數幾率回歸
上文定義的廣義模型解決了分類任務的線性模型回歸學習,只需找到一個單調可微函數將分類任務的真實標記y與線性回歸模型的預測值聯系起來。
考慮二分類任務,其輸出標記y∈{0,1},而線性回歸模型產生的預測值z= w Tx+b是實值(連續的),需將z值轉化為0/1值,建立z和y的聯系。一般采用單位階躍函數(unit-step function):
回歸任務是針對連續型的,為支持分類任務(離散型),采用定義廣義線性模型來實現,其中對數幾率回歸模型就支持分類學習方法。用線性回歸模型來構建分類學習器,可以直接對分類可能性進行建模,無需事先假設數據分布,避免了假設分布不準確所帶來的問題;不僅能預測出類別,也可以得到近似概率預測,在利用概率輔助決策上很有用。另外,幾率函數是任意階可導的凸函數,在數值優化算法上可直接求取最優解。總結來說,三個優點:可對分類直接建模無需事先假設數據分布、可做近似概率預測、可直接求取最優解。機器學習算法,和統計概率的密切關系從這可看出一般,而統計概率本身所用的函數性質也很重要。或者說,機器學習算法的核心在于概率性,也就是說,機器學習的穩定性是基于概率的。有點難直白說,只能意會了。
下面就看如何估計對數幾率模型中的w和b值。
梯度下降法(gradientdescent)是一個最優化算法,通常也稱為最速下降法。常用于機器學習和人工智能當中用來遞歸性地逼近最小偏差模型。計算過程就是沿梯度下降的方向求解極小值(也可以沿梯度上升方向求解極大值)。
極大似然估計,只是一種概率論在統計學的應用,是參數估計的方法之一。已知某個隨機樣本滿足某種概率分布,但是其中具體的參數不清楚,參數估計就是通過若干次試驗,觀察其結果,利用結果推出參數的大概值。極大似然估計的思想是:已知某個參數能使這個樣本出現的概率最大,即把這個參數作為估計的真實值。極大似然估計是一種粗略的數學期望,誤差大小還要通過區間估計度量。
3.4線性判別分析
對于線性模型,上文介紹了線性回歸及其衍生的對數幾率回歸,下面介紹一種經典的線性模型。線性判別分析(Linear Discriminant Analysis,LDA),經典的線性學習方法,其思想是:給定訓練樣例集,設法將樣例投影到一條直線上,使得同類樣例的投影點盡可能接近、異類樣例的投影點盡可能遠離;在對新樣本分類時,將其投影到同樣的直線上,并根據投影點位置來確定新樣本的類別。點和線的樸素關系彰顯,這數學怎么定義呢?更關心,多分類多屬性上,如何降維投射到點上。
于是,通過這個投影減小樣本點的維數,且投影過程中使用了類別信息,因此LDA通常也被看做是一種經典的監督降維技術。
忍不住吐槽,我討厭符號數學啊,但是數學的美也正在于符號的應用,這么多符號要記住,還要記住符號內表達加減乘除。
3.5多分類學習
面對多分類學習任務時,更多時候基于二分類學習方法延伸來解決。這里順便說下多分類任務和多標記任務的區別,多分類任務是一個樣本只屬于一個分類但有多個選擇;多標記任務是一個樣本可以屬于多個分類可以一個選擇可以多個選擇。多標記任務不是多分類任務,如一幅圖像可以標注為“藍天”、“白云”、“自然”等。現在來說說多分類學習如何通過二分類學習方法實現。
不是一般性,考慮N個類別,C1,C2,…,CN,多分類學習的基本思路是拆解法,將多分類任務拆成若干個二分類任務求解。總的來說,是問題拆解和結果集成,1)先對問題進行拆解,對拆分出的每個二分類任務訓練一個分類器;2)測試時,對這些二分類任務的分類器預測結果進程集成以獲得最終的多分類結果。
拆分策略有三類:一對一,OVO;一對多,OVR,這里多就是其余的分類;多對多,MVM。顯然OVO和OVR是MVM的特例。1)OVO策略
給定數據集 ?,OVO策略將這N個類別兩兩配對,產生NX(N-1)/2個二分類任務。如將類別Ci和Cj訓練一個分類器,該分類器把數據集D中的Ci類樣例作為正例,Cj類樣例作為反例。測試階段時,新樣本提交給所有分類器去預測,得到NX(N-1)/2個分類結果,一般選擇結果被預測最多的類別作為最終結果。
2)OVR策略
每次把一個類別作為正例,其他類別作為反例,訓練N個分類器。測試時,若僅有一個分類器預測為正類,則對應的類別標記作為最終分類結果;若有多個分類器預測為正類,則考慮個分類器的預測置信度,選擇置信度最大的類別作為最終標記結果。
OVR策略只需訓練N個分類器,而OVO策略需訓練NX(N-1)/2分類器,后者存儲開銷和時間開銷都比較大;不過在訓練時,前者每個分類器均使用全部樣例,而后者每個分類器僅用到兩個類別的樣例,類別過多時,后者的開銷又比較小。二者的預測性能,取決于具體的數據分布,多數情形下差不多。
3)MVM策略
該策略每次將若干類作為正類,若干類作為反類,正反類的構造需嚴格設計,常用的技術是糾錯輸出碼(Error Correcting Output Codes,ECOC)。ECOC引入編碼思想對類別進行拆分,支持在解碼過程中的容錯性,主要工作過程分兩步:
第一步編碼:將N個類別做M次劃分,每次劃分將一部分類別作為正類,一部分類別作為反類,從而形成一個二分類訓練街,這樣一共產生M個訓練集,可訓練出M個分類器。
第二步解碼:M個分類器分別對測試樣本進行預測,這些預測標記組成一個編碼;將這個預測編碼和每個類別各自的編碼進行比較,返回其中距離最小的類別作為最終預測結果。
類別劃分通過編碼矩陣(coding matrix)指定。編碼矩陣有二元碼和三元碼兩類,前者將每個類別分別指定為正類和反類,后者在正、反類之外,還可以指定停用類(用0表示)。在解碼階段,各分類器的預測結果聯合起來形成了測試示例的編碼,將該預測編碼和各類所對應的編碼進行比較,將距離最小的編碼所對應的類別作為預測結果。比較有海明距離和歐式距離兩種計算方法。
二元碼如下表,C3無論是海明距離還是歐式距離都是最小,所以作為最終標記結果。
糾錯輸出碼的意義在于,ECOC編碼對分類器的錯誤有一定的容忍和修正能力。比如在某個分類器上預測錯誤,但整體編碼的距離計算仍能產生正確結果(即還是最短距離)。自然,對同一個學習任務來說,ECOC編碼越長,糾錯能力越強,當然是犧牲性能了,因為編碼越長,要訓練的分類器就越多。對同等長度的編碼來說,理論上,任意兩個類別之間的編碼距離越遠,則糾錯能力越強。在碼長較小時,可根據這個原則計算出理論最優編碼,然而碼長稍大一些就難以有效地確定最優編碼,這是NP難問題。
|
| f1 | f2 | f3 | f4 | f5 | 海明距離 | 歐式距離 |
| C1 | -1 | 1 | -1 | 1 | 1 | 3 | 2sqrt(3) |
| C2 | 1 | -1 | -1 | 1 | -1 | 4 | 4 |
| C3 | -1 | 1 | 1 | -1 | 1 | 1 | 2 |
| C4 | -1 | -1 | 1 | 1 | -1 | 2 | 2sqrt(2) |
| 示例預測結果 | -1 | -1 | 1 | -1 | 1 |
|
|
在理論和實踐之間,一個理論糾錯性質很好,但導致二分類問題較難的編碼,與另一個理論糾錯性質差一些,但導致的二分類問題較簡單的編碼,最終產生的模型性能強弱不定。我自己更傾向于實踐中摸索耗能低的方法。
3.6類別不平衡問題
所謂類別不平衡問題是指分類任務中不同類別的訓練樣例數差別很大,導致訓練出的學習器失真。怎么說呢?一般情況,假設分類學習任務中不同類別的樣例數時相對平衡,數目相當的,如果有所傾斜,而且比例很大,那就失去意義了。如果假定樣例中正例很少、反例很多,在通過拆分法解決多分類問題時,即使原始問題中不同類別的訓練樣例數目相當,在使用OVR、MVM策略后產生的二分類任務仍可能出現類別不平衡現象。
對線性分類器y=wTx+b來說,對新樣本x進行分類時,將y值和一個閾值進行比較,分類器的決策規則是:若y/(1-y)>1,則預測為正例。當訓練集中正、反樣例數目不等時,令m+代表正例數目、m-代表反例數目,則觀測幾率是m+/m-,通常假設訓練集是真實樣本總體的無偏采樣,因此觀測幾率就代表了真實幾率,于是只要分類器的預測幾率高于觀測幾率就可判定為正例,即:y/(1-y)> m+/m-,則預測為正例。如果從根源上可以做到無偏采樣,那就沒有類別不平衡問題,可惜一般情況下都無法實現,于是只好找到類別不平衡的解決方法。
再縮放,類別不平衡問題解決方法的一個策略。如上文線性分類器,調整預測值:? 正如上文說的,無法做到無偏采樣,觀測幾率也會失真,未必能有效地基于訓練集觀測幾率來推斷出真實幾率。有三類做法來改正:1)欠采樣,去除一些反例,使得正反例數目相當;2)過采樣,增加一些正例,使得正反例數相當;3)基于原始訓練集學習,但用訓練好的學習器進行預測時,對輸出結果進行閾值移動(threshold-moving)。
欠采樣少了訓練樣例,過采樣多了訓練樣例,二者開銷自然是后者大了。另外過采樣,如果是對原始訓練集重復采集正例,則會出現嚴重的過擬合,可通過對訓練集里的正例進行插值來產生額外的正例,代表性算法是SMOTE。欠采樣法同樣面臨問題,如果隨機丟失反例,可能失去信息,可利用集成學習機制,將反例劃分為若干個集合供不同學習器使用,對單個學習來說是欠采樣,但整體來說并沒有缺失也就不會丟失信息。
?
總結
以上是生活随笔為你收集整理的机器学习笔记(三)线性模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java-POI操作excel清除单元格
- 下一篇: 机器学习知识点(四)最小二乘法Java实