機器學習西瓜書(周志華)第三章 線性模型 (LR 對數機率函數\LDA\類別不平衡)

1. 線性迴歸

1.1 基本形式:

在這裏插入圖片描述
許多功能更爲強大的非線性模型可通過在線性模型的基礎上通過引入層級結構或者高維映射得到。

若將無序屬性連續化,則會不恰當的引入序關係,對於後續處理如距離計算等造成誤導。
均方誤差又稱爲平方損失

手動推導
在這裏插入圖片描述
現實任務中 XTX 往往不是滿秩矩陣,在許多任務中屬性的數目甚至會超過樣例數,從而導致 X 的列數多於行數,此時會有多個解ωˆ 使得均方誤差最小化,具體選擇哪一個解作爲輸出將由學習算法的歸納偏好設定,常見的做法是引入正則化項。

1.2 對數線性迴歸

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2. 對數機率迴歸(logistic regression)

2.1 對數機率函數(logistic function)

在這裏插入圖片描述
對數機率函數(Sigmoid函數)在一定程度上近似單位階躍函數的替代函數,並且單調連續可微,形式:
y=11+ez y = \dfrac{1}{1+e^{- z}}

2.2 用極大似然求解

極大似然法:樣本都是獨立同分布的,通過若干次試驗,利用試驗結果得到某個參數值能夠使樣本出現的概率最大。
在這裏插入圖片描述
上式是關於β\beta的高階可導連續凸函數(函數二階導非負),經典的數值優化算法如梯度下降法、牛頓法等都可求得其最優解

2.3 LR的多分類問題

二分類問題

3. 線性判別分析

線性判別分析LDA(Linear Discriminant Analysis) LDA在模式識別領域(如人臉識別、航艦識別等圖像識別領域)中有非常廣泛的應用。
在學習LDA之前,有必要將自然語言處理領域中的LDA做出區分,在自然語言處理領域, LDA是隱含狄利克雷分佈(Latent Dirichlet Allocation,簡稱LDA),他是一種處理文檔的主題模型。我們本文只討論線性判別分析,因此後面所有的LDA均指線性判別分析。
LDA是一種監督學習的降維技術,也就是說他的數據集的每個樣本是有類別的輸出,這一點與PCA不同,PCA是不考慮樣本類別輸出的無監督降維技術。LDA思想的的概括:“投影后類內方差最小,類間方差最大”。我們要將數據在低維度上進行投影,投影后希望每一種類別數據的投影點儘可能的接近,而不同類別的數據的類別中心之間的距離儘可能的大。

可能還是有點抽象,我們先看看最簡單的情況。假設我們有兩類數據 分別爲紅色和藍色,如下圖所示,這些數據特徵是二維的,我們希望將這些數據投影到一維的一條直線,讓每一種類別數據的投影點儘可能的接近,而紅色和藍色數據中心之間的距離儘可能的大。

在這裏插入圖片描述

上圖中提供了兩種投影方式,哪一種能更好的滿足我們的標準呢?從直觀上可以看出,右圖要比左圖的投影效果好,因爲右圖的紅色數據和藍色數據各個較爲集中,且類別之間的距離明顯。左圖則在邊界處數據混雜。以上就是LDA的主要思想了,當然在實際應用中,我們的數據是多個類別的,我們的原始數據一般也是超過二維的,投影后的也一般不是直線,而是一個低維的超平面。
在這裏插入圖片描述

