模型
一、線性模型(linear model)
(一)線性迴歸
1.一元線性迴歸
1.1公式表示:
f(x)=wxi+b
向量形式
1。2線性迴歸模型的
好處
:
簡單、可理解
1.3線性迴歸模型因變數是離散變數的處理方法:
如果屬性是
離散的,有序的
,則可以編碼為0-1-2……,例如西瓜的甜度由不甜-稍甜-特甜,之間有程度的加深,可以比較,因此可以編碼為數字,大一點的數字意味著強度更高;
如果屬性是
離散,非有序
的,則可以進行
“one-hot”
獨熱編碼,將結果變成
k維向量
進行迴歸。(如果編碼為0123的話,機器學習會誤以為有“序”的關係)
1.4使線性迴歸模型結果的誤差最小化方法
均方誤差最小化,即最小二乘法,
使得
最小,將f(x)=wxi+b代入,即E(w,b)=
最小化,轉化成了
對w,b求梯度
,
導數為0的點
,得到
閉式解(closed-form)
,套公式就可以求出w,b;
2.多元線性迴歸(multi-variate)
實際中可能需要擬合多個特徵,同時考慮多個特徵來預測輸出,需要找到超平面去逼近結果
2。1公式: f(xi)=w
xi+b,xi=(xi1,xi2,xi3,xi4……)
2。2多元線性迴歸同樣採用
最小二乘法
進行求解,對w,b進行求導,閉式解,這裡涉及矩陣求逆,在處理高維資料時,閉式解不一定合適,可以根據實際情況選擇梯度下降等其他最佳化方法。這裡補充幾個矩陣的基本知識:
逆矩陣
:倒數矩陣,A的逆矩陣記作A-1,不是所有矩陣都有逆矩陣,滿秩(橫/列與其他橫列有線性關係)或正定有逆矩陣;
單位矩陣
:對角線數值為1,其他數值為0;
對角矩陣
:對角線上有值,其他位置為0,對角矩陣相對來說比較好求逆矩陣。
2.3線性模型變化
透過
對變數(輸入)進行線性或非線性變化
,使得線性模型結果更好地逼近真實值,原始輸入和輸出不是線性關係,透過變化原始輸入,可以與
輸出建立線性關係
,拓展了線性模型的使用
——-取對數,
=x
——-開根號
lnx ——-取指數次方
=x
……
(二)線性分類模型
1.邏輯迴歸
實際輸出z=w
x+b,而期望輸出(0,1),就需要中間函式進行轉換:
如上圖,是一個不不連續函式,性質不好,需要找替代函式,於是找到
“對率函式”(對數機率函式,logistic function),具有單調可微、任意階可導的優點
:
sigmoid函式
注意:
使用對率函式進行二分類的過程被稱為對率迴歸,又稱logistic regression邏輯迴歸,但是這裡logistic不是“邏輯”,源自logit而不是logic,
邏輯迴歸是用來解決分類問題的
,輸出的是實數值,而不是“非0即1”的邏輯值。
1.1理解對率迴歸
以對率函式為聯絡函式:
變為
,
即
,其中y指x被分為正例,1-y指x被分為負例,
叫做“機率”(odd),反映了x作為正例的相對可能性,
叫做
“對數機率”
(log odds,亦稱“logit”)
1.2對率迴歸的優點
:
無需事先假設資料分佈
(我們直接假設預測值是線性模型,透過sigmoid函式將預測值壓縮到0到1之間,相當於求的是後驗機率,然後可以進行最佳化或分類,整個過程中並沒有對資料的分佈進行假設)
可得到“類別”的近似機率的預測
可直接應用現有數值最佳化演算法求最優解
1.3求解w,b思路
相當於給定一個樣本,透過sigmoid函式得到了該樣本的機率分佈,把後驗機率想象成一個
伯努利分佈
,給後驗機率進行最大似然估計,
“極大似然法”
:可簡單理解為
預測正確機率的乘積
,越高越好,連乘不好估計,透過取ln的形式將連乘轉化為求和,取-ln將求和最大變成求和最小,透過數值最佳化方法去求解w,b,得到線性函式的引數
1。4經典數值最佳化方法
梯度下降:
迭代方法,取負梯度的方向下降乘以一定學習率,不斷更新引數,逐漸收斂
牛頓法:
用
簡單的二次函式去模擬複雜函式
,在初始點上,二次函式和原始函式的
梯度值吻合
,然後使用
二次函式的最小值的點在原始函式上更新
,不需要學習步長,次數不需要那麼多,但是每次的計算量大,要求原始函式必須是二階可導的。
2.線性判別分析(Linear Discriminant Analysis,簡稱LDA)
logit函式透過刻畫某一類的後驗機率進行分類,並沒有關注類內情況如何。
線性模型隱藏著一個降維的過程,相當於把一個高維向量投影到一個一維的軸上,在這個軸上進行分類,所以做怎樣的投影至關重要。
這種線性模型分類的思路叫做線性判別分析。
投影目標:
類內距離儘可能小,類間距離儘可能大
LDA目標:
最大化廣義瑞利商
,數學表示(部分過程)
數學的具體推導求解過程就不放了。。。。這裡講一個
“奇異值分解”(SVD)
:為了方便求逆矩陣,透過SDA 演算法,
把一個矩陣拆成三個矩陣相乘,其中有一個矩陣是對角矩陣
,即只有對角線上有值,求逆矩陣變得簡單。
2。1
LDA vs PCA
LDA vs PCA相同點:
兩者均可以對資料進行
降維
;
兩者在降維時均使用了
矩陣特徵分解
的思想;
兩者都假設資料符合
高斯分佈
。
LDA vs PCA不同點:
LDA是
有監督
的降維方法,而PCA是
無監督
的降維方法;
LDA降維最多降到類別數
k-1
的維數,而PCA沒有這個限制;
LDA除了可以用於降維,還可以用於分類;
LDA選擇分類效能最好的投影方向,
最大均值
的方向,而PCA選擇樣本點投影具有
最大方差
的方向。這點可以從下圖形象的看出,在某些資料分佈下LDA比PCA降維較優。
LDA優於PCA
某些方差大的資料,PCA優於LDA
2.2LDA演算法小結:
LDA演算法既可以降維,又可以分類,
主要用於降維
,比如進行影象識別相關的資料分析時。
LDA演算法優點:
在降維過程中可以使用
類別的先驗知識
,而PCA則無法使用類別先驗知識;
當LDA在樣本分類資訊依賴
均值
而不是方差時,比PCA優;
LDA演算法缺點:
和PCA一樣,不適合對非高斯分佈樣本進行降維;
LDA最多降到類別數
k-1維
;
當LDA在樣本分類資訊依賴
方差
而不是
均值
時,降維效果不好;
LDA可能過度擬合數據
3.線性多分類學習
(1)拆解法:
將一個多分類任務拆解成若干個二分類任務,主要有兩種情況,各有優缺點:
OVO:遍歷所有兩兩組合的分類,每次都訓練一個平衡的資料集,訓練n(n-)/2個分類器,儲存和測試時間長,訓練只用到兩個類的樣例,訓練時間短;
OVR:每次把其中一個類別作為正類,其他所有類別作為負類進行訓練,每次的訓練集是不平衡的,訓練n個分類器,儲存和測試時間小,訓練用到所有資料,訓練時間長。
(2)糾錯輸出碼(ECOC)
多對多(Many to Many,MvM):將若干類作為正類,若干類作為負類
f1到f5是5個分類器,C1到C4是4類,每一組樣本丟給一個分類器後,隨機分成“-1”和“﹢1”兩類,新的測試示例丟進去後,根據每個分類器隨機分類的結果與之前的幾個分類作比較,計算海明距離(分錯的個數)或歐式距離,判斷分為哪一類。
ECOC編碼對分類器錯誤有一定容忍和修正能力,編碼越長,糾錯能力越強。
4. 類別不平衡問題
(1)再縮放方法(rescaling)
不同類別的樣本比例差距很大,基本思路(相當於改變了機率函式的閾值問題):
但是精確估計
很困難,於是有其他方法解決類別不均衡問題:
(2)過取樣(oversampling)
例“SMOTE“,在兩分類問題種,假設拿到的訓練資料正類少,透過在兩個正類間做差值“增補正類”,使得正負類別均衡
(3)欠取樣(undersampling)
例”EasyEnsemble“,在兩分類問題種,減少負類樣本,使得正負類一樣,在負類樣本中隨機抽和正類數目一樣的量
(4)閾值移動(threshold-moving)