(八)從零開始學人工智能--統計學習:統計學習基礎知識


統計學習基礎知識

現在我們開始統計學習系列課程的學習,首先先給大家介紹一下統計學習的基礎知識。

1. 統計學習種類

統計學習一般分為兩個主要類別:監督學習(predictive learning, supervised learning)以及非監督學習(descriptive learning, unsupervised learning),因為監督學習在實際中應用更為廣泛,我們將主要精力放在監督學習上。

1.1 監督學習

監督學習的目標是在一個輸入輸出對的集合中(訓練集)\(D={(x_i,y_i)}_{i=1}^N\)學習一個從輸入變量\(x\)到輸出變量(標簽)\(y\)的映射,\(N\)是訓練樣本(采樣)的數目。簡單來看,\(x_i\)可以是一個向量,例如一個人的身高,體重等,復雜來看\(x_i\)可以是一張圖片,一句話,一封郵件,一個時間序列等等。輸出\(y_i\)可以是連續的,也可以是離散的,當\(y_i\)是連續的時,該學習問題被稱為回歸(regression)問題,當\(y_i\)是離散的時,該學習問題被稱為分類(classification)問題。

1.1.1 分類問題

分類問題的輸出在\(y\in\left\{1,2,3,...,C\right\}\)中取值,\(C=2\)對應二分類問題,\(C>2\)對應多分類問題。

例如:

在這里插入圖片描述

這是一個二分類問題,左側是形象化描述,方框中的訓練集用圖形展示,右側是數據化描述,訓練集用表格展示。訓練數據有很多個形狀和顏色,某些搭配是屬於‘yes’類的,某些搭配是屬於'no'類的,我們要推斷新出現的藍色的月亮,黃色的環和藍色的箭頭屬於哪一類(泛化能力)

概率描述的必要性

因為新出現的藍色的月亮,黃色的環和藍色的箭頭是在訓練集中沒有的,我們無法100%確定他們屬於哪一類別,所以要引入概率來描述這種不確定性

用條件概率\(p(y|x,D,M)\)來描述輸出\(y\)的概率分布,\(x\)是新出現的輸入,\(D\)是訓練集,\(M\)是選擇的模型,在上述例子中,\(p(yes|藍色月亮,D,M)+p(no|藍色月亮,D,M)=1\)。一般情況下,\(D\)\(M\)都是確定的,所以條件概率也被簡寫為\(p(y|x)\)

給定輸出條件概率,我們一般用取值最大的猜測作為新輸入的推斷(預測)輸出\(\hat{y}\)

\[\hat{y}=\hat{f}(x)=\mathop{\arg\max}_{c=1,2,...,C}p(y=c|x) \]

這對應着最可能的類別標簽,也叫作\(p(y|x)\)眾數

一些實際應用

文本分類

\(x\)是文本的一種結構化表示,文本分類是計算概率\(p(y=c|x)\),一個特殊的應用是垃圾郵件過濾,其中\(y=1\)代表垃圾郵件,\(y=0\)代表非垃圾郵件

大部分分類學習算法要求輸入向量\(x\)是定長的,可以用bag of words的方式來表示變長的文檔,基本思路是當詞\(j\)在文檔\(i\)中出現時\(x_{ij}=1\),這樣訓練集就可以被結構化為一個binary的共現矩陣,在共現矩陣上可以應用各種分類算法來學習規律

圖片分類

圖片和文本都具備明顯的局部性,通過挖掘這種局部性而誕生的算法框架稱為卷積神經網絡和循環神經網絡,二者共同大力推動了AI從傳統統計學習向深度學習的發展

1.1.2 回歸問題

分類問題的輸出\(y\)是在一個連續的區間內取值,在推斷時取后驗概率分布的期望\(E(y|x)\)。其應用例子包括:

預測某只股票第二天的最高股價

預測某篇文章接下去1小時的點擊次數

預測一個機器人手臂在空中的位置

預測某個醫院科室接下去一個月的就診人數

回歸問題和分類問題的主要區別不是輸出的離散或者連續(就診人數也可以認為是一個多分類問題),二者最主要的區別是對輸出的分布假設不同,后續我們會涉及到。

1.2 非監督學習

非監督學習只有輸入數據\(x\)而沒有輸出\(y\),我們的目標是挖掘\(x\)中感興趣的信息,非監督學習有時也被稱為知識發現,其代表就是聚類,主成分分析,關聯分析,協同過濾,社區發現等。以聚類為例:小時候你在區分貓和狗的時候,別人和你說,這是貓,那是狗,最終你遇到貓或狗你都能區別出來(而且知道它是貓還是狗),這是監督學習的結果。但如果小時候沒人教你區別貓和狗,不過你發現貓和狗之間存在差異,應該是兩種動物(雖然能區分但不知道貓和狗的概念),這是無監督學習的結果。

聚類正是做這樣的事,按照數據的特點,將數據划分成多個沒有交集的子集(每個子集被稱為簇)。通過這樣的划分,簇可能對應一些潛在的概念,但這些概念就需要人為的去總結和定義了。

聚類可以用來尋找數據的潛在的特點,還可以用來其他學習任務的前驅。比如市場分割。也許你在數據庫中存儲了許多客戶的信息,而你希望將他們分成不同的客戶群,這樣你可以對不同類型的客戶分別銷售產品或者分別提供更適合的服務。

聚類示意:

2. 統計學習中的基本概念

讓我們看看一個簡單的案例,曲線擬合:

我們有如下的數據點,這個數據點是通過\(y=sin(2\pi x)\)加上一些高斯噪聲生成的

現在考慮一個關於\(x\)的多項式擬合上述藍顏色的點:

