1. 程式人生 > >Chapter 3 Linear Model

Chapter 3 Linear Model

第三章、線性模型

&3.1 基本形式

*f(x)=(w^T)*x+b其中,w=(w1,w2,…,wd),x=(x1,x2,…,xd);
*線性模型形式簡單,易於建模,有很好的可解釋性,對於機器學習來說十分基本且重要
*許多功能強大的非線性模型可線上性模型的基礎上通過層級結構和高維對映而得

&3.2 線性迴歸

*資料集D={(x1,y1),(x2,y2),…,(xm,ym)},其中xi=(xi1,xi2,…,xid)
對資料中的離散屬性,若有序可將其離散化,若無序則可以用one-hot編碼
確定w和b的關鍵在於衡量f(xi)與y之間的差別。其中最常用的是均方誤差(用到了歐氏距離):
(w

,b) = arg min(∑(f(xi)-y)^2)(一元迴歸中用最小二乘法,將式子分別對w和b求導等於零)
*當處理多元線性迴歸時,把w和b吸入向量形式w:
w=(XTX)(-1)XTy,其中(XTX)為滿秩矩陣或正定矩陣
*當然現實中往往難以使(X^TX)滿秩,某些專案中甚至存在變數數多於樣例數,導致X的列數多於行數,此時可求解出多個
w,他們都能使MSE最小化。在其中做出選擇,往往需要由學習演算法決定,常見的做法是引入正則化項。
*廣義線性模型:f(x)=g(-1)((wT)*x+b),其中,對數線性迴歸是個g(.)=ln(.)的特例

&3.3 對數機率迴歸

*對於二分類問題,我們需要的輸出標記為y∈{0,1},因此,我們需要將線性迴歸模型產生的預測值轉換為0/1
最理想的轉換方式為“單位躍階函式”(Heaviside函式,unit-step function),即z>0為正例,z<0為反例,z=0則任意
但是單位躍階函式不連續,不能直接用作g^(-1)(.)因此引入在一定程度上可以近似單位階躍函式的“替代函式”(surrogate function)
並且單調可微,那就是我們常見的Sigmoid函式中的對數機率函式(logistics function):
y=1/(1+e^(-z))
該式可轉換為:ln(y/(1-y))=z=(w^T)*x+b,其中我們把y看做所求結果的正例可能性,相應的1-y則為反例可能性,兩者的比值稱為比率,
所以該函式稱為對數機率函式。
*綜上,我們瞭解到我們構造這樣的廣義線性模型,可以用其預測結果去逼近真實標記的對數機率。對應的模型稱為“對數機率迴歸”(Logistic regression)
當然,實際上它服務的是分類學習方法。他的優點有:它直接對分類可能性進行建模,無需對資料的先驗分佈,這對需用概率輔助決策的任務很有用。
對於對數機率函式的變式,我們可以求出後驗正例可能性:p(y=1|x)=(e((w

T)x+b))/(1+e((wT)x+b));
反例可能性:p(y=0|x)=1/(1+e((wT)x+b));那麼,在呈現這2個式子時,為了求解w和b,我們用極大似然法來估計。對率迴歸模型最大化
“對數似然”:
l(w,b)=∑ln(p(yi|xi;w,b)),再用β=(w;b),將該似然項重寫為p(yi|xi;w,b)=yip1(xi;β)+(1-yi)p0(xi;β)
通過將其的最大化轉換為最小化:l(β)=∑(ln(1+eT
xi))-yi
β
xi)(該式為關於β的高階可導連續凸函式,)
利用凸優化理論,隨後利用梯度下降法或牛頓法等求出β。λx+(1−λ)y∈X,對於任意的 λ∈(0,1)
牛頓法
:初始點出發,找切線於與x軸的交點,以此為下一初始點繼續構造切線,重複迭代直到導數為0或迭代至最大(最好是凸函式不然初始點的選擇
可能)造成越找越錯
梯度下降法:從初始點開始,找該點的梯度向量(就是函式變化增加最快的地方),要梯度向量具體來說,對於函式f(x,y),在點(x0,y0),
沿著梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函式的最大值。
反過來說,沿著梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度減少最快,也就是更加容易找到函式的最小值。

&3.4 線性判別分析(Linear Discriminant Analysis,LDA)

*區分LDA與Fisher判別分析在於LDA假設了各類樣本的協方差矩陣相同且滿秩
*LDA的主要思想就是給定訓練樣例集,將其投影到一條直線上使其能有效分類,分類的效果,取決於類內散度矩陣與類間散度矩陣的廣義瑞利商,越大越好
確定投影向量w的方法:規定類內散度矩陣投影到直線上的值為1,求負的類間散度矩陣的最小值,其中有一點,類間散度矩陣Sbw的方向為兩類在
直線上的中心點所呈現出的方向。
*Bayes角度:
*多分類任務中,引入全域性散度矩陣St。
*由於LDA往往具有對映性,所以常常也被視為一種經典的監督將為技術。

&3.5 多分類學習

*拆分策略一般包括:OvO:將N個類別兩兩分類,從而產生N(N-1)/2個二分類任務,OVR:每次將一個類別作正例,其他類別一起做為反例去訓練分類器,;
若測試結果只有一個正例,則將對應的類別標記為最終結果,若有多個分類器預測為正類,則考慮選擇預測置信度最大的。可見OvR只訓練N個分類器;
*MvM:上述兩種實際上是MvM的特例,MvM每次從所有類中選取若干類為正,若干類為負進行分類訓練,不過MvM的正反類構造必須有特殊的設計,常用的技術為
“糾錯輸出碼”(Error Correcting Output Codes,ECOC),即第一步:編碼:做M次二分類劃分,這樣一共產生M個訓練集,M個分類器;第二步:解碼:
用M個分類器分別對測試樣本進行預測,將其結果組成一個編碼。將該編碼與各自編碼比較,返回距離最小的類別即是該測試集類別。

&3.6 類別不平衡問題(class-imbalance)

*若不同類別的訓練樣例數目不相關,我們之前用的分類方式可能就顯得雞肋了。類別不平衡問題就是指分類任務中不同類別的訓練樣例數目差別很大的問題。
*解決方法:設訓練集中有m+個正例,m-個反例,於是,用該訓練集訓練出的分類器預測機率(y/1-y)>(m+/m-)才預測為正例。為此,我們需要使用一個基本策略
——‘再縮放’(rescaling),however,實際上我們連保證樣本是總體的無偏取樣都做不到,所以再縮放往往是很困難的,這又需要我們引入如下三種技術:
1)欠取樣,即去除一些反例是正反例數目接近
2)過取樣,增加樣本中的正例數目
3)基於原始訓練集,但再縮放強行使用