Datawhale X 李宏毅蘋果書 AI夏令營 task2

QG许诺發表於2024-08-24

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]當不同類別的樣例數不同時,會造成類別不平衡問題,解決該問題的基本策略是對資料進行“再縮放。

相關文章