\[f(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_jw_jx^j \]

雖然\(f(x,w)\)是關於\(x\)的非線性函數,但是是關於參數\(w\)的線性函數,這種和參數保持線性關系的模型被稱為線性模型。

可以通過最小化\(f(x,w)\)\(y\)的差別來求解參數\(w\),其中一種是誤差的平方和:

\[E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2 \]

因為\(E(w)\)是關於\(w\)的二次函數,所以其導數是關於\(w\)的一次函數,\(E(w)\)的最小值是唯一的,當數據量比較小時,可以通過最小二乘直接獲得解析解,在數據量比較大時,一般通過梯度下降法來逼近這個解。

2.1 統計學習三要素:模型,策略,算法

模型: 在上述的曲線擬合問題中,線性函數\(f(x,w)\)就是模型,當然我們也可以選擇其他的線性模型或者非線性模型,選擇合適的模型是應用統計學習算法的第一步

策略: 有了模型,統計學習接着需要考慮的是按照什么樣的准則學習最優的模型,在上述的曲線擬合問題中,誤差平方和\(E(w)\)就是一個准則(策略,損失函數),其余的准則還有0-1損失函數,絕對值損失函數,對數損失函數等

算法: 有了准則,就要考慮在該准則的約束下如何尋找參數\(w\)的最小值,最常用的就是梯度下降法或者同類別的基於梯度的算法(我更傾向於叫這一步為優化或者尋優,算法是一個比較泛的概念)

2.2 欠擬合和過擬合

上述模型,策略和算法都是針對模型的學習過程(擬合過程)的,而統計學習最終是要預測我們沒有見過的樣本(泛化能力),這里就涉及到一個在訓練樣本上的擬合程度的問題,是損失函數\(E(w)\)越小泛化能力越強嗎?答案是不一定,還是考慮上述曲線擬合問題,當多項式的階數\(M\)不同時,擬合的效果如下:

在這里插入圖片描述

可以看到在\(M=0\)\(M=1\)時,模型未能很好的擬合訓練集的散點,在\(M=3\)時看起來還不錯,在\(M=9\)時擬合的程度最好,事實上,在\(M=9\)時,可以做到\(E(w)=0\)(思考一下為什么),但在\(M=9\)時,擬合出來的曲線和真正的數據分布的曲線\(y=sin(2\pi x)\)相去甚遠,當有一個新的數據點出現時,例如在左邊的第一個和第二個點之間,預測曲線會給出一個非常差的預測結果,此時稱為模型過擬合。而在\(M=0\)\(M=1\)時,稱為欠擬合。

事實上,當\(M\)\(0\)取到\(9\)時,有如下的訓練誤差和測試誤差的對比:

以及不同模型的參數取值:

2.3 如何避免過擬合

2.3.1 從模型出發(交叉驗證,AIC, BIC)

從曲線擬合問題的直觀上來看,我們可以選擇復雜度較低的模型,例如\(M=3\)。那么在面對一般化的問題時,該如何選取合適復雜度的模型呢?可以從訓練的數據集中抽出一部分,作為驗證集,驗證集不參與訓練,但是能夠作為一個假的測試集來驗證模型是欠擬合還是過擬合。

分割訓練集和驗證集,也是比較主觀的,如果分割的不合適,可能也對選出的模型泛化能力有負面作用,另外,訓練數據是比較珍貴的,扔掉一部分數據是比較可惜的,所以會采取利用全部數據的交叉驗證(cross validation)的方式:

上圖描述的是\(10\)折交叉驗證,常用的還有\(3\)折,\(5\)折,\(N\)折(\(N\)為樣本數量)交叉驗證,\(N\)折交叉驗證也稱為留一交叉驗證(leave one out cross validation),交叉驗證選擇在驗證集上平均誤差最低的模型。交叉驗證也存在一些缺陷,當模型比較復雜時,要訓練和測試多次,尤其當可選擇的模型范圍很大時,訓練和測試的次數會成指數級增加。但交叉驗證仍然是在數據集有限的情況下最常用也是最好用的避免過擬合的方式之一。

此外,還有計算量相對較小的\(AIC\)\(BIC\)准則,\(AIC\)由日本統計學家赤池弘次在1974年提出,$BIC$1978年由Schwarz提出。他們提供了權衡估計模型復雜度和擬合數據優良性的標准

AIC准則的其中一種表達式為:

\[AIC=k+E(w) \]

BIC准則的其中一種表達式為:

\[BIC=kln(N)+E(w) \]

其中\(k\)代表模型參數的個數,\(N\)代表訓練集樣本數目。通常\(AIC\)\(BIC\)的取值越小,模型泛化能力越強。

2.3.2 從策略出發(正則化)

在參數取值圖中,我們可以看到,\(M=9\)的多項式模型的參數取值和波動非常大,雖然這個模型有很強的能力來擬合訓練集。而在\(M=3\)時,參數是在一個相對較為合理的范圍之內的,那么如何把模型的參數限制在一個較為合理的范圍之內呢?我們考慮在損失函數\(E(w)\)上加入一個對參數取值的懲罰:

\[E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\frac\lambda2||w||^2 \]

參數\(\lambda\)用來控制懲罰的程度,\(||w||\)\(L2\)范數,在回歸問題中,上述策略被稱為嶺回歸(ridge regression)。

或者:

\[E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\lambda||w||_1 \]

\(||w||_1\)\(L1\)范數,在回歸問題中,上述策略被稱為lasso回歸。他們的統計學意義我們后續會涉及。

2.3.3 從尋優出發(Early Stopping

考慮上述多項式擬合\(M=9\)的情況,那么大的參數取值是尋優算法通過不斷迭代得到的。那么我們在尋優時,是否能否通過早一些停止迭代來避免這個問題呢,答案是可以的,而且在實際工程中這個辦法也很有效,就是早停法(Early Stopping)。

一般在算法尋優時,訓練集和驗證集的誤差呈如下的曲線:

我們可以根據驗證集誤差的變化來決定何時停止訓練,選取參數被調整到最合適的模型。實際工程中,早停法有很多種應用方式,例如在連續多次迭代驗證集誤差都持續上升則停止,上升比例超過一定程度停止等等。

2.3.4 從數據出發(增加數據集)

考慮上述多項式擬合\(M=9\)的情況,當我們把數據量從\(10\)個增加到\(15\)個和\(100\)個的時候,擬合曲線有如下的變化:

在這里插入圖片描述

直觀上來看,大的數據量和大的模型容量是適配的,這樣能在很大程度上避免過擬合,但是在實際工程中仍然要結合交叉驗證,正則化和早停法一起使用。另外,有標注的樣本是非常昂貴的,一方面需要在實際生產過程中采集樣本,另一方面要給每個樣本打上一個合適的標簽(答案)\(y\),有些標簽是隨着業務運行獲得的,有些標簽是需要人為標注的。

例如,在機器學習在風控場景的應用中,為了預測一個客戶未來貸款違約的可能性,我們要找很多歷史上違約和履約的客戶進行學習,而違約的客戶量本身就是很少的,壞樣本(違約)很珍貴。

在圖像識別中,為了識別一張圖片是貓還是狗,需要人為給每張圖片標注貓,狗或者其它的分類

為了識別一張圖片上的文字區域,需要人為給每個文字區域畫上框:

自動駕駛為了識別車道線,行人,建築物,汽車等元素,需要人為給每個像素點做標注:

自然語言處理為了識別每個單詞的詞性,需要人為給每個漢字做標注:

今年海釣比賽在廈門市與金門之間的海域舉行。

今(O)年(O)海(O)釣(O)比(O)賽(O)在(O)廈(B-LOC)門(I-LOC)市(E-LOC)與(O)金(B-LOC)門(E-LOC)之(O)間(O)的(O)海(O)域(O)舉(O)行(O)。

數據是AI的“衣食父母”,尤其在現在深度學習算法更加依賴大量的數據,有標注的數據十分珍貴,數據也是AI公司的核心競爭能力之一。

2.4 過擬合產生的原因

\(f(x;D)\)為在訓練集\(D\)上學習的函數\(f\)在新樣本\(x\)上的預測輸出,\(y\)代表真實的輸出

我們考慮在同一個學習場景下的很多個數據集,例如在曲線擬合案例中,在\(y=sin(2\pi x)\)上生成很多個\(N\)個點的數據集,學習算法在這些數據集上的期望預測為\(\bar{f}(x)=E_D(f(x;D))\)

使用樣本數相同的不同訓練集產生的方差variance)為:

\[var(x)=E_D((f(x;D)-\bar{f}(x))^2) \]

方差的含義:方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響。

期望輸出與真實標記的差別稱為偏差bias),即:

\[bias(x)=(\bar{f}(x)-y)^2 \]

偏差的含義:偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力。

模型的泛化能力可以分解為偏差和方差的和:

\[E_D((f(x;D)-y)^2)=E_D((f(x;D)-\bar{f}(x))^2)+(\bar{f}(x)-y)^2 \]

一般來說,偏差與方差是有沖突的,這稱為偏差-方差窘境(bias-variance dilemma)。考慮上述曲線擬合問題,如果我們在\(y=sin(2\pi x)\)上新采樣\(10\)個不同的樣本點,那么\(9\)階的多項式將會發生非常大的波動,但仍然能擬合這\(10\)個點,這就是低偏差,高方差的一個表現,最后泛化誤差仍然很高。下圖給出了一個示意圖:

一個形象的打靶示意圖來解釋biasvariance的區別:

那么如何合理的在biasvariance中尋找一個折中呢,這時就可以考慮應用2.3節中的方法了。

2.5 最大似然估計和貝葉斯估計

2.5.1 貝葉斯定理

\(A\)\(B\)代表兩個事件,則\(A\)\(B\)共同發生的概率為:

\[P(A,B)=P(A|B)P(B)=P(B|A)P(A) \]

貝葉斯定理有如下表示:

\[P(A|B)=\frac{P(B|A)P(A)}{P(B)} \]

我們開看如下的具體案例:

假設一個人去醫院做一個結腸癌的檢查,這個檢查不太准確,一個確定有癌症的人可以有80%的概率檢查為陽性,一個沒有癌症的人可以有10%的概率檢查為陽性,即\(p(x=1|y=1)=0.8\)\(p(x=1|y=0)=0.1\)

其中\(y=1\)為這個人有癌症,\(y=0\)為這個人沒有癌症,\(x=1\)為檢查為陽性。

假設這個人的檢測呈陽性,那么直觀來看他有很大的幾率有結腸癌。但是如果考慮結腸癌在人群中發生的概率\(P(y=1)=0.004\)(先驗知識),那么此時有:

\[P(y=1|x=1)=\frac{P(x=1|y=1)P(y=1)}{P(x=1|y=1){P(y=1)}+P(x=1|y=0){P(y=0)}}=0.031 \]

也就是說只有百分之三的概率這個人真正有結腸癌,這就是先驗知識對觀測的修正作用,貝葉斯定理在統計學習中應用十分廣泛,下兩小節我們考慮一個簡單的參數估計和統計推斷問題來探索一下貝葉斯估計的應用。

2.5.2 最大似然

考慮一個扔硬幣問題,硬幣投擲的結果\(x\in\{0,1\}\),其中\(x=1\)代表投擲結果為正面,\(x=0\)代表投擲結果為反面。我們假設這個硬幣是不均勻的,也就是每次投擲正反面出現的概率是不一樣的,假設正面的概率為\(\mu\)

\[p(x=1|\mu)=\mu \]

那么自然,反面的概率為\(1-\mu\):

\[p(x=0|\mu)=1-\mu \]