1)LDA原理
[https://www.cnblogs.com/pinard/p/6244265.html]
[https://www.cnblogs.com/liuyc/p/6151892.html]

在這裏插入圖片描述
線性判別分析——多分類任務
在這裏插入圖片描述
一種有監督的降維技術,但是目前用的比較少了。

2)LDA算法流程

在這裏插入圖片描述

以上就是使用LDA進行降維的算法流程。實際上LDA除了可以用於降維以外,還可以用於分類。一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分佈,這樣利用LDA進行投影后,可以利用極大似然估計計算各個類別投影數據的均值和方差,進而得到該類別高斯分佈的概率密度函數。當一個新的樣本到來後,我們可以將它投影,然後將投影后的樣本特徵分別帶入各個類別的高斯分佈概率密度函數,計算它屬於這個類別的概率,最大的概率對應的類別即爲預測類別。

4. 多分類學習

4.1 利用二分類學習器解決多分類問題

多分類的基本思路:“拆解法”,即將多分類任務拆分成若干個二分類任務求解。
具體操作:(1)先對問題進行拆分;(2)爲每個拆分的二分類問題訓練一個分類器;(3)測試時,對這些分類的預測結果進行集成已獲得最終的分類結果。**關鍵點在於:如何對多分類問題進行拆分,以及如何對多個分類器進行集成。

4.2 最經典的拆分策略(OvO,OvR,MvM)

(1)一對一(One vs. One),數據集一共有N個類別,按照一對一拆分得到(N-1)*N/2種可能,即一共得到(N-1)*N/2個分類器,在測試階段將新樣本放入各個分類器中,最終結果通過投票產生,被預測最多的類型作爲最終的分類結果。
在這裏插入圖片描述
(2)一對剩餘(One vs. Rest):數據集一共有N個類別,挑選一類爲正類,其他剩餘的樣本爲反類,一共得到N個分類器,在測試時若僅有一個分類器預測爲正類,則對應的類標記爲最終分類結果,若有多個分類器預測爲正類,則通常考慮各分類器的預測置信度,選擇置信度最大的類別標記作爲分類結果。
在這裏插入圖片描述
圖片參考:[https://blog.csdn.net/qq_22238533/article/details/77774223]

OvO和OvR的優缺點:

  • OvO有(N-1)*N/2個分類器,OvR有N個分類器,因此存儲開銷和測試時間開銷OvO比較大。
  • OvO每個分類器只用了兩個類別的樣例,而OvR每個分類器都用了全部的樣例,因此在類別較多的情況下,OvO的訓練時間較短。
  • 對於測試性能,這取決於具體的數據分佈,在多數情形下兩者差不多。

(3)多對多(Many vs. Many)
MvM是每次將若干個類作爲正類,若干個其他類作爲反類。顯然,OvO和OvR是MvM的特例。MvM的正、反類構造必須有特殊的設計,不能隨意選取。這裏我們介紹一種最常用的MvM技術糾錯輸出碼 (Error CorrectingOutputCodes,簡稱 ECOC)
ECOC是將編碼的思想引入類別拆分,並儘可能在解碼過程中具有容錯性。ECOC工作過程主要分爲兩步:

  • 編碼:對N個類別做M次劃分,每次劃分將一部分類別劃爲正類,一部分劃爲反類,從而形成一個二分類訓練集。這樣一共產生M個訓練集,可訓練出M個分類器。
  • 解碼:M 個分類器分別對測試樣本進行預測,這些預測標記組成一個編碼。將這個預測編碼與每個類別各自的編碼進行比較,返回其中距離最小的類別作爲最終預測結果。

類別劃分通過"編碼矩陣"指定。編碼矩陣有多種形式,常見的主要有二元碼和三元碼。前者將每個類別分別指定爲正類和反類,後者在正、反類之外,還可指定"停用類"。圖3.5給出了一個示意圖,在圖 3.5(a) 中,分類器f2將Cl類和C3類的樣例作爲正例,C2類和C4類的樣例作爲反例;在圖3.5(b)中,分類器f4將C1類和C4類的樣例作爲正例,C3 類的樣例作爲反例。在解碼階段,各分類器的預測結果聯合起來形成了測試示例的編碼,該編碼與各類所對應的編碼進行比較,將距離最小的編碼所對應的類別作爲預測結果。例如在圖 3.5(a) 中,若基於歐民距離,預測結果將是 C3。

在這裏插入圖片描述
海明距離:xy|x-y|
歐式距離:(xy)2\sqrt{(x-y)^2}
公式參考: [https://www.zybuluo.com/codeep/note/163962#1如何插入公式]

爲什麼稱爲"糾錯輸出碼"呢?
  這是因爲在測試階段,ECOC編碼對分類器的錯誤有一定的容忍和修正能力。例如圖3.5(a) 中對測試示例的正確預測編碼是(-1,+1,+1,-1,+1),假設在預測時某個分類器出錯了,例如 h 出錯從而導致了錯誤編碼(-1,-1,+1,-1,+1),但基於這個編碼仍能產生正確的最終分類結果C3。這就是糾錯輸入碼。

  • 一般來說,對同一個學習任務,ECOC編碼越長,糾錯能力越強
  • 但並不是說EOCO編碼長度越長,糾錯能力越強。編碼越長,意味着所需訓練的分類器越多,計算、存儲開銷都會增大
  • 另一方面,對有限類別數,可能的組合數目是有限的,碼長超過一定範圍後就失去了意義。
  • ** 對同等長度的編碼,理論上來說,任意兩個類別之間的編碼距離越遠,則糾錯能力越強**。因此,在碼長較小時可根據這個原則計算出理論最優編碼。
  • 然而,碼長稍大一些就難以有效地確定最優編碼,事實上這是 NP 難問題。不過,通常我們並不需獲得理論最優編碼,因爲非最優編碼在實踐中往往己能產生足夠好的分類器
  • 另一方面,並不是編碼的理論性質越好,分類性能就越好,因爲機器學習問題涉及很多因素,例如將多個類拆解爲兩個“類別子集”,不同拆解方式所形成的兩個類別子集的區分難度往往不同,即其導致的二分類問題的難度不同。於是一個理論糾錯牲質很好、但導致的二分類問題較難的編碼,與另一個理論糾錯性質差一些、但導致的二分類問題較簡單的編碼,最終產生的模型性能孰強孰弱很難說。

(4)回到起初多分類的兩個核心點

拆分策略 問題的拆分方式 對預測結果集集成
OvO 各類別依次組合(N-1)*N/2種分類器 分類器的預測結果集出現最多的類別作爲預測結果
OvR 選擇一類爲正,剩餘樣例爲負N種分類器 預測集只出現一次正類對應的類標記作爲預測結果
MvM 若干正、反類,構造必須有特殊的設計 糾錯輸出碼ECOC,海明距離或歐式距離,距離最小

5. 類別不平衡問題

5.1 定義

如果不同類別的訓練樣例數目稍有差別,通常影響不大,但若差別很大,則會對學習過程造成困擾。例如有998個反例,但是正例只有2個,那麼學習方法只需要返回一個永遠將新樣本預測爲反例的學習器,就能達到99.8%的精度;然而這樣的學習器往往沒有價值,因爲它不能預測出任何正例。
  **類別不平衡(class-imbalance)就是指分類任務中不同類別的訓練樣例數目差別很大的情況。**在現實的分類學習任務中,我們經常會遇到類別不平衡,例如在通過拆分法解決多分類問題時,即使原始問題中不同類別的訓練樣例數目相當,在使用OvR(一對其餘,One vs. Rest,簡稱OvR)、MvM(多對多,Many vs. Many,簡稱MvM)策略後產生的二分類任務仍可能出現類別不平衡現象,因此有必要了解類別不平衡性處理的基本方法。
  
從線性分類器的角度理解

通常在一個二分類的問題中,我們經常將0.5作爲預測結果的分類標準,比如將預測概率大於0.5分爲A類,預測概率小於0.5分爲B類,這裏的0.5就是分類閾值。

在二分類問題中,假如預測一個樣本爲A的概率爲p,那麼它爲B的概率爲1-p,而p/(1-p)表示兩類可能性的比,即機率(odds),或稱爲優勢比。如果p/(1-p)>1,我們認爲該樣本是A類的機率大於B。然而,在一個數據集中正負樣本比例不相同時,此時會有一個觀測機率,假設在數據集中有m個A樣本,n個B樣本,那麼觀測機率爲m/n(樣本均衡的情況下觀測機率爲1)。

在算法分類過程中,如果預測機率p/(1-p)大於實際的觀測機率m/n,此時我們才把樣本分類爲A,而不是以0.5作爲分類閾值(樣本均衡情況下以0.5作爲閾值)
用公式表示:  
             p/(1p)>m/np/(1-p)>m/n
計算結果得到:   
             p>m/m+np>m/(m+n)

此時只有當 p>m/(m+n)p>m/(m+n) 時,預測結果爲A類,這裏m/(m+n)m/(m+n) 取代 0.5 成爲新的分類閾值。

藉助以上的原理,在分類學習中面對樣本不均衡時,我們可以採用原有不均衡的樣本進行學習,然後通過改變決策規則來做分類,比如在樣本均衡時我們0.5作爲分類閾值,而在樣本不均衡的情況下我們可以規定預測概率需要達到0.8才能被預測爲多數類。也可以通過以下公式進行轉化,將閾值重新轉化爲0.5:
p1p=p1p×nm\frac{p'}{1-p'} = \frac{p}{1-p}×\frac{n}{m}
這種類別不平衡學習的策略也叫“再縮放”(rescaling)或“再平衡”(rebalance)

5.2 類別不平衡的解決方法

再縮放的思想雖然簡單,但是實際操作卻不平凡。
解決方法:
1、欠採樣(undersampling),減少數量較多那一類樣本的數量,使得正負樣本比例均衡。
2、過採樣(oversampling),增加數量較少那一類樣本的數量,使得正負樣本比例均衡。
3、不處理樣本,樣本分類閾值移動(threshold-moving)。

詳細的介紹參考另外一篇博客:[]

6. 課後練習參考答案

[https://blog.csdn.net/icefire_tyh/article/details/52065224]

參考文獻:
[1] [統計學習-李航]
[2] [機器學習西瓜書-周志華]
[3] 期刊:基於聚類欠採樣的集成不均衡數據分類算法,工程學報

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章