統計學習基礎知識
文章目錄
統計學習基礎知識
- 統計學習種類
1.1 監督學習
1.1.1 分類問題
1.1.2 迴歸問題
1.2 非監督學習
- 統計學習中的基本概念
2.1 統計學習三要素:模型,策略,算法
2.2 欠擬合和過擬合
2.3 如何避免過擬合
2.3.1 從模型出發(交叉驗證,AIC, BIC)
2.3.2 從策略出發(正則化)
2.3.3 從尋優出發(Early Stopping)
2.3.4 從數據出發(增加數據集)
2.4 過擬合產生的原因
2.5 最大似然估計和貝葉斯估計
2.5.1 貝葉斯定理
2.5.2 最大似然
2.5.3 貝葉斯估計
- 線性迴歸
3.1 經典線性迴歸
3.2 嶺迴歸(ridge regression)
3.3 lasso迴歸和ElasticNet
- 線性分類
4.1 感知機
4.2 邏輯迴歸(logistic regression)
4.3 Softmax迴歸
4.4 廣義線性模型
4.5 從另一個角度看邏輯迴歸
4.6 生成模型和判別模型
4.7 分類器評價標準
現在我們開始統計學習系列課程的學習,首先先給大家介紹一下統計學習的基礎知識。
- 統計學習種類
統計學習一般分為兩個主要類別:監督學習(predictive learning, supervised learning)以及非監督學習(descriptive learning, unsupervised learning),因為監督學習在實際中應用更為廣泛,我們將主要精力放在監督學習上。
1.1 監督學習
監督學習的目標是在一個輸入輸出對的集合中(訓練集)D={(x_i,y_i)}_{i=1}^ND=(xi,yi)i=1N學習一個從輸入變量xx到輸出變量(標籤)yy的映射,NN是訓練樣本(採樣)的數目。簡單來看,x_ixi可以是一個向量,例如一個人的身高,體重等,複雜來看x_ixi可以是一張圖片,一句話,一封郵件,一個時間序列等等。輸出y_iyi可以是連續的,也可以是離散的,當y_iyi是連續的時,該學習問題被稱為迴歸(regression)問題,當y_iyi是離散的時,該學習問題被稱為分類(classification)問題。
1.1.1 分類問題
分類問題的輸出在y\in\left{1,2,3,…,C\right}y∈{1,2,3,…,C}中取值,C=2C=2對應二分類問題,C>2C>2對應多分類問題。
例如:
這是一個二分類問題,左側是形象化描述,方框中的訓練集用圖形展示,右側是數據化描述,訓練集用表格展示。訓練數據有很多個形狀和顏色,某些搭配是屬於‘yes’類的,某些搭配是屬於’no’類的,我們要推斷新出現的藍色的月亮,黃色的環和藍色的箭頭屬於哪一類(泛化能力)
概率描述的必要性
因為新出現的藍色的月亮,黃色的環和藍色的箭頭是在訓練集中沒有的,我們無法100%確定他們屬於哪一類別,所以要引入概率來描述這種不確定性
用條件概率p(y|x,D,M)p(y∣x,D,M)來描述輸出yy的概率分佈,xx是新出現的輸入,DD是訓練集,MM是選擇的模型,在上述例子中,p(yes|藍色月亮,D,M)+p(no|藍色月亮,D,M)=1p(yes∣藍色月亮,D,M)+p(no∣藍色月亮,D,M)=1。一般情況下,DD和MM都是確定的,所以條件概率也被簡寫為p(y|x)p(y∣x)。
給定輸出條件概率,我們一般用取值最大的猜測作為新輸入的推斷(預測)輸出\hat{y}y^:
\hat{y}=\hat{f}(x)=\mathop{\arg\max}_{c=1,2,…,C}p(y=c|x)y=f(x)=argmaxc=1,2,…,Cp(y=c∣x)
這對應著最可能的類別標籤,也叫作p(y|x)p(y∣x)的眾數。
一些實際應用
文本分類
xx是文本的一種結構化表示,文本分類是計算概率p(y=c|x)p(y=c∣x),一個特殊的應用是垃圾郵件過濾,其中y=1y=1代表垃圾郵件,y=0y=0代表非垃圾郵件
大部分分類學習算法要求輸入向量xx是定長的,可以用bag of words的方式來表示變長的文檔,基本思路是當詞jj在文檔ii中出現時x_{ij}=1xij=1,這樣訓練集就可以被結構化為一個binary的共現矩陣,在共現矩陣上可以應用各種分類算法來學習規律
圖片分類
圖片和文本都具備明顯的局部性,通過挖掘這種局部性而誕生的算法框架稱為卷積神經網絡和循環神經網絡,二者共同大力推動了AI從傳統統計學習向深度學習的發展
1.1.2 迴歸問題
分類問題的輸出yy是在一個連續的區間內取值,在推斷時取後驗概率分佈的期望E(y|x)E(y∣x)。其應用例子包括:
預測某隻股票第二天的最高股價
預測某篇文章接下去1小時的點擊次數
預測一個機器人手臂在空中的位置
預測某個醫院科室接下去一個月的就診人數
迴歸問題和分類問題的主要區別不是輸出的離散或者連續(就診人數也可以認為是一個多分類問題),二者最主要的區別是對輸出的分佈假設不同,後續我們會涉及到。
1.2 非監督學習
非監督學習只有輸入數據xx而沒有輸出yy,我們的目標是挖掘xx中感興趣的信息,非監督學習有時也被稱為知識發現,其代表就是聚類,主成分分析,關聯分析,協同過濾,社區發現等。以聚類為例:小時候你在區分貓和狗的時候,別人和你說,這是貓,那是狗,最終你遇到貓或狗你都能區別出來(而且知道它是貓還是狗),這是監督學習的結果。但如果小時候沒人教你區別貓和狗,不過你發現貓和狗之間存在差異,應該是兩種動物(雖然能區分但不知道貓和狗的概念),這是無監督學習的結果。
聚類正是做這樣的事,按照數據的特點,將數據劃分成多個沒有交集的子集(每個子集被稱為簇)。通過這樣的劃分,簇可能對應一些潛在的概念,但這些概念就需要人為的去總結和定義了。
聚類可以用來尋找數據的潛在的特點,還可以用來其他學習任務的前驅。比如市場分割。也許你在數據庫中存儲了許多客戶的信息,而你希望將他們分成不同的客戶群,這樣你可以對不同類型的客戶分別銷售產品或者分別提供更適合的服務。
聚類示意:
- 統計學習中的基本概念
讓我們看看一個簡單的案例,曲線擬合:
我們有如下的數據點,這個數據點是通過y=sin(2\pi x)y=sin(2πx)加上一些高斯噪聲生成的
現在考慮一個關於xx的多項式擬合上述藍顏色的點:
f(x,w)=w_0+w_1x+w_2x2+…+w_MxM=\sum_jw_jx^jf(x,w)=w0+w1x+w2x2+…+wMxM=j∑wjxj
雖然f(x,w)f(x,w)是關於xx的非線性函數,但是是關於參數ww的線性函數,這種和參數保持線性關係的模型被稱為線性模型。
可以通過最小化f(x,w)f(x,w)和yy的差別來求解參數ww,其中一種是誤差的平方和:
E(w)=\frac12\sum_n{f(x_n, w)-y_n}^2E(w)=21n∑{f(xn,w)−yn}2
因為E(w)E(w)是關於ww的二次函數,所以其導數是關於ww的一次函數,E(w)E(w)的最小值是唯一的,當數據量比較小時,可以通過最小二乘直接獲得解析解,在數據量比較大時,一般通過梯度下降法來逼近這個解。
2.1 統計學習三要素:模型,策略,算法
模型: 在上述的曲線擬合問題中,線性函數f(x,w)f(x,w)就是模型,當然我們也可以選擇其他的線性模型或者非線性模型,選擇合適的模型是應用統計學習算法的第一步
策略: 有了模型,統計學習接著需要考慮的是按照什麼樣的準則學習最優的模型,在上述的曲線擬合問題中,誤差平方和E(w)E(w)就是一個準則(策略,損失函數),其餘的準則還有0-1損失函數,絕對值損失函數,對數損失函數等
算法: 有了準則,就要考慮在該準則的約束下如何尋找參數ww的最小值,最常用的就是梯度下降法或者同類別的基於梯度的算法(我更傾向於叫這一步為優化或者尋優,算法是一個比較泛的概念)
2.2 欠擬合和過擬合
上述模型,策略和算法都是針對模型的學習過程(擬合過程)的,而統計學習最終是要預測我們沒有見過的樣本(泛化能力),這裡就涉及到一個在訓練樣本上的擬合程度的問題,是損失函數E(w)E(w)越小泛化能力越強嗎?答案是不一定,還是考慮上述曲線擬合問題,當多項式的階數MM不同時,擬合的效果如下:
可以看到在M=0M=0和M=1M=1時,模型未能很好的擬合訓練集的散點,在M=3M=3時看起來還不錯,在M=9M=9時擬合的程度最好,事實上,在M=9M=9時,可以做到E(w)=0E(w)=0(思考一下為什麼),但在M=9M=9時,擬合出來的曲線和真正的數據分佈的曲線y=sin(2\pi x)y=sin(2πx)相去甚遠,當有一個新的數據點出現時,例如在左邊的第一個和第二個點之間,預測曲線會給出一個非常差的預測結果,此時稱為模型過擬合。而在M=0M=0和M=1M=1時,稱為欠擬合。
2.3 如何避免過擬合
2.3.1 從模型出發(交叉驗證,AIC, BIC)
從曲線擬合問題的直觀上來看,我們可以選擇複雜度較低的模型,例如M=3M=3。那麼在面對一般化的問題時,該如何選取合適複雜度的模型呢?可以從訓練的數據集中抽出一部分,作為驗證集,驗證集不參與訓練,但是能夠作為一個假的測試集來驗證模型是欠擬合還是過擬合。
分割訓練集和驗證集,也是比較主觀的,如果分割的不合適,可能也對選出的模型泛化能力有負面作用,另外,訓練數據是比較珍貴的,扔掉一部分數據是比較可惜的,所以會採取利用全部數據的交叉驗證(cross validation)的方式:
上圖描述的是1010折交叉驗證,常用的還有33折,55折,NN折(NN為樣本數量)交叉驗證,NN折交叉驗證也稱為留一交叉驗證(leave one out cross validation),交叉驗證選擇在驗證集上平均誤差最低的模型。交叉驗證也存在一些缺陷,當模型比較複雜時,要訓練和測試多次,尤其當可選擇的模型範圍很大時,訓練和測試的次數會成指數級增加。但交叉驗證仍然是在數據集有限的情況下最常用也是最好用的避免過擬合的方式之一。
此外,還有計算量相對較小的AICAIC和BICBIC準則,AICAIC由日本統計學家赤池弘次在1974年提出,$BIC$1978年由Schwarz提出。他們提供了權衡估計模型複雜度和擬合數據優良性的標準。
AIC準則的其中一種表達式為:
AIC=k+E(w)AIC=k+E(w)
BIC準則的其中一種表達式為:
BIC=kln(N)+E(w)BIC=kln(N)+E(w)
其中kk代表模型參數的個數,NN代表訓練集樣本數目。通常AICAIC或BICBIC的取值越小,模型泛化能力越強。
2.3.2 從策略出發(正則化)
在參數取值圖中,我們可以看到,M=9M=9的多項式模型的參數取值和波動非常大,雖然這個模型有很強的能力來擬合訓練集。而在M=3M=3時,參數是在一個相對較為合理的範圍之內的,那麼如何把模型的參數限制在一個較為合理的範圍之內呢?我們考慮在損失函數E(w)E(w)上加入一個對參數取值的懲罰:
E(w)=\frac12\sum_n{f(x_n, w)-y_n}2+\frac\lambda2||w||2E(w)=21n∑{f(xn,w)−yn}2+2λ∣∣w∣∣2
參數\lambdaλ用來控制懲罰的程度,||w||∣∣w∣∣是L2L2範數,在迴歸問題中,上述策略被稱為嶺迴歸(ridge regression)。
或者:
E(w)=\frac12\sum_n{f(x_n, w)-y_n}^2+\lambda||w||_1E(w)=21n∑{f(xn,w)−yn}2+λ∣∣w∣∣1
||w||_1∣∣w∣∣1是L1L1範數,在迴歸問題中,上述策略被稱為lasso迴歸。他們的統計學意義我們後續會涉及。
2.3.3 從尋優出發(Early Stopping)
考慮上述多項式擬合M=9M=9的情況,那麼大的參數取值是尋優算法通過不斷迭代得到的。那麼我們在尋優時,是否能否通過早一些停止迭代來避免這個問題呢,答案是可以的,而且在實際工程中這個辦法也很有效,就是早停法(Early Stopping)。
一般在算法尋優時,訓練集和驗證集的誤差呈如下的曲線:
我們可以根據驗證集誤差的變化來決定何時停止訓練,選取參數被調整到最合適的模型。實際工程中,早停法有很多種應用方式,例如在連續多次迭代驗證集誤差都持續上升則停止,上升比例超過一定程度停止等等。
2.3.4 從數據出發(增加數據集)
考慮上述多項式擬合M=9M=9的情況,當我們把數據量從1010個增加到1515個和100100個的時候,擬合曲線有如下的變化:
直觀上來看,大的數據量和大的模型容量是適配的,這樣能在很大程度上避免過擬合,但是在實際工程中仍然要結合交叉驗證,正則化和早停法一起使用。另外,有標註的樣本是非常昂貴的,一方面需要在實際生產過程中採集樣本,另一方面要給每個樣本打上一個合適的標籤(答案)yy,有些標籤是隨著業務運行獲得的,有些標籤是需要人為標註的。
例如,在機器學習在風控場景的應用中,為了預測一個客戶未來貸款違約的可能性,我們要找很多歷史上違約和履約的客戶進行學習,而違約的客戶量本身就是很少的,壞樣本(違約)很珍貴。
在圖像識別中,為了識別一張圖片是貓還是狗,需要人為給每張圖片標註貓,狗或者其它的分類
為了識別一張圖片上的文字區域,需要人為給每個文字區域畫上框:
自動駕駛為了識別車道線,行人,建築物,汽車等元素,需要人為給每個像素點做標註:
自然語言處理為了識別每個單詞的詞性,需要人為給每個漢字做標註:
今年海釣比賽在廈門市與金門之間的海域舉行。
今(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)f(x;D)為在訓練集DD上學習的函數ff在新樣本xx上的預測輸出,yy代表真實的輸出
我們考慮在同一個學習場景下的很多個數據集,例如在曲線擬合案例中,在y=sin(2\pi x)y=sin(2πx)上生成很多個NN個點的數據集,學習算法在這些數據集上的期望預測為\bar{f}(x)=E_D(f(x;D))fˉ(x)=ED(f(x;D))
使用樣本數相同的不同訓練集產生的方差(variance)為:
var(x)=E_D((f(x;D)-\bar{f}(x))^2)var(x)=ED((f(x;D)−fˉ(x))2)
方差的含義:方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響。
期望輸出與真實標記的差別稱為偏差(bias),即:
bias(x)=(\bar{f}(x)-y)^2bias(x)=(fˉ(x)−y)2
偏差的含義:偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力。
模型的泛化能力可以分解為偏差和方差的和:
E_D((f(x;D)-y)2)=E_D((f(x;D)-\bar{f}(x))2)+(\bar{f}(x)-y)^2ED((f(x;D)−y)2)=ED((f(x;D)−fˉ(x))2)+(fˉ(x)−y)2
一般來說,偏差與方差是有衝突的,這稱為偏差-方差窘境(bias-variance dilemma)。考慮上述曲線擬合問題,如果我們在y=sin(2\pi x)y=sin(2πx)上新採樣1010個不同的樣本點,那麼99階的多項式將會發生非常大的波動,但仍然能擬合這1010個點,這就是低偏差,高方差的一個表現,最後泛化誤差仍然很高。下圖給出了一個示意圖:
一個形象的打靶示意圖來解釋bias和variance的區別:
那麼如何合理的在bias和variance中尋找一個折中呢,這時就可以考慮應用2.3節中的方法了。
2.5 最大似然估計和貝葉斯估計
2.5.1 貝葉斯定理
AA和BB代表兩個事件,則AA和BB共同發生的概率為:
P(A,B)=P(A|B)P(B)=P(B|A)P(A)P(A,B)=P(A∣B)P(B)=P(B∣A)P(A)
貝葉斯定理有如下表示:
P(A|B)=\frac{P(B|A)P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)P(A)
我們開看如下的具體案例:
假設一個人去醫院做一個結腸癌的檢查,這個檢查不太準確,一個確定有癌症的人可以有80%的概率檢查為陽性,一個沒有癌症的人可以有10%的概率檢查為陽性,即p(x=1|y=1)=0.8p(x=1∣y=1)=0.8,p(x=1|y=0)=0.1p(x=1∣y=0)=0.1
其中y=1y=1為這個人有癌症,y=0y=0為這個人沒有癌症,x=1x=1為檢查為陽性。
假設這個人的檢測呈陽性,那麼直觀來看他有很大的幾率有結腸癌。但是如果考慮結腸癌在人群中發生的概率P(y=1)=0.004P(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.031P(y=1∣x=1)=P(x=1∣y=1)P(y=1)+P(x=1∣y=0)P(y=0)P(x=1∣y=1)P(y=1)=0.031
也就是說只有百分之三的概率這個人真正有結腸癌,這就是先驗知識對觀測的修正作用,貝葉斯定理在統計學習中應用十分廣泛,下兩小節我們考慮一個簡單的參數估計和統計推斷問題來探索一下貝葉斯估計的應用。
2.5.2 最大似然
考慮一個扔硬幣問題,硬幣投擲的結果x\in{0,1}x∈{0,1},其中x=1x=1代表投擲結果為正面,x=0x=0代表投擲結果為反面。我們假設這個硬幣是不均勻的,也就是每次投擲正反面出現的概率是不一樣的,假設正面的概率為\muμ
p(x=1|\mu)=\mup(x=1∣μ)=μ
那麼自然,反面的概率為1-\mu1−μ:
p(x=0|\mu)=1-\mup(x=0∣μ)=1−μ
統一上述兩式子就是經典的伯努利分佈(Bernoulli distribution)
p(x|\mu)=\mux(1-\mu){1-x}p(x∣μ)=μx(1−μ)1−x
假設我們觀測了一個投擲序列D={x_1,x_2,…,x_N}D={x1,x2,…,xN},似然函數定義為這些觀測出現的概率乘積
p(D|\mu)=\prod_{n=1}N{p(x_n|\mu)}=\prod_{n=1}N{\mu{x_n}(1-\mu){1-x_n}}p(D∣μ)=n=1∏Np(xn∣μ)=n=1∏Nμxn(1−μ)1−xn
最大似然就是認為\muμ的取值應該使似然函數取值最大,假設我們觀測10次,其中有7個正面,3個反面,那麼似然函數為:
p(D|\mu)=\mu7(1-\mu)3p(D∣μ)=μ7(1−μ)3
上述式子求最大值可以先進行對數,變成ln(p(D|\mu))=7ln\mu+3ln(1-\mu)ln(p(D∣μ))=7lnμ+3ln(1−μ),對其求導,可以得到\mu=0.7μ=0.7
一般來說,有\mu_{ML}=\frac1N{\sum_{n=1}^N{x_n}}μML=N1∑n=1Nxn
2.5.3 貝葉斯估計
在上述的最大似然中,存在一個致命的問題,假設我們觀測的樣本數量為3個,但是3次都是正面,我們會得出\mu_{ML}=1μML=1,即我們會判斷以後每一次都會扔出正面,這符合數學邏輯,但是不符合我們的常識和直觀感受,比如有人在你之前扔過這個硬幣20次,其中正面是10次,那此時你是否還非常確信以後每一次都是正面呢?是否要修正自己的判斷呢?那如何修正自己的判斷呢?此時就要在似然函數的基礎上引入關於\muμ的先驗分佈。
假設有如下的關於\muμ的先驗分佈:
p(\mu)\propto\mu{10}(1-\mu){10}p(μ)∝μ10(1−μ)10
此時根據貝葉斯定理:
p(\mu|D)\propto{p(D|\mu)p(\mu)}p(μ∣D)∝p(D∣μ)p(μ)
此時結合我們的觀測3次,正面次數為3次,可知:
p(\mu|D)\propto\mu{13}(1-\mu){10}p(μ∣D)∝μ13(1−μ)10
此時我們最大化p(\mu|D)p(μ∣D)會得到\mu_{MAP}=\frac{13}{23}μMAP=2313,這個推斷要遠遠比\mu_{ML}=1μML=1更加合理,這就是引入先驗知識的意義。在我們觀測的樣本量比較小的時候,引入先驗分佈會顯得尤為重要。這種將結合先驗和似然結合到一起的參數估計方式也稱為最大後驗概率推斷(MAP: Max a Posterior)
(基於篇幅有限,此段略去大量的數學證明和數學表達,只為讓大家能夠形象化的理解貝葉斯估計的思想,準確的數學推導可以參考Pattern Recognition and Machine Learning,以及Machine Learning A Probabilistic Perspective)
- 線性迴歸
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^Txhθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=i=0∑nθixi=θTx
其中x_0=1x0=1,當x=(x_0,x_1)x=(x0,x1)時,就是一元的線性迴歸,例如房屋面積和銷售價格的關係:
Living area(feet^2)Price
2104400
1600330
2400369
……
xx和yy的散點圖如下:
一元線性迴歸的函數表達形式h_{\theta}(x)hθ(x)是二維平面上的一條直線:
我們可以引入更高維度的特徵變量xx,考慮多變量的例子:
Living area(feet^2)badroomsPrice
21043400
16003330
24002369
………
此時稱為多元線性迴歸,實際上函數h_{\theta}(x)hθ(x)擬合的是一個高維空間中的平面:
現在我們假設預測值\theta^TxθTx與真實值yy之間存在一個誤差\epsilonϵ, 於是可以這樣寫:
y = \theta^Tx + \epsilony=θTx+ϵ
線性迴歸假設\epsilonϵ是獨立同分布的, 服從與均值為00, 方差為\sigma^2σ2的正態分佈(高斯分佈)
P(\epsilon) = \frac{ 1 }{\sqrt{2\pi}\sigma} e{-\frac{(\epsilon)2}{2\sigma^2}}P(ϵ)=2πσ1e−2σ2(ϵ)2
那麼yy服從均值為\thetaTxθTx,方差為\sigma2σ2的正態分佈:
P(y|x;\theta) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y - \thetaTx)2}{2\sigma^2}}P(y∣x;θ)=2πσ1e−2σ2(y−θTx)2
所有的樣本可以認為是從上述分佈中抽樣,則MM個樣本的似然函數為:
L(\theta) = \prod_{i=1}{m}\rho(yi|x^i;\theta) = \prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e{-\frac{(yi - \thetaTxi)2}{2\sigma2}}L(θ)=i=1∏mρ(yi∣xi;θ)=i=1∏m2πσ1e−2σ2(yi−θTxi)2
上面的函數式子中,xixi與yiyi都是已知的樣本,θθ是要學習的參數。
為計算方便,我們把L(\theta)L(θ)取對數:
logL(\theta)\ = log\prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e{-\frac{(yi - \thetaTxi)2}{2\sigma2}}\ = \sum_{i=1}^mlog\frac{ 1 }{\sqrt{2\pi}\sigma}e{-\frac{(yi - \thetaTxi)2}{2\sigma2}}\ = mlog\frac{ 1 }{\sqrt{2\pi}\sigma}-\frac{1}{\sigma2}\centerdot\frac{1}{2}\sum_{i=1}m(y^i - \thetaTxi)^2logL(θ)=logi=1∏m2πσ1e−2σ2(yi−θTxi)2=i=1∑mlog2πσ1e−2σ2(yi−θTxi)2=mlog2πσ1−σ21⋅21i=1∑m(yi−θTxi)2
上面的公式取最大值,也就是下面的函數取最小值:
J(\theta) = \frac{1}{2}\sum_{i=1}m(h_{\theta}(xi) - yi)2J(θ)=21i=1∑m(hθ(xi)−yi)2
求J(\theta)J(θ)的最小值,可以直接對上式求駐點:
首先,將上式變形:
J(\theta) = \frac{1}{2}\sum_{i=1}m(h_{\theta}(xi) - yi)2\ = \frac{1}{2}(X\theta - y)^T(X\theta - y)J(θ)=21i=1∑m(hθ(xi)−yi)2=21(Xθ−y)T(Xθ−y)
下一步對參數\thetaθ求導可得:
\bigtriangledown_{\theta} J(\theta) = \bigtriangledown_{\theta}(\frac{1}{2}(X\theta - y)^T(X\theta - y))\ =\bigtriangledown_{\theta}(\frac{1}{2}(\thetaTXT-y^T)(X\theta - y)\ =\bigtriangledown_{\theta}(\frac{1}{2}(\thetaTXTX\theta-\thetaTXTy-yTX\theta+yTy) \ = \frac{1}{2}(2XTX\theta-XTy-(yTX)T)\ = XTX\theta-XTy▽θJ(θ)=▽θ(21(Xθ−y)T(Xθ−y))=▽θ(21(θTXT−yT)(Xθ−y)=▽θ(21(θTXTXθ−θTXTy−yTXθ+yTy)=21(2XTXθ−XTy−(yTX)T)=XTXθ−XTy
駐點滿足:
XTX\theta-XTy = 0XTXθ−XTy=0
即得到 :
\theta = (XTX){-1}X^Tyθ=(XTX)−1XTy
上式也稱為Normal Equation,當然也可以利用梯度下降法迭代求解:
\theta_j=\theta_j-\alpha \dfrac{\partial}{\partial \theta_j}J(\theta) =\theta_j-\alpha\sum_{i=1}m(h_{\theta}(xi) - yi)x_j{i}θj=θj−α∂θj∂J(θ)=θj−αi=1∑m(hθ(xi)−yi)xji
梯度下降法和Normal Equation的區別如下:
Gradient DescentNormal Equation
需要選擇學習率\alphaα無需選擇學習率
需要迭代,需要選擇初始值不需要迭代
不需要求逆矩陣需要求矩陣X^TXXTX的逆矩陣,複雜度較高
當特徵維度nn很高時也能使用特徵維度nn很高時幾乎無法使用
在工程上一般採取梯度下降法或者隨機梯度下降法求解。
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}argmaxθL(θ)=lni=1∏nσ2π1e−2σ2(yi−θTxi)2⋅j=1∏dτ2π1e−2τ2θ2=−2σ21i=1∑n(yi−θTxi)2−2τ21i=1∑dθj2−nlnσ2π−dlnτ2π
最大似然等價於最小化如下的損失函數:
\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}argminθf(θ)=i=1∑n(yi−θTxi)2+λj=1∑dθj2
嶺迴歸的Normal Equation為:
\theta = (X^TX+\lambda I){-1}XTyθ=(XTX+λI)−1XTy
嶺迴歸因為矩陣\lambda IλI的對角元素全是11,像一條山嶺,故而得名。嶺迴歸的示意圖如下:
嶺迴歸因為對參數取值範圍的抑制在一定程度上避免了過擬合的問題,另外在存在特徵變量間的共線性時(特徵變量間有較強的相關性)可以避免X^TXXTX不可逆的情況。
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}argmaxθL(θ)=lni=1∏nσ2π1e−2σ2(yi−θTxi)2⋅j=1∏d2b1e−b∣θi∣=−2σ21i=1∑n(yi−θTxi)2−b1i=1∑d∣θj∣−nlnσ2π−dln2b
最大似然等價於最小化如下的損失函數:
\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}argminθf(θ)=i=1∑n(yi−θTxi)2+λj=1∑d∥θj∥1
因為\lVert \theta_{j} \rVert_{1}∥θj∥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}argminθf(θ)=i=1∑n(yi−θTxi)2+λ1j=1∑dθj2+λ2j=1∑d∥θj∥1
- 線性分類
通俗來講,分類是將NN個樣本點xx分為CC類的過程,不同的樣本類別在空間中的邊界稱為決策邊界,當決策邊界是輸入的線性組合時(DD維的空間中是一個D-1D−1維的超平面),稱為線性分類,示意圖如下:
一維數據的線性決策邊界:
二維數據的線性決策邊界:
三維數據的線性決策邊界:
上述三種場景都是線性可分的,即可以找到一個超平面將樣本分開。有時樣本的空間分佈無法找到這樣的一個超平面線性可分,如下圖的樣本分佈:
此時雖然仍然可以利用線性決策邊界,但是分類的效果就會變得很差,這種數據的分佈就會用到其它非線性的方法如神經網絡,knn,決策樹等等,或者對其做一些變換讓其線性可分(支持向量機等)這些是後面要討論的內容。
數據集的線性可分性定義如下(針對二分類):
給定一個數據集:
T = {(x_1, y_1), (x_2, y_2), …, (x_N, y_N)},T={(x1,y1),(x2,y2),…,(xN,yN)},
其中,x_i \in R^{\ n}, \ y_i \in \gamma = {+1, -1}, \ i = 1, 2, …, Nxi∈R n, yi∈γ={+1,−1}, i=1,2,…,N,如果存在某個超平面SS:
w \cdot x + b = 0w⋅x+b=0
能夠將數據集的正實例點和負實例點完全正確地劃分到超平面的兩側,則稱數據集為線性可分數據集(linear separable data set)。
線性分類任務的目標就使數據集儘可能的分到SS兩側(數據集本身不一定是線性可分的),錯誤分配的樣本會用一個損失函數來量化,最後通過最小化這個損失函數來找到參數ww和bb
4.1 感知機
感知機是1957年,由Rosenblatt提出。感知機是二分類的線性模型,其輸入是實例的特徵向量,輸出的是事例的類別,分別是+1+1和-1−1。假設訓練數據集是線性可分的,感知機學習的目標是求得一個能夠將訓練數據集正實例點和負實例點完全正確分開的分離超平面。如果是非線性可分的數據,則最後無法獲得超平面。
感知機從輸入空間樣本xx到輸出空間樣本yy的模型如下:
f(x)=sign(w \cdot {x}+b)f(x)=sign(w⋅x+b)
其中:
sign(x)= \begin{cases} -1& {x<0}\ 1& {x\geq 0} \end{cases}sign(x)={−11x<0x≥0
MM為誤分點的集合,感知機的優化目標是最小化如下函數:
L(w,b) = \sum\limits_{{x_i} \in M}^{} { - {y_i}(w{x_i} + b)}L(w,b)=xi∈M∑−yi(wxi+b)
其導數如下:
使用隨機梯度下降每次選一個樣本點做更新:
算法流程:
輸入:訓練數據集T = {(x_1, y_1), (x_2, y_2), …, (x_N, y_N)}T={(x1,y1),(x2,y2),…,(xN,yN)},其中
x_i \in \chi = R^{\ n}, \ y_i \in \gamma = {+1, -1}, \ i = 1, 2, …, Nxi∈χ=R n, yi∈γ={+1,−1}, i=1,2,…,N。學習率\eta(0 < \eta \leq 1)η(0
輸出:w, bw,b;感知機模型:f(x) = sign(w \cdot x + b)f(x)=sign(w⋅x+b)
STEP 1選取初值w_0, b_0w0,b0
STEP 2在訓練集中選取數據(w_i, y_i)(wi,yi)
STEP 3如果y_i(w \cdot x_i + b) \leq 0yi(w⋅xi+b)≤0,則:
w \leftarrow w + \eta y_ix_i \ b \leftarrow b + \eta y_iw←w+ηyixib←b+ηyi
STEP 4轉至步驟2,直到訓練集中沒有誤分類點。
動手做一做
訓練數據集:
正實例點是[10,8],[6,9],[6,8],[7,6],[7,8],[9,6],[11,3],[10,6],[12,5][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][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}y∈{0,1},為了使輸出在00到11之間,邏輯迴歸採用如下的函數形式:
h_\theta(x)=\frac{1}{1+e{-\thetaTx}}hθ(x)=1+e−θTx1
即將線性迴歸的函數形式\theta^TxθTx用logistic sigmoid函數進行映射,logistic sigmoid函數的形式為:
\sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e−z1
該函數具有如下的特性:當xx趨近於負無窮時,yy趨近於00;當xx趨近於正無窮時,yy趨近於1;當x= 0x=0時,y=0.5y=0.5
最早logistic sigmoid函數是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增長的關係時命名的。sigmoid曲線可以模仿一些情況人口增長的 S 形曲線。起初階段大致是指數增長;然後隨著開始變得飽和,增加變慢;最後,達到成熟時增加停止。
邏輯迴歸假設yy服從伯努利分佈,並且用h_\theta(x)hθ(x)代表y=1y=1的概率,即:
P(y=1|x;\theta) = h_\theta(x)P(y=1∣x;θ)=hθ(x)
P(y=0|x;\theta) = 1-h_\theta(x)P(y=0∣x;θ)=1−hθ(x)
將上述兩個式子合併成一個:
P(y|x;\theta) = (h_\theta(x))y(1-h_\theta(x)){1-y}P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
現在有訓練數據集T = {(x^1, y^1), (x^2, y^2), …, (x^N, y^N)}T={(x1,y1),(x2,y2),…,(xN,yN)}
似然函數為:
l(\theta)=\prod_{i=1}{N}P(yi|xi;\theta)=\prod_{i=1}{N} (h_\theta(xi)){yi}(1-h_\theta(xi)){1-yi}l(θ)=i=1∏NP(yi∣xi;θ)=i=1∏N(hθ(xi))yi(1−hθ(xi))1−yi
最大似然等價於對似然函數的負對數求最小值:
J(\theta)=-lnl(\theta)=-\sum_{i=1}N(yiln(h_\theta(xi))+(1-yi)ln(1-h_\theta(x^i)))J(θ)=−lnl(θ)=−i=1∑N(yiln(hθ(xi))+(1−yi)ln(1−hθ(xi)))
利用梯度下降求解的參數的更新公式為:
\theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta)θj:=θj−α∂θj∂J(θ)
展開後為:
\theta_j:=\theta_j-\alpha\sum_{i=1}N(h_{\theta}(xi) - yi)x_j{i}θj:=θj−αi=1∑N(hθ(xi)−yi)xji
可以看到邏輯迴歸的參數更新遞推式和線性迴歸的參數更新遞推式在形式上是一樣的,只是邏輯迴歸的h_\theta(x)hθ(x)是在線性迴歸的h_\theta(x)=\theta^Txhθ(x)=θTx的外面套了一層sigmoid函數。
4.3 Softmax迴歸
在 softmax迴歸中,我們解決的是多分類問題(相對於 logistic 迴歸解決的二分類問題)。
因此對於訓練集T = {(x^1, y^1), (x^2, y^2), …, (x^N, yN)}T={(x1,y1),(x2,y2),…,(xN,yN)},我們有yi\in{1,2,…,k}yi∈{1,2,…,k}。(注意此處的類別下標從$ 1 $開始,而不是 00)。
對於給定的輸入xx,我們想用假設函數針對每一個類別j估算出概率值P(y=j|x)P(y=j∣x)。也就是說,我們想估計xx的每一種分類結果出現的概率。因此,我們的假設函數將要輸出一個kk維的向量(向量元素的和為11)來表示這kk個估計的概率值。 具體地說,我們的假設函數h_\theta(x)hθ(x)形式如下:
softmax迴歸的代價函數為(推導過程略去):
其中1{}1{}為示性函數,{}{}中的取值為真的時候為11,否則為00。
值得注意的是,上述公式是logistic迴歸代價函數的推廣。logistic迴歸代價函數可以改為:
對於J(\theta)J(θ)的最小化問題,目前還沒有閉式解法。因此,我們使用迭代的優化算法(例如梯度下降法)。經過求導,我們得到梯度公式如下:
有了梯度,就可以用梯度下降法去迭代更新參數了。
Softmax 迴歸 vs. k 個二元分類器
如果你在開發一個音樂分類的應用,需要對kk種類型的音樂進行識別,那麼是選擇使用 softmax 分類器呢,還是使用 logistic 迴歸算法建立$ k $個獨立的二元分類器呢?
這一選擇取決於你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那麼你可以假設每個訓練樣本只會被打上一個標籤(即:一首歌只能屬於這四種音樂類型的其中一種),此時你應該使用類別數 k = 4k=4 的softmax迴歸。(如果在你的數據集中,有的歌曲不屬於以上四類的其中任何一類,那麼你可以添加一個“其他類”,並將類別數kk設為55。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那麼這些類別之間並不是互斥的。例如:一首歌曲可以來源於影視原聲,同時也包含人聲 。這種情況下,使用44個二分類的 logistic 迴歸分類器更為合適。這樣,對於每個新的音樂作品 ,我們的算法可以分別判斷它是否屬於各個類別。
現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax迴歸還是$ 3$個logistic 迴歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 迴歸還是多個 logistic 迴歸分類器呢?
在第一個例子中,三個類別是互斥的,因此更適於選擇softmax迴歸分類器 。而在第二個例子中,建立三個獨立的 logistic迴歸分類器更加合適。
4.4 廣義線性模型
在之前的章節中,我們談到了服從高斯分佈的線性迴歸和服從伯努利分佈的邏輯迴歸,它們的解決過程十分相似。實際上,他們都是廣義線性模型的特例,對於這類問題我們有比較統一的解決方案。
在介紹廣義線性模型之前,我們先來引入指數分佈族這一概念,一個單參數指數分佈族可以表示為:
p(y;\eta) = b(y)exp(\eta^TT(y) - a(\eta))p(y;η)=b(y)exp(ηTT(y)−a(η))
在這裡,\etaη被稱為自然參數(natrual parameter),一般來說,T(y) = yT(y)=y,a(\eta)a(η)被稱為log partition function。這裡e^{-a(\eta)}e−a(η)起到歸一化常數的作用。如果我們確定T, a, bT,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)p(y;ϕ)=ϕy(1−ϕ)(1−y)=exp(ylogϕ+(1−y)log(1−ϕ))=exp(log(1−ϕϕ)y+log(1−ϕ))
很顯然,伯努利方程是符合指數分佈族形式:
\eta = log(\frac{\phi} {1- \phi}) \ T(y) = y \ a(\eta) = -log(1 - \phi) = log(1 + e^\eta) \ b(y) = 1 \η=log(1−ϕϕ)T(y)=ya(η)=−log(1−ϕ)=log(1+eη)b(y)=1
可以看到上式蘊含著:\phi = \frac{1}{1 + e^{(- \eta)}}ϕ=1+e(−η)1,也就是我們之前引入的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)p(y;μ)=2π1exp(−21(y−μ)2)=2π1exp(−21y2)exp(μy−21μ2)
因此,在指數分佈族形式下,我們只需要進行如下轉換:
\eta = \mu \ T(y) = y \ a(\eta) = \mu^2/2 = \eta^2/2 \ b(y) = (1/\sqrt{2\pi})exp(-y^2/2)η=μT(y)=ya(η)=μ2/2=η2/2b(y)=(1/2π)exp(−y2/2)
還有很多常見的分佈都屬於指數分佈族,在此就不展開。
廣義線性模型
廣義線性模型有如下的假設:
P(y|x;\theta) \sim 指數分佈(\eta)P(y∣x;θ)∼指數分佈(η)
\etaη與xx成線性關係,即\eta = \theta^TXη=θTX
給定一個xx,我們需要目標函數為h_\theta(x) = E[y|x]hθ(x)=E[y∣x]
根據如上假設,我們可以推導出高斯分佈的線性迴歸模型:
h_\theta(x) = E[y|x;\theta] \ = \mu \ = \eta \ = \theta^Txhθ(x)=E[y∣x;θ]=μ=η=θTx
上式中第一個等號是因為假設三,第二個等號則是由於高斯分佈的基本性質,第三個等號則是由於前文中高斯分佈中推導過的和的關係,最後一個等號則是由於假設二。
同樣,我們也可以推導出邏輯迴歸模型:
h_\theta(x) = E[y|x;\theta] \ = \phi \ = \frac{1}{1 + e^{-\eta}} \ = \frac{1}{1 + e{-\thetaTx}}hθ(x)=E[y∣x;θ]=ϕ=1+e−η1=1+e−θTx1
上式中第一個等號是因為假設三,第二個等號則是由於伯努利分佈的基本性質,第三個等號則是由於前文中伯努利分佈中推導過的和的關係,最後一個等號則是由於假設二。
從以上可以看出,線性迴歸和邏輯迴歸的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)}P(y=1∣x)=P(x∣y=1)P(y=1)+P(x∣y=0)P(y=0)P(x∣y=1)P(y=1)
如果我們定義:
\eta=ln\frac{P(x|y=1)P(y=1)}{P(x|y=0)P(y=0)}η=lnP(x∣y=0)P(y=0)P(x∣y=1)P(y=1)
那麼有:
P(y=1|x)=\frac{1}{1+e^{-\eta}}P(y=1∣x)=1+e−η1
這和我們最初引入的sigmoid函數形式也是一致的。
實際上,給定y=0y=0和y=1y=1這兩個類別的樣本的分佈假設(如高斯分佈),我們是可以用最大似然求解分佈的均值和方差的,進而可以顯示的得到聯合概率分佈P(y=1,x)P(y=1,x)和P(y=0,x)P(y=0,x),進而獲得後驗概率P(y=1|x)P(y=1∣x)。只不過在邏輯迴歸中,直接用線性表達式\eta=\theta^Txη=θTx來對ln\frac{P(x|y=1)P(y=1)}{P(x|y=0)P(y=0)}lnP(x∣y=0)P(y=0)P(x∣y=1)P(y=1)進行建模。這就引出了4.6節的生成模型和判別模型。
極大似然的求解示意:
假設先驗P(y=1)=\piP(y=1)=π,則P(y=0)=1-\piP(y=0)=1−π,對於一個來自y=1y=1類別的數據點x^nxn,聯合概率分佈如下,假設每一類的樣本分佈為正態分佈並且方差相同:
P(xn,y=1)=P(y=1)P(xn|y=1)=\pi{N(x^n|\mu_1,\Sigma)}P(xn,y=1)=P(y=1)P(xn∣y=1)=πN(xn∣μ1,Σ)
P(xn,y=0)=P(y=0)P(xn|y=0)=(1-\pi){N(x^n|\mu_2,\Sigma)}P(xn,y=0)=P(y=0)P(xn∣y=0)=(1−π)N(xn∣μ2,Σ)
這樣似然函數可以寫為:
\prod_{n=1}N(\pi{N(xn|\mu_1,\Sigma))}{yn}((1-\pi){N(xn|\mu_2,\Sigma))}{1-y^n}n=1∏N(πN(xn∣μ1,Σ))yn((1−π)N(xn∣μ2,Σ))1−yn
為了確定聯合概率分佈,需要確定\pi,\mu_1,\mu_2,\Sigmaπ,μ1,μ2,Σ四個未知變量,分別為:
\pi=\frac{1}{N}\sum_{n=1}Nynπ=N1n=1∑Nyn
\mu_1=\frac{1}{N_1}\sum_{n=1}Nynx^nμ1=N11n=1∑Nynxn
\mu_2=\frac{1}{N_2}\sum_{n=1}N(1-yn)x^nμ2=N21n=1∑N(1−yn)xn
\Sigma=\frac{N_1}{N}S_1+\frac{N_2}{N}S_2Σ=NN1S1+NN2S2
其中:
S_1=\frac{1}{N_1}\sum_{n\in{y=1}}(xn-\mu_1)(xn-\mu_1)^TS1=N11∑n∈y=1(xn−μ1)(xn−μ1)T
S_2=\frac{1}{N_2}\sum_{n\in{y=0}}(xn-\mu_2)(xn-\mu_2)^TS2=N21∑n∈y=0(xn−μ2)(xn−μ2)T
可以看到先驗概率\piπ就是樣本點所佔的比例,而\mu_1μ1和\mu_2μ2分別為兩類樣本的均值,協方差\SigmaΣ為兩類樣本方差的加權平均。這些參數確定後,對於一個新的樣本xx,我們就可以很方便的獲得P(y=1|x)P(y=1∣x)的取值。
4.6 生成模型和判別模型
給個例子感覺一下: 如果我想知道一個人A說的是哪個國家的語言,我應該怎麼辦呢?
生成式模型
我把每個國家的語言都學一遍,這樣我就能很容易知道A說的是哪國語言,並且C、D說的是哪國的我也可以知道,進一步我還能自己講不同國家語言。
判別式模型
我只需要學習語言之間的差別是什麼,學到了這個界限自然就能區分不同語言,我能說出不同語言的區別,但我不會講。
如果我有輸入數據xx,並且想通過標註yy去區分不同數據屬於哪一類,生成式模型是在學習樣本和標註的聯合概率分佈P(x,y)P(x,y) 而判別式模型是在學習條件概率P(y|x)P(y∣x) 。
生成式模型P(x,y)P(x,y)可以通過貝葉斯公式轉化為P(y|x)=\frac{P(x,y)}{P(x)}P(y∣x)=P(x)P(x,y),並用於分類,而聯合概率分佈P(x,y)P(x,y)也可用於其他目的,比如用來生成樣本對(x,y)(x,y)
判別式模型的主要任務是找到一個或一系列超平面,利用它(們)劃分給定樣本xx到給定分類yy,這也能直白的體現出“判別”模型這個名稱。
在4.5節中,直接用邏輯迴歸建模就是判別式的模型,而對P(xn,y=1)P(xn,y=1)和P(xn,y=0)P(xn,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): 被正確地劃分為 負 例 的個數 ,即實際為 負 例且被分類器劃分為 負 例的實例數。
混淆矩陣:
預測正預測負總計
實際正TPFN正樣本總數
實際負FPTN負樣本總數
總計預測為正樣本的總數預測為負樣本的總數所有樣本總數
評價指標:
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 9共6個,所以TPR=6/10=0.6,FPR=3/10=0.3.如此這樣,將1~20每個樣本的評分均作為分類器的判定閾值,可以得到20組TPR和FPR的有序數對;然後不妨以TPR和FPR為兩個座標軸建立一個直角座標系,就可以得到這樣的圖像:
這樣每一組圖像在圖中都會有一個座標,可以連成一條折線。一般地我們希望分類器得到的分類結果是完全正確的,也就是正例樣本全部都能夠被檢測出來,並且不會混入真反例樣本,這個時候TPR接近1且FPR接近0,反應在圖像上好的分類器的折線應該更加接近左上角。當樣本足夠多時,折線就近似為圓滑的曲線,類似於這個樣子:
從這個圖上看,分類器A的結果肯定比分類器B要好。
還有一種更直觀的繪製ROC曲線的方法,這邊簡單提一下。就是把橫軸的刻度間隔設為1/N,縱軸的刻度間隔設為1/P,N,P分別為負樣本與正樣本數量。然後再根據模型的輸出結果降序排列,依次遍歷樣本,從0開始繪製ROC曲線,每遇到一個正樣本就沿縱軸方向繪製一個刻度間隔的曲線,每遇到一個負樣本就沿橫軸方向繪製一個刻度間隔的曲線,遍歷完所有樣本點以後,曲線也就繪製完成了。究其根本,其最大的好處便是不需要再去指定閾值尋求關鍵點了,每一個樣本的輸出概率都算是一個閾值了。