統一上述兩式子就是經典的伯努利分布(Bernoulli distribution

\[p(x|\mu)=\mu^x(1-\mu)^{1-x} \]

假設我們觀測了一個投擲序列\(D=\{x_1,x_2,...,x_N\}\),似然函數定義為這些觀測出現的概率乘積

\[p(D|\mu)=\prod_{n=1}^N{p(x_n|\mu)}=\prod_{n=1}^N{\mu^{x_n}(1-\mu)^{1-x_n}} \]

最大似然就是認為\(\mu\)的取值應該使似然函數取值最大,假設我們觀測10次,其中有7個正面,3個反面,那么似然函數為:

\[p(D|\mu)=\mu^7(1-\mu)^3 \]

上述式子求最大值可以先進行對數,變成\(ln(p(D|\mu))=7ln\mu+3ln(1-\mu)\),對其求導,可以得到\(\mu=0.7\)

一般來說,有\(\mu_{ML}=\frac1N{\sum_{n=1}^N{x_n}}\)

2.5.3 貝葉斯估計

在上述的最大似然中,存在一個致命的問題,假設我們觀測的樣本數量為3個,但是3次都是正面,我們會得出\(\mu_{ML}=1\),即我們會判斷以后每一次都會扔出正面,這符合數學邏輯,但是不符合我們的常識和直觀感受,比如有人在你之前扔過這個硬幣20次,其中正面是10次,那此時你是否還非常確信以后每一次都是正面呢?是否要修正自己的判斷呢?那如何修正自己的判斷呢?此時就要在似然函數的基礎上引入關於\(\mu\)的先驗分布。

假設有如下的關於\(\mu\)的先驗分布:

\[p(\mu)\propto\mu^{10}(1-\mu)^{10} \]

此時根據貝葉斯定理:

\[p(\mu|D)\propto{p(D|\mu)p(\mu)} \]

此時結合我們的觀測3次,正面次數為3次,可知:

\[p(\mu|D)\propto\mu^{13}(1-\mu)^{10} \]

此時我們最大化\(p(\mu|D)\)會得到\(\mu_{MAP}=\frac{13}{23}\),這個推斷要遠遠比\(\mu_{ML}=1\)更加合理,這就是引入先驗知識的意義。在我們觀測的樣本量比較小的時候,引入先驗分布會顯得尤為重要。這種將結合先驗和似然結合到一起的參數估計方式也稱為最大后驗概率推斷(MAP: Max a Posterior)

(基於篇幅有限,此段略去大量的數學證明和數學表達,只為讓大家能夠形象化的理解貝葉斯估計的思想,准確的數學推導可以參考Pattern Recognition and Machine Learning,以及Machine Learning A Probabilistic Perspective

3. 線性回歸

3.1 經典線性回歸

對於一個一般的線性模型而言,其目標就是要建立輸入變量和輸出變量之間的回歸模型。該模型是既是參數的線性組合。從數學上來說,線性回歸有如下表達形式:

\[h_{\theta}(x) = \theta_{0} + \theta_{1}x_1 + \theta_{2}x_2 + \cdots + \theta_{n}x_n = \sum_{i = 0}^{n}\theta_{i}x_{i} = \theta^Tx \]

其中\(x_0=1\),當\(x=(x_0,x_1)\)時,就是一元的線性回歸,例如房屋面積和銷售價格的關系:

Living area(feet^2) Price
2104 400
1600 330
2400 369
... ...

\(x\)\(y\)的散點圖如下:

在這里插入圖片描述

一元線性回歸的函數表達形式\(h_{\theta}(x)\)是二維平面上的一條直線:

在這里插入圖片描述

我們可以引入更高維度的特征變量\(x\),考慮多變量的例子:

Living area(feet^2) badrooms Price
2104 3 400
1600 3 330
2400 2 369
... ... ...

此時稱為多元線性回歸,實際上函數\(h_{\theta}(x)\)擬合的是一個高維空間中的平面:

在這里插入圖片描述

現在我們假設預測值\(\theta^Tx\)與真實值\(y\)之間存在一個誤差\(\epsilon\), 於是可以這樣寫:

\[y = \theta^Tx + \epsilon \]

線性回歸假設\(\epsilon\)是獨立同分布的, 服從與均值為\(0\), 方差為\(\sigma^2\)正態分布(高斯分布)

\[P(\epsilon) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(\epsilon)^2}{2\sigma^2}} \]

那么\(y\)服從均值為\(\theta^Tx\),方差為\(\sigma^2\)的正態分布:

\[P(y|x;\theta) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y - \theta^Tx)^2}{2\sigma^2}} \]

所有的樣本可以認為是從上述分布中抽樣,則\(M\)個樣本的似然函數為:

\[L(\theta) = \prod_{i=1}^{m}\rho(y^i|x^i;\theta) = \prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}} \]

上面的函數式子中,\(x^i\)\(y^i\)都是已知的樣本,\(θ\)是要學習的參數。

為計算方便,我們把\(L(\theta)\)取對數:

\[logL(\theta)\\ = log\prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}}\\ = \sum_{i=1}^mlog\frac{ 1 }{\sqrt{2\pi}\sigma}e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}}\\ = mlog\frac{ 1 }{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\centerdot\frac{1}{2}\sum_{i=1}^m(y^i - \theta^Tx^i)^2 \]

上面的公式取最大值,也就是下面的函數取最小值

\[J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2 \]

\(J(\theta)\)的最小值,可以直接對上式求駐點:

首先,將上式變形:

\[J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2\\ = \frac{1}{2}(X\theta - y)^T(X\theta - y) \]

下一步對參數\(\theta\)求導可得:

\[\bigtriangledown_{\theta} J(\theta) = \bigtriangledown_{\theta}(\frac{1}{2}(X\theta - y)^T(X\theta - y))\\ =\bigtriangledown_{\theta}(\frac{1}{2}(\theta^TX^T-y^T)(X\theta - y)\\ =\bigtriangledown_{\theta}(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty) \\ = \frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T)\\ = X^TX\theta-X^Ty \]

駐點滿足:

\[X^TX\theta-X^Ty = 0 \]

即得到 :

\[\theta = (X^TX)^{-1}X^Ty \]

上式也稱為Normal Equation​,當然也可以利用梯度下降法迭代求解:

\[\theta_j=\theta_j-\alpha \dfrac{\partial}{\partial \theta_j}J(\theta) =\theta_j-\alpha\sum_{i=1}^m(h_{\theta}(x^i) - y^i)x_j^{i} \]

梯度下降法和Normal Equation​的區別如下:

Gradient Descent Normal Equation
需要選擇學習率\(\alpha\) 無需選擇學習率
需要迭代,需要選擇初始值 不需要迭代
不需要求逆矩陣 需要求矩陣\(X^TX\)的逆矩陣,復雜度較高
當特征維度\(n\)很高時也能使用 特征維度\(n\)很高時幾乎無法使用

在工程上一般采取梯度下降法或者隨機梯度下降法求解。

3.2 嶺回歸(ridge regression

經典線性回歸是假設誤差滿足標准正態分布,嶺回歸是在這個基礎上加上了參數\(\theta\)也滿足標准正態分布,用最大后驗估計推導可得似然函數為:

\[\begin{aligned} argmax_{\theta} \quad L(\theta) & = ln \prod_{i=1}^{n} \frac{1}{\sigma \sqrt{2\pi}} e^{ -\frac{(y_{i}-\theta^{T}x_{i})^{2}}{2\sigma^2} } \cdot \prod_{j=1}^{d} \frac{1}{\tau \sqrt{2\pi}} e^{-\frac{\theta^{2}}{2\tau^{2}}} \\\\ & = -\frac{1}{2\sigma^{2}} \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} -\frac{1}{2\tau^{2}} \sum_{i=1}^{d}\theta_{j}^{2} - nln\sigma\sqrt{2\pi} - dln \tau \sqrt{2\pi} \end{aligned} \]

最大似然等價於最小化如下的損失函數:

\[\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^{d}\theta_{j}^{2} \\\\ \end{aligned} \]

嶺回歸的Normal Equation​為:

\[\theta = (X^TX+\lambda I)^{-1}X^Ty \]

嶺回歸因為矩陣\(\lambda I\)的對角元素全是\(1\),像一條山嶺,故而得名。嶺回歸的示意圖如下:

嶺回歸因為對參數取值范圍的抑制在一定程度上避免了過擬合的問題,另外在存在特征變量間的共線性時(特征變量間有較強的相關性)可以避免\(X^TX\)不可逆的情況。

3.3 lasso回歸和ElasticNet

lasso回歸和嶺回歸的不同是假設參數\(\theta\)也滿足laplace分布,用最大后驗估計推導可得似然函數為:

\[\begin{aligned} argmax_{\theta} \quad L(\theta) & = ln \prod_{i=1}^{n} \frac{1}{\sigma \sqrt{2\pi}} e^{ -\frac{(y_{i}-\theta^{T}x_{i})^{2}}{2\sigma^2} } \cdot \prod_{j=1}^{d} \frac{1}{2b} e^{-\frac{\lvert \theta_{i} \rvert}{b} } \\\\ & = -\frac{1}{2\sigma^{2}} \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} -\frac{1}{b} \sum_{i=1}^{d} \lvert \theta_{j} \rvert - nln\sigma\sqrt{2\pi} - dln 2b \end{aligned} \]

最大似然等價於最小化如下的損失函數:

\[\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^{d} \lVert \theta_{j} \rVert_{1} \\\\ \end{aligned} \]

因為\(\lVert \theta_{j} \rVert_{1}\)不可導,lasso回歸的求解需要用到坐標軸下降或者最小角回歸,受限於篇幅,這里不做展開,lasso回歸的示意圖如下:

相比嶺回歸,lasso回歸的解更容易出現在坐標軸上,所以更容易出現稀疏的解,對特征之間的共線性也有比較好的抑制作用,在一定程度上實現了特征選擇的效果。lasso回歸全稱是Least absolute shrinkage and selection operator

ElasticNet回歸是將嶺回歸和lasso回歸進行結合,吸收二者的優點,損失函數為:

\[\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda_1 \sum_{j=1}^{d}\theta_{j}^{2}+\lambda_2 \sum_{j=1}^{d} \lVert \theta_{j} \rVert_{1} \\\\ \end{aligned} \]

4. 線性分類

通俗來講,分類是將\(N\)個樣本點\(x\)分為\(C\)類的過程,不同的樣本類別在空間中的邊界稱為決策邊界,當決策邊界是輸入的線性組合時(\(D\)維的空間中是一個\(D-1\)維的超平面),稱為線性分類,示意圖如下:

一維數據的線性決策邊界:

二維數據的線性決策邊界:

三維數據的線性決策邊界:

上述三種場景都是線性可分的,即可以找到一個超平面將樣本分開。有時樣本的空間分布無法找到這樣的一個超平面線性可分,如下圖的樣本分布:

此時雖然仍然可以利用線性決策邊界,但是分類的效果就會變得很差,這種數據的分布就會用到其它非線性的方法如神經網絡,knn,決策樹等等,或者對其做一些變換讓其線性可分(支持向量機等)這些是后面要討論的內容。

數據集的線性可分性定義如下(針對二分類):

給定一個數據集:

\[T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}, \]

其中,\(x_i \in R^{\ n}, \ y_i \in \gamma = \{+1, -1\}, \ i = 1, 2, ..., N\),如果存在某個超平面\(S\)

\[w \cdot x + b = 0 \]

能夠將數據集的正實例點和負實例點完全正確地划分到超平面的兩側,則稱數據集為線性可分數據集(linear separable data set)。

線性分類任務的目標就使數據集盡可能的分到\(S\)兩側(數據集本身不一定是線性可分的),錯誤分配的樣本會用一個損失函數來量化,最后通過最小化這個損失函數來找到參數\(w\)\(b\)

4.1 感知機

感知機是1957年,由Rosenblatt提出。感知機是二分類的線性模型,其輸入是實例的特征向量,輸出的是事例的類別,分別是\(+1\)\(-1\)。假設訓練數據集是線性可分的,感知機學習的目標是求得一個能夠將訓練數據集正實例點和負實例點完全正確分開的分離超平面。如果是非線性可分的數據,則最后無法獲得超平面。

感知機從輸入空間樣本\(x\)到輸出空間樣本\(y\)的模型如下:

\[f(x)=sign(w \cdot {x}+b) \]

其中:

\[sign(x)= \begin{cases} -1& {x<0}\\ 1& {x\geq 0} \end{cases} \]

\(M\)為誤分點的集合,感知機的優化目標是最小化如下函數:

\[L(w,b) = \sum\limits_{{x_i} \in M}^{} { - {y_i}(w{x_i} + b)} \]

其導數如下:
在這里插入圖片描述
使用隨機梯度下降每次選一個樣本點做更新:
在這里插入圖片描述
算法流程:

輸入:訓練數據集\(T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}\),其中

\(x_i \in \chi = R^{\ n}, \ y_i \in \gamma = \{+1, -1\}, \ i = 1, 2, ..., N\)。學習率\(\eta(0 < \eta \leq 1)\)

輸出:\(w, b\);感知機模型:\(f(x) = sign(w \cdot x + b)\)

STEP 1選取初值\(w_0, b_0\)

STEP 2在訓練集中選取數據\((w_i, y_i)\)

STEP 3如果\(y_i(w \cdot x_i + b) \leq 0\),則:

\[w \leftarrow w + \eta y_ix_i \\ b \leftarrow b + \eta y_i \]

STEP 4轉至步驟2,直到訓練集中沒有誤分類點。

動手做一做

訓練數據集:

正實例點是\([10,8],[6,9],[6,8],[7,6],[7,8],[9,6],[11,3],[10,6],[12,5]\)

負實例點是\([1,2],[2,2],[3,1],[1,1],[3,6],[4,4],[3,2],[2,6],[6,2]\)

利用上述隨機梯度下降法求解感知機模型

4.2 邏輯回歸(logistic regression

邏輯回歸的表現形式和線性回歸有些類似,邏輯回歸解決的是二分類問題,假設\(y\in\{0,1\}\),為了使輸出在\(0\)\(1\)之間,邏輯回歸采用如下的函數形式:

\[h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} \]

即將線性回歸的函數形式\(\theta^Tx\)logistic sigmoid函數進行映射,logistic sigmoid函數的形式為:

\[\sigma(z)=\frac{1}{1+e^{-z}} \]

該函數具有如下的特性:當\(x\)趨近於負無窮時,\(y\)趨近於\(0\);當\(x\)趨近於正無窮時,\(y\)趨近於1;當\(x= 0\)時,\(y=0.5\)

最早logistic sigmoid函數是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增長的關系時命名的。sigmoid曲線可以模仿一些情況人口增長的 S 形曲線。起初階段大致是指數增長;然后隨着開始變得飽和,增加變慢;最后,達到成熟時增加停止。

邏輯回歸假設\(y\)服從伯努利分布,並且用\(h_\theta(x)\)代表\(y=1\)的概率,即:

\[P(y=1|x;\theta) = h_\theta(x) \]

\[P(y=0|x;\theta) = 1-h_\theta(x) \]

將上述兩個式子合並成一個:

\[P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{1-y} \]

現在有訓練數據集\(T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}\)

似然函數為:

\[l(\theta)=\prod_{i=1}^{N}P(y^i|x^i;\theta)=\prod_{i=1}^{N} (h_\theta(x^i))^{y^i}(1-h_\theta(x^i))^{1-y^i} \]

最大似然等價於對似然函數的負對數求最小值:

\[J(\theta)=-lnl(\theta)=-\sum_{i=1}^N(y^iln(h_\theta(x^i))+(1-y^i)ln(1-h_\theta(x^i))) \]

利用梯度下降求解的參數的更新公式為:

\[\theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta) \]

展開后為:

\[\theta_j:=\theta_j-\alpha\sum_{i=1}^N(h_{\theta}(x^i) - y^i)x_j^{i} \]

可以看到邏輯回歸的參數更新遞推式和線性回歸的參數更新遞推式在形式上是一樣的,只是邏輯回歸的\(h_\theta(x)\)是在線性回歸的\(h_\theta(x)=\theta^Tx\)的外面套了一層sigmoid函數。

4.3 Softmax回歸

在 softmax回歸中,我們解決的是多分類問題(相對於 logistic 回歸解決的二分類問題)。

因此對於訓練集\(T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}\),我們有\(y^i\in\{1,2,...,k\}\)。(注意此處的類別下標從$ 1 $開始,而不是 \(0\))。

對於給定的輸入\(x\),我們想用假設函數針對每一個類別j估算出概率值\(P(y=j|x)\)。也就是說,我們想估計\(x\)的每一種分類結果出現的概率。因此,我們的假設函數將要輸出一個\(k\)維的向量(向量元素的和為\(1\))來表示這\(k\)個估計的概率值。 具體地說,我們的假設函數\(h_\theta(x)\)形式如下:

softmax回歸的代價函數為(推導過程略去):

其中\(1\{\}\)為示性函數,\(\{\}\)中的取值為真的時候為\(1\),否則為\(0\)

值得注意的是,上述公式是logistic回歸代價函數的推廣。logistic回歸代價函數可以改為:

對於\(J(\theta)\)的最小化問題,目前還沒有閉式解法。因此,我們使用迭代的優化算法(例如梯度下降法)。經過求導,我們得到梯度公式如下:

有了梯度,就可以用梯度下降法去迭代更新參數了。

Softmax 回歸 vs. k 個二元分類器

如果你在開發一個音樂分類的應用,需要對\(k\)種類型的音樂進行識別,那么是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立$ k $個獨立的二元分類器呢?

這一選擇取決於你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那么你可以假設每個訓練樣本只會被打上一個標簽(即:一首歌只能屬於這四種音樂類型的其中一種),此時你應該使用類別數 \(k = 4\)softmax回歸。(如果在你的數據集中,有的歌曲不屬於以上四類的其中任何一類,那么你可以添加一個“其他類”,並將類別數\(k\)設為\(5\)。)

如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間並不是互斥的。例如:一首歌曲可以來源於影視原聲,同時也包含人聲 。這種情況下,使用\(4\)個二分類的 logistic 回歸分類器更為合適。這樣,對於每個新的音樂作品 ,我們的算法可以分別判斷它是否屬於各個類別。

現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax回歸還是$ 3$個logistic 回歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 回歸還是多個 logistic 回歸分類器呢?

在第一個例子中,三個類別是互斥的,因此更適於選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。

4.4 廣義線性模型

在之前的章節中,我們談到了服從高斯分布的線性回歸和服從伯努利分布的邏輯回歸,它們的解決過程十分相似。實際上,他們都是廣義線性模型的特例,對於這類問題我們有比較統一的解決方案。

在介紹廣義線性模型之前,我們先來引入指數分布族這一概念,一個單參數指數分布族可以表示為:

\[p(y;\eta) = b(y)exp(\eta^TT(y) - a(\eta)) \]

在這里,\(\eta\)被稱為自然參數(natrual parameter),一般來說,\(T(y) = y\)\(a(\eta)\)被稱為log partition function。這里\(e^{-a(\eta)}\)起到歸一化常數的作用。如果我們確定\(T, a, b\),通過不斷改變\(\eta\),我們就可以得到一個分布族。

伯努利分布屬於指數分布族

對於伯努利分布我們有:

\[p(y;\phi ) = \phi ^y(1 - \phi )^{(1 - y)} \\ = exp(ylog\phi + (1 - y)log(1 - \phi )) \\ = exp\left(log\left(\frac{\phi }{1 - \phi } \right)y+ log(1 - \phi)\right) \]

很顯然,伯努利方程是符合指數分布族形式:

\[\eta = log(\frac{\phi} {1- \phi}) \\ T(y) = y \\ a(\eta) = -log(1 - \phi) = log(1 + e^\eta) \\ b(y) = 1 \\ \]

可以看到上式蘊含着:\(\phi = \frac{1}{1 + e^{(- \eta)}}\),也就是我們之前引入的sigmoid函數

高斯分布屬於指數分布族

\[p(y;\mu) = \frac{1}{\sqrt{2\pi}}exp\left(-\frac{1}{2}(y - \mu)^2\right) \\ = \frac{1}{\sqrt{2\pi}}exp\left(-\frac{1}{2}y^2\right)exp\left(\mu y - \frac{1}{2}\mu^2\right) \]

因此,在指數分布族形式下,我們只需要進行如下轉換:

\[\eta = \mu \\ T(y) = y \\ a(\eta) = \mu^2/2 = \eta^2/2 \\ b(y) = (1/\sqrt{2\pi})exp(-y^2/2) \]

還有很多常見的分布都屬於指數分布族,在此就不展開。

廣義線性模型

廣義線性模型有如下的假設:

  1. \(P(y|x;\theta) \sim 指數分布(\eta)\)

  2. \(\eta\)\(x\)成線性關系,即\(\eta = \theta^TX\)

  3. 給定一個\(x\),我們需要目標函數為\(h_\theta(x) = E[y|x]\)

根據如上假設,我們可以推導出高斯分布的線性回歸模型:

\[h_\theta(x) = E[y|x;\theta] \\ = \mu \\ = \eta \\ = \theta^Tx \]

上式中第一個等號是因為假設三,第二個等號則是由於高斯分布的基本性質,第三個等號則是由於前文中高斯分布中推導過的和的關系,最后一個等號則是由於假設二。

同樣,我們也可以推導出邏輯回歸模型:

\[h_\theta(x) = E[y|x;\theta] \\ = \phi \\ = \frac{1}{1 + e^{-\eta}} \\ = \frac{1}{1 + e^{-\theta^Tx}} \]

上式中第一個等號是因為假設三,第二個等號則是由於伯努利分布的基本性質,第三個等號則是由於前文中伯努利分布中推導過的和的關系,最后一個等號則是由於假設二。

從以上可以看出,線性回歸和邏輯回歸的sigmoid函數形式並非是拍腦袋想出來的,而是符合更廣泛的廣義線性模型的假設而得出的自然推論。

4.5 從另一個角度看邏輯回歸

考慮二分類問題,根據貝葉斯公式有:

\[P(y=1|x)=\frac{P(x|y=1)P(y=1)}{P(x|y=1)P(y=1)+P(x|y=0)P(y=0)} \]

如果我們定義:

\[\eta=ln\frac{P(x|y=1)P(y=1)}{P(x|y=0)P(y=0)} \]

那么有:

\[P(y=1|x)=\frac{1}{1+e^{-\eta}} \]

這和我們最初引入的sigmoid函數形式也是一致的。

實際上,給定\(y=0\)\(y=1\)這兩個類別的樣本的分布假設(如高斯分布),我們是可以用最大似然求解分布的均值和方差的,進而可以顯示的得到聯合概率分布\(P(y=1,x)\)\(P(y=0,x)\),進而獲得后驗概率\(P(y=1|x)\)。只不過在邏輯回歸中,直接用線性表達式\(\eta=\theta^Tx\)來對\(ln\frac{P(x|y=1)P(y=1)}{P(x|y=0)P(y=0)}\)進行建模。這就引出了4.6節的生成模型和判別模型。

極大似然的求解示意:

假設先驗\(P(y=1)=\pi\),則\(P(y=0)=1-\pi\),對於一個來自\(y=1\)類別的數據點\(x^n\),聯合概率分布如下,假設每一類的樣本分布為正態分布並且方差相同:

\[P(x^n,y=1)=P(y=1)P(x^n|y=1)=\pi{N(x^n|\mu_1,\Sigma)} \]

\[P(x^n,y=0)=P(y=0)P(x^n|y=0)=(1-\pi){N(x^n|\mu_2,\Sigma)} \]

這樣似然函數可以寫為:

\[\prod_{n=1}^N(\pi{N(x^n|\mu_1,\Sigma))}^{y^n}((1-\pi){N(x^n|\mu_2,\Sigma))}^{1-y^n} \]

為了確定聯合概率分布,需要確定\(\pi,\mu_1,\mu_2,\Sigma\)四個未知變量,分別為:

\[\pi=\frac{1}{N}\sum_{n=1}^Ny^n \]

\[\mu_1=\frac{1}{N_1}\sum_{n=1}^Ny^nx^n \]

\[\mu_2=\frac{1}{N_2}\sum_{n=1}^N(1-y^n)x^n \]

\[\Sigma=\frac{N_1}{N}S_1+\frac{N_2}{N}S_2 \]

其中:

\(S_1=\frac{1}{N_1}\sum_{n\in{y=1}}(x^n-\mu_1)(x^n-\mu_1)^T\)

\(S_2=\frac{1}{N_2}\sum_{n\in{y=0}}(x^n-\mu_2)(x^n-\mu_2)^T\)

可以看到先驗概率\(\pi\)就是樣本點所占的比例,而\(\mu_1\)\(\mu_2\)分別為兩類樣本的均值,協方差\(\Sigma\)為兩類樣本方差的加權平均。這些參數確定后,對於一個新的樣本\(x\),我們就可以很方便的獲得\(P(y=1|x)\)的取值。

4.6 生成模型和判別模型

給個例子感覺一下: 如果我想知道一個人A說的是哪個國家的語言,我應該怎么辦呢?

生成式模型

我把每個國家的語言都學一遍,這樣我就能很容易知道A說的是哪國語言,並且C、D說的是哪國的我也可以知道,進一步我還能自己講不同國家語言。

判別式模型

我只需要學習語言之間的差別是什么,學到了這個界限自然就能區分不同語言,我能說出不同語言的區別,但我不會講。

如果我有輸入數據\(x\),並且想通過標注\(y\)去區分不同數據屬於哪一類,生成式模型是在學習樣本和標注的聯合概率分布\(P(x,y)\) 而判別式模型是在學習條件概率\(P(y|x)\)

生成式模型\(P(x,y)\)可以通過貝葉斯公式轉化為\(P(y|x)=\frac{P(x,y)}{P(x)}\),並用於分類,而聯合概率分布\(P(x,y)\)也可用於其他目的,比如用來生成樣本對\((x,y)\)

判別式模型的主要任務是找到一個或一系列超平面,利用它(們)划分給定樣本\(x\)到給定分類\(y\),這也能直白的體現出“判別”模型這個名稱。

在4.5節中,直接用邏輯回歸建模就是判別式的模型,而對\(P(x^n,y=1)\)\(P(x^n,y=0)\)進行建模就是生成式的模型。

4.7 分類器評價標准

分類算法有很多,不同分分類算法又用很多不同的變種。不同的分類算法有不同的特定,在不同的數據集上表現的效果也不同,我們需要根據特定的任務進行算法的選擇,如何選擇分類,如何評價一個分類算法的好壞,直觀上來看,我們可以用正確率(accuracy)來評價分類算法。

正確率確實是一個很好很直觀的評價指標,但是有時候正確率高並不能代表一個算法就好。比如某個地區某天地震的預測,假設我們有一堆的特征作為地震分類的屬性,類別只有兩個:0:不發生地震、1:發生地震。一個不加思考的分類器,對每一個測試用例都將類別划分為0,那那么它就可能達到99%的正確率,但真的地震來臨時,這個分類器毫無察覺,這個人類帶來的損失是巨大的。為什么99%的正確率的分類器卻不是我們想要的,因為這里數據分布不均衡,類別1的數據太少,完全錯分類別1依然可以達到很高的正確率卻忽視了我們關注的東西。接下來詳細介紹一下分類算法的評價指標。

這里首先介紹幾個 常見 的 模型評價術語,現在假設我們的分類目標只有兩類,計為正例/正樣本(positive)和負例/負樣本(negtive)分別是:

1)True positives(TP): 被正確地划分為正例的個數,即實際為正例且被分類器划分為正例的實例數

2)False positives(FP): 被錯誤地划分為 正 例的個數,即 實際為負例但被分類器划分為正例的實例數;

3)False negatives(FN):被 錯誤地划分為 負 例的個數,即 實際為 正 例但被分類器划分為 負 例的實例數;

4)True negatives(TN): 被正確地划分為 負 例 的個數 ,即實際為 負 例且被分類器划分為 負 例的實例數。

混淆矩陣:

預測正 預測負 總計
實際正 TP FN 正樣本總數
實際負 FP TN 負樣本總數
總計 預測為正樣本的總數 預測為負樣本的總數 所有樣本總數

評價指標:

1)正確率(accuracy

正確率是我們最常見的評價指標, accuracy = (TP+TN)/(TP+FN+FP+TN),這個很容易理解,就是被分對的樣本數除以所有的樣本數,通常來說,正確率越高,分類器越好;

2)錯誤率(error rate)

錯誤率則與正確率相反,描述被分類器錯分的比例,error rate = (FP+FN)/(TP+FN+FP+TN),對某一個實例來說,分對與分錯是互斥事件,所以 accuracy =1 - error rate

3)靈敏度(sensitive

sensitive = TP/(TP+FN),表示的是所有正例中被分對的比例,衡量了分類器對正例的識別能力;

4)特效度(specificity)

specificity = TN/(FP+TN), 表示的是所有負例中被分對的比例,衡量了分類器對負例的識別能力;

FPR = 1-specificity=FP/(FP+TN),表示的是所有負例中被分錯的比例

5)精度(precision

精度是精確性的度量,表示被分為正例的示例中實際為正例的比例, precision=TP/(TP+FP)

6)召回率(recall

召回率是覆蓋面的度量,度量有多個正例被分為正例, recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率與靈敏度是一樣的。

ROC曲線

下圖是一個二分模型真實的輸出結果,一共有20個樣本,輸出的概率就是模型判定其為正例的概率,第二列是樣本的真實標簽。

其中class一欄表示真實值,p為正例,n為反例,這20個樣本中有10個正例10個反例;score一欄則是分類器給出的分類評分。一般的二分類的實現方法就是選擇一個閾值,將大於這個閾值的樣本認為是正例,小於這個閾值的樣本認為是反例。於是,不妨對 樣本4來看,如果將樣本4的評分設置為分類閾值,被分類器為正例的樣本有1 2 3 4,其中真正的正例樣本有1 2 4,故其TPR=3/10=0.3,FPR=1/10=0.1(分母雖然數值一樣但是意義不同,前面TPR的分母是樣本總體中的真正例個數,后者是樣本總體中的真反例個數)。接着不妨設置樣本9的評分0.51作為閾值,那么樣本1~9都會被分類器認為是正例樣本,其中為真正例的有1 2 4 5 6 96個,所以TPR=6/10=0.6,FPR=3/10=0.3.如此這樣,將1~20每個樣本的評分均作為分類器的判定閾值,可以得到20TPRFPR的有序數對;然后不妨以TPRFPR為兩個坐標軸建立一個直角坐標系,就可以得到這樣的圖像:

這樣每一組圖像在圖中都會有一個坐標,可以連成一條折線。一般地我們希望分類器得到的分類結果是完全正確的,也就是正例樣本全部都能夠被檢測出來,並且不會混入真反例樣本,這個時候TPR接近1且FPR接近0,反應在圖像上好的分類器的折線應該更加接近左上角。當樣本足夠多時,折線就近似為圓滑的曲線,類似於這個樣子:

從這個圖上看,分類器A的結果肯定比分類器B要好。

還有一種更直觀的繪制ROC曲線的方法,這邊簡單提一下。就是把橫軸的刻度間隔設為1/N,縱軸的刻度間隔設為1/P,N,P分別為負樣本與正樣本數量。然后再根據模型的輸出結果降序排列,依次遍歷樣本,從0開始繪制ROC曲線,每遇到一個正樣本就沿縱軸方向繪制一個刻度間隔的曲線,每遇到一個負樣本就沿橫軸方向繪制一個刻度間隔的曲線,遍歷完所有樣本點以后,曲線也就繪制完成了。究其根本,其最大的好處便是不需要再去指定閾值尋求關鍵點了,每一個樣本的輸出概率都算是一個閾值了。

聲明

本博客所有內容僅供學習,不為商用,如有侵權,請聯系博主謝謝。

參考文獻

[1] 人工智能:一種現代的方法(第3版)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM