統(tǒng)計學(xué)習(xí)基礎(chǔ)知識
文章目錄
2.1 統(tǒng)計學(xué)習(xí)三要素:模型,策略,算法
2.3.1 從模型出發(fā)(交叉驗證,AIC, BIC)
2.3.3 從尋優(yōu)出發(fā)(*Early Stopping*)
2.3.4 從數(shù)據(jù)出發(fā)(增加數(shù)據(jù)集)
4.2 邏輯回歸(*logistic regression*)
現(xiàn)在我們開始統(tǒng)計學(xué)習(xí)系列課程的學(xué)習(xí),首先先給大家介紹一下統(tǒng)計學(xué)習(xí)的基礎(chǔ)知識。
統(tǒng)計學(xué)習(xí)一般分為兩個主要類別:監(jiān)督學(xué)習(xí)(predictive learning, supervised learning)以及非監(jiān)督學(xué)習(xí)(descriptive learning, unsupervised learning),因為監(jiān)督學(xué)習(xí)在實際中應(yīng)用更為廣泛,我們將主要精力放在監(jiān)督學(xué)習(xí)上。
監(jiān)督學(xué)習(xí)的目標(biāo)是在一個輸入輸出對的集合中(訓(xùn)練集)D={(x_i,y_i)}_{i=1}^ND=(xi?,yi?)i=1N?學(xué)習(xí)一個從輸入變量xx到輸出變量(標(biāo)簽)yy的映射,NN是訓(xùn)練樣本(采樣)的數(shù)目。簡單來看,x_ixi?可以是一個向量,例如一個人的身高,體重等,復(fù)雜來看x_ixi?可以是一張圖片,一句話,一封郵件,一個時間序列等等。輸出y_iyi?可以是連續(xù)的,也可以是離散的,當(dāng)y_iyi?是連續(xù)的時,該學(xué)習(xí)問題被稱為回歸(regression)問題,當(dāng)y_iyi?是離散的時,該學(xué)習(xí)問題被稱為分類(classification)問題。
分類問題的輸出在y\in\left\{1,2,3,...,C\right\}y∈{1,2,3,...,C}中取值,C=2C=2對應(yīng)二分類問題,C>2C>2對應(yīng)多分類問題。
例如:
這是一個二分類問題,左側(cè)是形象化描述,方框中的訓(xùn)練集用圖形展示,右側(cè)是數(shù)據(jù)化描述,訓(xùn)練集用表格展示。訓(xùn)練數(shù)據(jù)有很多個形狀和顏色,某些搭配是屬于‘yes’類的,某些搭配是屬于’no’類的,我們要推斷新出現(xiàn)的藍色的月亮,黃色的環(huán)和藍色的箭頭屬于哪一類(泛化能力)
概率描述的必要性
因為新出現(xiàn)的藍色的月亮,黃色的環(huán)和藍色的箭頭是在訓(xùn)練集中沒有的,我們無法100%確定他們屬于哪一類別,所以要引入概率來描述這種不確定性
用條件概率p(y|x,D,M)p(y∣x,D,M)來描述輸出yy的概率分布,xx是新出現(xiàn)的輸入,DD是訓(xùn)練集,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)。
給定輸出條件概率,我們一般用取值最大的猜測作為新輸入的推斷(預(yù)測)輸出\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,...,C?p(y=c∣x)
這對應(yīng)著最可能的類別標(biāo)簽,也叫作p(y|x)p(y∣x)的眾數(shù)。
一些實際應(yīng)用
文本分類
xx是文本的一種結(jié)構(gòu)化表示,文本分類是計算概率p(y=c|x)p(y=c∣x),一個特殊的應(yīng)用是垃圾郵件過濾,其中y=1y=1代表垃圾郵件,y=0y=0代表非垃圾郵件
大部分分類學(xué)習(xí)算法要求輸入向量xx是定長的,可以用bag of words的方式來表示變長的文檔,基本思路是當(dāng)詞jj在文檔ii中出現(xiàn)時x_{ij}=1xij?=1,這樣訓(xùn)練集就可以被結(jié)構(gòu)化為一個binary的共現(xiàn)矩陣,在共現(xiàn)矩陣上可以應(yīng)用各種分類算法來學(xué)習(xí)規(guī)律
圖片分類
圖片和文本都具備明顯的局部性,通過挖掘這種局部性而誕生的算法框架稱為卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò),二者共同大力推動了AI從傳統(tǒng)統(tǒng)計學(xué)習(xí)向深度學(xué)習(xí)的發(fā)展
分類問題的輸出yy是在一個連續(xù)的區(qū)間內(nèi)取值,在推斷時取后驗概率分布的期望E(y|x)E(y∣x)。其應(yīng)用例子包括:
預(yù)測某只股票第二天的最高股價
預(yù)測某篇文章接下去1小時的點擊次數(shù)
預(yù)測一個機器人手臂在空中的位置
預(yù)測某個醫(yī)院科室接下去一個月的就診人數(shù)
回歸問題和分類問題的主要區(qū)別不是輸出的離散或者連續(xù)(就診人數(shù)也可以認為是一個多分類問題),二者最主要的區(qū)別是對輸出的分布假設(shè)不同,后續(xù)我們會涉及到。
非監(jiān)督學(xué)習(xí)只有輸入數(shù)據(jù)xx而沒有輸出yy,我們的目標(biāo)是挖掘xx中感興趣的信息,非監(jiān)督學(xué)習(xí)有時也被稱為知識發(fā)現(xiàn),其代表就是聚類,主成分分析,關(guān)聯(lián)分析,協(xié)同過濾,社區(qū)發(fā)現(xiàn)等。以聚類為例:小時候你在區(qū)分貓和狗的時候,別人和你說,這是貓,那是狗,最終你遇到貓或狗你都能區(qū)別出來(而且知道它是貓還是狗),這是監(jiān)督學(xué)習(xí)的結(jié)果。但如果小時候沒人教你區(qū)別貓和狗,不過你發(fā)現(xiàn)貓和狗之間存在差異,應(yīng)該是兩種動物(雖然能區(qū)分但不知道貓和狗的概念),這是無監(jiān)督學(xué)習(xí)的結(jié)果。
聚類正是做這樣的事,按照數(shù)據(jù)的特點,將數(shù)據(jù)劃分成多個沒有交集的子集(每個子集被稱為簇)。通過這樣的劃分,簇可能對應(yīng)一些潛在的概念,但這些概念就需要人為的去總結(jié)和定義了。
聚類可以用來尋找數(shù)據(jù)的潛在的特點,還可以用來其他學(xué)習(xí)任務(wù)的前驅(qū)。比如市場分割。也許你在數(shù)據(jù)庫中存儲了許多客戶的信息,而你希望將他們分成不同的客戶群,這樣你可以對不同類型的客戶分別銷售產(chǎn)品或者分別提供更適合的服務(wù)。
聚類示意:
讓我們看看一個簡單的案例,曲線擬合:
我們有如下的數(shù)據(jù)點,這個數(shù)據(jù)點是通過y=sin(2\pi x)y=sin(2πx)加上一些高斯噪聲生成的
現(xiàn)在考慮一個關(guān)于xx的多項式擬合上述藍顏色的點:
f(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_jw_jx^jf(x,w)=w0?+w1?x+w2?x2+...+wM?xM=j∑?wj?xj
雖然f(x,w)f(x,w)是關(guān)于xx的非線性函數(shù),但是是關(guān)于參數(shù)ww的線性函數(shù),這種和參數(shù)保持線性關(guān)系的模型被稱為線性模型。
可以通過最小化f(x,w)f(x,w)和yy的差別來求解參數(shù)ww,其中一種是誤差的平方和:
E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2E(w)=21?n∑?{f(xn?,w)?yn?}2
因為E(w)E(w)是關(guān)于ww的二次函數(shù),所以其導(dǎo)數(shù)是關(guān)于ww的一次函數(shù),E(w)E(w)的最小值是唯一的,當(dāng)數(shù)據(jù)量比較小時,可以通過最小二乘直接獲得解析解,在數(shù)據(jù)量比較大時,一般通過梯度下降法來逼近這個解。
2.1 統(tǒng)計學(xué)習(xí)三要素:模型,策略,算法
模型:?在上述的曲線擬合問題中,線性函數(shù)f(x,w)f(x,w)就是模型,當(dāng)然我們也可以選擇其他的線性模型或者非線性模型,選擇合適的模型是應(yīng)用統(tǒng)計學(xué)習(xí)算法的第一步
策略:?有了模型,統(tǒng)計學(xué)習(xí)接著需要考慮的是按照什么樣的準則學(xué)習(xí)最優(yōu)的模型,在上述的曲線擬合問題中,誤差平方和E(w)E(w)就是一個準則(策略,損失函數(shù)),其余的準則還有0-1損失函數(shù),絕對值損失函數(shù),對數(shù)損失函數(shù)等
算法:?有了準則,就要考慮在該準則的約束下如何尋找參數(shù)ww的最小值,最常用的就是梯度下降法或者同類別的基于梯度的算法(我更傾向于叫這一步為優(yōu)化或者尋優(yōu),算法是一個比較泛的概念)
上述模型,策略和算法都是針對模型的學(xué)習(xí)過程(擬合過程)的,而統(tǒng)計學(xué)習(xí)最終是要預(yù)測我們沒有見過的樣本(泛化能力),這里就涉及到一個在訓(xùn)練樣本上的擬合程度的問題,是損失函數(shù)E(w)E(w)越小泛化能力越強嗎?答案是不一定,還是考慮上述曲線擬合問題,當(dāng)多項式的階數(shù)MM不同時,擬合的效果如下:
可以看到在M=0M=0和M=1M=1時,模型未能很好的擬合訓(xùn)練集的散點,在M=3M=3時看起來還不錯,在M=9M=9時擬合的程度最好,事實上,在M=9M=9時,可以做到E(w)=0E(w)=0(思考一下為什么),但在M=9M=9時,擬合出來的曲線和真正的數(shù)據(jù)分布的曲線y=sin(2\pi x)y=sin(2πx)相去甚遠,當(dāng)有一個新的數(shù)據(jù)點出現(xiàn)時,例如在左邊的第一個和第二個點之間,預(yù)測曲線會給出一個非常差的預(yù)測結(jié)果,此時稱為模型過擬合。而在M=0M=0和M=1M=1時,稱為欠擬合。
事實上,當(dāng)MM從00取到99時,有如下的訓(xùn)練誤差和測試誤差的對比:
以及不同模型的參數(shù)取值:
2.3.1 從模型出發(fā)(交叉驗證,AIC, BIC)
從曲線擬合問題的直觀上來看,我們可以選擇復(fù)雜度較低的模型,例如M=3M=3。那么在面對一般化的問題時,該如何選取合適復(fù)雜度的模型呢?可以從訓(xùn)練的數(shù)據(jù)集中抽出一部分,作為驗證集,驗證集不參與訓(xùn)練,但是能夠作為一個假的測試集來驗證模型是欠擬合還是過擬合。
分割訓(xùn)練集和驗證集,也是比較主觀的,如果分割的不合適,可能也對選出的模型泛化能力有負面作用,另外,訓(xùn)練數(shù)據(jù)是比較珍貴的,扔掉一部分數(shù)據(jù)是比較可惜的,所以會采取利用全部數(shù)據(jù)的交叉驗證(cross validation)的方式:
上圖描述的是1010折交叉驗證,常用的還有33折,55折,NN折(NN為樣本數(shù)量)交叉驗證,NN折交叉驗證也稱為留一交叉驗證(leave one out cross validation),交叉驗證選擇在驗證集上平均誤差最低的模型。交叉驗證也存在一些缺陷,當(dāng)模型比較復(fù)雜時,要訓(xùn)練和測試多次,尤其當(dāng)可選擇的模型范圍很大時,訓(xùn)練和測試的次數(shù)會成指數(shù)級增加。但交叉驗證仍然是在數(shù)據(jù)集有限的情況下最常用也是最好用的避免過擬合的方式之一。
此外,還有計算量相對較小的AICAIC和BICBIC準則,AICAIC由日本統(tǒng)計學(xué)家赤池弘次在1974年提出,$BIC$1978年由Schwarz提出。他們提供了權(quán)衡估計模型復(fù)雜度和擬合數(shù)據(jù)優(yōu)良性的標(biāo)準。
AIC準則的其中一種表達式為:
AIC=k+E(w)AIC=k+E(w)
BIC準則的其中一種表達式為:
BIC=kln(N)+E(w)BIC=kln(N)+E(w)
其中kk代表模型參數(shù)的個數(shù),NN代表訓(xùn)練集樣本數(shù)目。通常AICAIC或BICBIC的取值越小,模型泛化能力越強。
在參數(shù)取值圖中,我們可以看到,M=9M=9的多項式模型的參數(shù)取值和波動非常大,雖然這個模型有很強的能力來擬合訓(xùn)練集。而在M=3M=3時,參數(shù)是在一個相對較為合理的范圍之內(nèi)的,那么如何把模型的參數(shù)限制在一個較為合理的范圍之內(nèi)呢?我們考慮在損失函數(shù)E(w)E(w)上加入一個對參數(shù)取值的懲罰:
E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\frac\lambda2||w||^2E(w)=21?n∑?{f(xn?,w)?yn?}2+2λ?∣∣w∣∣2
參數(shù)\lambdaλ用來控制懲罰的程度,||w||∣∣w∣∣是L2L2范數(shù),在回歸問題中,上述策略被稱為嶺回歸(ridge regression)。
或者:
E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\lambda||w||_1E(w)=21?n∑?{f(xn?,w)?yn?}2+λ∣∣w∣∣1?
||w||_1∣∣w∣∣1?是L1L1范數(shù),在回歸問題中,上述策略被稱為lasso回歸。他們的統(tǒng)計學(xué)意義我們后續(xù)會涉及。
2.3.3 從尋優(yōu)出發(fā)(Early Stopping)
考慮上述多項式擬合M=9M=9的情況,那么大的參數(shù)取值是尋優(yōu)算法通過不斷迭代得到的。那么我們在尋優(yōu)時,是否能否通過早一些停止迭代來避免這個問題呢,答案是可以的,而且在實際工程中這個辦法也很有效,就是早停法(Early Stopping)。
一般在算法尋優(yōu)時,訓(xùn)練集和驗證集的誤差呈如下的曲線:
我們可以根據(jù)驗證集誤差的變化來決定何時停止訓(xùn)練,選取參數(shù)被調(diào)整到最合適的模型。實際工程中,早停法有很多種應(yīng)用方式,例如在連續(xù)多次迭代驗證集誤差都持續(xù)上升則停止,上升比例超過一定程度停止等等。
2.3.4 從數(shù)據(jù)出發(fā)(增加數(shù)據(jù)集)
考慮上述多項式擬合M=9M=9的情況,當(dāng)我們把數(shù)據(jù)量從1010個增加到1515個和100100個的時候,擬合曲線有如下的變化:
直觀上來看,大的數(shù)據(jù)量和大的模型容量是適配的,這樣能在很大程度上避免過擬合,但是在實際工程中仍然要結(jié)合交叉驗證,正則化和早停法一起使用。另外,有標(biāo)注的樣本是非常昂貴的,一方面需要在實際生產(chǎn)過程中采集樣本,另一方面要給每個樣本打上一個合適的標(biāo)簽(答案)yy,有些標(biāo)簽是隨著業(yè)務(wù)運行獲得的,有些標(biāo)簽是需要人為標(biāo)注的。
例如,在機器學(xué)習(xí)在風(fēng)控場景的應(yīng)用中,為了預(yù)測一個客戶未來貸款違約的可能性,我們要找很多歷史上違約和履約的客戶進行學(xué)習(xí),而違約的客戶量本身就是很少的,壞樣本(違約)很珍貴。
在圖像識別中,為了識別一張圖片是貓還是狗,需要人為給每張圖片標(biāo)注貓,狗或者其它的分類
為了識別一張圖片上的文字區(qū)域,需要人為給每個文字區(qū)域畫上框:
自動駕駛為了識別車道線,行人,建筑物,汽車等元素,需要人為給每個像素點做標(biāo)注:
自然語言處理為了識別每個單詞的詞性,需要人為給每個漢字做標(biāo)注:
今年海釣比賽在廈門市與金門之間的海域舉行。
今(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)。
數(shù)據(jù)是AI的“衣食父母”,尤其在現(xiàn)在深度學(xué)習(xí)算法更加依賴大量的數(shù)據(jù),有標(biāo)注的數(shù)據(jù)十分珍貴,數(shù)據(jù)也是AI公司的核心競爭能力之一。
令f(x;D)f(x;D)為在訓(xùn)練集DD上學(xué)習(xí)的函數(shù)ff在新樣本xx上的預(yù)測輸出,yy代表真實的輸出
我們考慮在同一個學(xué)習(xí)場景下的很多個數(shù)據(jù)集,例如在曲線擬合案例中,在y=sin(2\pi x)y=sin(2πx)上生成很多個NN個點的數(shù)據(jù)集,學(xué)習(xí)算法在這些數(shù)據(jù)集上的期望預(yù)測為\bar{f}(x)=E_D(f(x;D))fˉ?(x)=ED?(f(x;D))
使用樣本數(shù)相同的不同訓(xùn)練集產(chǎn)生的方差(variance)為:
var(x)=E_D((f(x;D)-\bar{f}(x))^2)var(x)=ED?((f(x;D)?fˉ?(x))2)
方差的含義:方差度量了同樣大小的訓(xùn)練集的變動所導(dǎo)致的學(xué)習(xí)性能的變化,即刻畫了數(shù)據(jù)擾動所造成的影響。
期望輸出與真實標(biāo)記的差別稱為偏差(bias),即:
bias(x)=(\bar{f}(x)-y)^2bias(x)=(fˉ?(x)?y)2
偏差的含義:偏差度量了學(xué)習(xí)算法的期望預(yù)測與真實結(jié)果的偏離程度,即刻畫了學(xué)習(xí)算法本身的擬合能力。
模型的泛化能力可以分解為偏差和方差的和:
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階的多項式將會發(fā)生非常大的波動,但仍然能擬合這1010個點,這就是低偏差,高方差的一個表現(xiàn),最后泛化誤差仍然很高。下圖給出了一個示意圖:
一個形象的打靶示意圖來解釋bias和variance的區(qū)別:
那么如何合理的在bias和variance中尋找一個折中呢,這時就可以考慮應(yīng)用2.3節(jié)中的方法了。
AA和BB代表兩個事件,則AA和BB共同發(fā)生的概率為:
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)?
我們開看如下的具體案例:
假設(shè)一個人去醫(yī)院做一個結(jié)腸癌的檢查,這個檢查不太準確,一個確定有癌癥的人可以有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為檢查為陽性。
假設(shè)這個人的檢測呈陽性,那么直觀來看他有很大的幾率有結(jié)腸癌。但是如果考慮結(jié)腸癌在人群中發(fā)生的概率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
也就是說只有百分之三的概率這個人真正有結(jié)腸癌,這就是先驗知識對觀測的修正作用,貝葉斯定理在統(tǒng)計學(xué)習(xí)中應(yīng)用十分廣泛,下兩小節(jié)我們考慮一個簡單的參數(shù)估計和統(tǒng)計推斷問題來探索一下貝葉斯估計的應(yīng)用。
考慮一個扔硬幣問題,硬幣投擲的結(jié)果x\in\{0,1\}x∈{0,1},其中x=1x=1代表投擲結(jié)果為正面,x=0x=0代表投擲結(jié)果為反面。我們假設(shè)這個硬幣是不均勻的,也就是每次投擲正反面出現(xiàn)的概率是不一樣的,假設(shè)正面的概率為\muμ
p(x=1|\mu)=\mup(x=1∣μ)=μ
那么自然,反面的概率為1-\mu1?μ:
p(x=0|\mu)=1-\mup(x=0∣μ)=1?μ
統(tǒng)一上述兩式子就是經(jīng)典的伯努利分布(Bernoulli distribution)
p(x|\mu)=\mu^x(1-\mu)^{1-x}p(x∣μ)=μx(1?μ)1?x
假設(shè)我們觀測了一個投擲序列D=\{x_1,x_2,...,x_N\}D={x1?,x2?,...,xN?},似然函數(shù)定義為這些觀測出現(xiàn)的概率乘積
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∏N?p(xn?∣μ)=n=1∏N?μxn?(1?μ)1?xn?
最大似然就是認為\muμ的取值應(yīng)該使似然函數(shù)取值最大,假設(shè)我們觀測10次,其中有7個正面,3個反面,那么似然函數(shù)為:
p(D|\mu)=\mu^7(1-\mu)^3p(D∣μ)=μ7(1?μ)3
上述式子求最大值可以先進行對數(shù),變成ln(p(D|\mu))=7ln\mu+3ln(1-\mu)ln(p(D∣μ))=7lnμ+3ln(1?μ),對其求導(dǎo),可以得到\mu=0.7μ=0.7
一般來說,有\(zhòng)mu_{ML}=\frac1N{\sum_{n=1}^N{x_n}}μML?=N1?∑n=1N?xn?
在上述的最大似然中,存在一個致命的問題,假設(shè)我們觀測的樣本數(shù)量為3個,但是3次都是正面,我們會得出\mu_{ML}=1μML?=1,即我們會判斷以后每一次都會扔出正面,這符合數(shù)學(xué)邏輯,但是不符合我們的常識和直觀感受,比如有人在你之前扔過這個硬幣20次,其中正面是10次,那此時你是否還非常確信以后每一次都是正面呢?是否要修正自己的判斷呢?那如何修正自己的判斷呢?此時就要在似然函數(shù)的基礎(chǔ)上引入關(guān)于\muμ的先驗分布。
假設(shè)有如下的關(guān)于\muμ的先驗分布:
p(\mu)\propto\mu^{10}(1-\mu)^{10}p(μ)∝μ10(1?μ)10
此時根據(jù)貝葉斯定理:
p(\mu|D)\propto{p(D|\mu)p(\mu)}p(μ∣D)∝p(D∣μ)p(μ)
此時結(jié)合我們的觀測3次,正面次數(shù)為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更加合理,這就是引入先驗知識的意義。在我們觀測的樣本量比較小的時候,引入先驗分布會顯得尤為重要。這種將結(jié)合先驗和似然結(jié)合到一起的參數(shù)估計方式也稱為最大后驗概率推斷(MAP: Max a Posterior)
(基于篇幅有限,此段略去大量的數(shù)學(xué)證明和數(shù)學(xué)表達,只為讓大家能夠形象化的理解貝葉斯估計的思想,準確的數(shù)學(xué)推導(dǎo)可以參考Pattern Recognition and Machine Learning,以及Machine Learning A Probabilistic Perspective)
對于一個一般的線性模型而言,其目標(biāo)就是要建立輸入變量和輸出變量之間的回歸模型。該模型是既是參數(shù)的線性組合。從數(shù)學(xué)上來說,線性回歸有如下表達形式:
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?+θ1?x1?+θ2?x2?+?+θn?xn?=i=0∑n?θi?xi?=θTx
其中x_0=1x0?=1,當(dāng)x=(x_0,x_1)x=(x0?,x1?)時,就是一元的線性回歸,例如房屋面積和銷售價格的關(guān)系:
Living area(feet^2)Price
2104400
1600330
2400369
……
xx和yy的散點圖如下:
一元線性回歸的函數(shù)表達形式h_{\theta}(x)hθ?(x)是二維平面上的一條直線:
我們可以引入更高維度的特征變量xx,考慮多變量的例子:
Living area(feet^2)badroomsPrice
21043400
16003330
24002369
………
此時稱為多元線性回歸,實際上函數(shù)h_{\theta}(x)hθ?(x)擬合的是一個高維空間中的平面:
現(xiàn)在我們假設(shè)預(yù)測值\theta^TxθTx與真實值yy之間存在一個誤差\epsilon?, 于是可以這樣寫:
y = \theta^Tx + \epsilony=θTx+?
線性回歸假設(shè)\epsilon?是獨立同分布的, 服從與均值為00, 方差為\sigma^2σ2的正態(tài)分布(高斯分布)
P(\epsilon) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(\epsilon)^2}{2\sigma^2}}P(?)=2π?σ1?e?2σ2(?)2?
那么yy服從均值為\theta^TxθTx,方差為\sigma^2σ2的正態(tài)分布:
P(y|x;\theta) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y - \theta^Tx)^2}{2\sigma^2}}P(y∣x;θ)=2π?σ1?e?2σ2(y?θTx)2?
所有的樣本可以認為是從上述分布中抽樣,則MM個樣本的似然函數(shù)為:
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}}L(θ)=i=1∏m?ρ(yi∣xi;θ)=i=1∏m?2π?σ1?e?2σ2(yi?θTxi)2?
上面的函數(shù)式子中,x^ixi與y^iyi都是已知的樣本,θθ是要學(xué)習(xí)的參數(shù)。
為計算方便,我們把L(\theta)L(θ)取對數(shù):
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)^2logL(θ)=logi=1∏m?2π?σ1?e?2σ2(yi?θTxi)2?=i=1∑m?log2π?σ1?e?2σ2(yi?θTxi)2?=mlog2π?σ1??σ21??21?i=1∑m?(yi?θTxi)2
上面的公式取最大值,也就是下面的函數(shù)取最小值:
J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2J(θ)=21?i=1∑m?(hθ?(xi)?yi)2
求J(\theta)J(θ)的最小值,可以直接對上式求駐點:
首先,將上式變形:
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)J(θ)=21?i=1∑m?(hθ?(xi)?yi)2=21?(Xθ?y)T(Xθ?y)
下一步對參數(shù)\thetaθ求導(dǎo)可得:
\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▽θ?J(θ)=▽θ?(21?(Xθ?y)T(Xθ?y))=▽θ?(21?(θTXT?yT)(Xθ?y)=▽θ?(21?(θTXTXθ?θTXTy?yTXθ+yTy)=21?(2XTXθ?XTy?(yTX)T)=XTXθ?XTy
駐點滿足:
X^TX\theta-X^Ty = 0XTXθ?XTy=0
即得到 :
\theta = (X^TX)^{-1}X^Tyθ=(XTX)?1XTy
上式也稱為Normal Equation?,當(dāng)然也可以利用梯度下降法迭代求解:
\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}θj?=θj??α?θj???J(θ)=θj??αi=1∑m?(hθ?(xi)?yi)xji?
梯度下降法和Normal Equation?的區(qū)別如下:
Gradient DescentNormal Equation
需要選擇學(xué)習(xí)率\alphaα無需選擇學(xué)習(xí)率
需要迭代,需要選擇初始值不需要迭代
不需要求逆矩陣需要求矩陣X^TXXTX的逆矩陣,復(fù)雜度較高
當(dāng)特征維度nn很高時也能使用特征維度nn很高時幾乎無法使用
在工程上一般采取梯度下降法或者隨機梯度下降法求解。
經(jīng)典線性回歸是假設(shè)誤差滿足標(biāo)準正態(tài)分布,嶺回歸是在這個基礎(chǔ)上加上了參數(shù)\thetaθ也滿足標(biāo)準正態(tài)分布,用最大后驗估計推導(dǎo)可得似然函數(shù)為:
\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}^u0z1t8os \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}^u0z1t8os\theta_{j}^{2} - nln\sigma\sqrt{2\pi} - dln \tau \sqrt{2\pi} \end{aligned}argmaxθ?L(θ)?=lni=1∏n?σ2π?1?e?2σ2(yi??θTxi?)2??j=1∏d?τ2π?1?e?2τ2θ2?=?2σ21?i=1∑n?(yi??θTxi?)2?2τ21?i=1∑d?θj2??nlnσ2π??dlnτ2π??
最大似然等價于最小化如下的損失函數(shù):
\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^u0z1t8os\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}X^Tyθ=(XTX+λI)?1XTy
嶺回歸因為矩陣\lambda IλI的對角元素全是11,像一條山嶺,故而得名。嶺回歸的示意圖如下:
嶺回歸因為對參數(shù)取值范圍的抑制在一定程度上避免了過擬合的問題,另外在存在特征變量間的共線性時(特征變量間有較強的相關(guān)性)可以避免X^TXXTX不可逆的情況。
lasso回歸和嶺回歸的不同是假設(shè)參數(shù)\thetaθ也滿足laplace分布,用最大后驗估計推導(dǎo)可得似然函數(shù)為:
\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}^u0z1t8os \frac{1}{2b} e^{-\frac{\lvert \theta_{i} \rvert} } \\\\ & = -\frac{1}{2\sigma^{2}} \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} -\frac{1} \sum_{i=1}^u0z1t8os \lvert \theta_{j} \rvert - nln\sigma\sqrt{2\pi} - dln 2b \end{aligned}argmaxθ?L(θ)?=lni=1∏n?σ2π?1?e?2σ2(yi??θTxi?)2??j=1∏d?2b1?e?b∣θi?∣?=?2σ21?i=1∑n?(yi??θTxi?)2?b1?i=1∑d?∣θj?∣?nlnσ2π??dln2b?
最大似然等價于最小化如下的損失函數(shù):
\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^u0z1t8os \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?不可導(dǎo),lasso回歸的求解需要用到坐標(biāo)軸下降或者最小角回歸,受限于篇幅,這里不做展開,lasso回歸的示意圖如下:
相比嶺回歸,lasso回歸的解更容易出現(xiàn)在坐標(biāo)軸上,所以更容易出現(xiàn)稀疏的解,對特征之間的共線性也有比較好的抑制作用,在一定程度上實現(xiàn)了特征選擇的效果。lasso回歸全稱是Least absolute shrinkage and selection operator。
ElasticNet回歸是將嶺回歸和lasso回歸進行結(jié)合,吸收二者的優(yōu)點,損失函數(shù)為:
\begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda_1 \sum_{j=1}^u0z1t8os\theta_{j}^{2}+\lambda_2 \sum_{j=1}^u0z1t8os \lVert \theta_{j} \rVert_{1} \\\\ \end{aligned}argminθ?f(θ)?=i=1∑n?(yi??θTxi?)2+λ1?j=1∑d?θj2?+λ2?j=1∑d?∥θj?∥1??
通俗來講,分類是將NN個樣本點xx分為CC類的過程,不同的樣本類別在空間中的邊界稱為決策邊界,當(dāng)決策邊界是輸入的線性組合時(DD維的空間中是一個D-1D?1維的超平面),稱為線性分類,示意圖如下:
一維數(shù)據(jù)的線性決策邊界:
二維數(shù)據(jù)的線性決策邊界:
三維數(shù)據(jù)的線性決策邊界:
上述三種場景都是線性可分的,即可以找到一個超平面將樣本分開。有時樣本的空間分布無法找到這樣的一個超平面線性可分,如下圖的樣本分布:
此時雖然仍然可以利用線性決策邊界,但是分類的效果就會變得很差,這種數(shù)據(jù)的分布就會用到其它非線性的方法如神經(jīng)網(wǎng)絡(luò),knn,決策樹等等,或者對其做一些變換讓其線性可分(支持向量機等)這些是后面要討論的內(nèi)容。
數(shù)據(jù)集的線性可分性定義如下(針對二分類):
給定一個數(shù)據(jù)集:
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
能夠?qū)?shù)據(jù)集的正實例點和負實例點完全正確地劃分到超平面的兩側(cè),則稱數(shù)據(jù)集為線性可分數(shù)據(jù)集(linear separable data set)。
線性分類任務(wù)的目標(biāo)就使數(shù)據(jù)集盡可能的分到SS兩側(cè)(數(shù)據(jù)集本身不一定是線性可分的),錯誤分配的樣本會用一個損失函數(shù)來量化,最后通過最小化這個損失函數(shù)來找到參數(shù)ww和bb
感知機是1957年,由Rosenblatt提出。感知機是二分類的線性模型,其輸入是實例的特征向量,輸出的是事例的類別,分別是+1+1和-1?1。假設(shè)訓(xùn)練數(shù)據(jù)集是線性可分的,感知機學(xué)習(xí)的目標(biāo)是求得一個能夠?qū)⒂?xùn)練數(shù)據(jù)集正實例點和負實例點完全正確分開的分離超平面。如果是非線性可分的數(shù)據(jù),則最后無法獲得超平面。
感知機從輸入空間樣本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)={?11?x<0x≥0?
MM為誤分點的集合,感知機的優(yōu)化目標(biāo)是最小化如下函數(shù):
L(w,b) = \sum\limits_{{x_i} \in M}^{} { - {y_i}(w{x_i} + b)}L(w,b)=xi?∈M∑??yi?(wxi?+b)
其導(dǎo)數(shù)如下:
使用隨機梯度下降每次選一個樣本點做更新:
算法流程:
輸入:訓(xùn)練數(shù)據(jù)集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。學(xué)習(xí)率\eta(0 < \eta \leq 1)η(0<η≤1)
輸出: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在訓(xùn)練集中選取數(shù)據(jù)(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+ηyi?xi?b←b+ηyi?
STEP 4轉(zhuǎn)至步驟2,直到訓(xùn)練集中沒有誤分類點。
動手做一做
訓(xùn)練數(shù)據(jù)集:
正實例點是[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]
利用上述隨機梯度下降法求解感知機模型
邏輯回歸的表現(xiàn)形式和線性回歸有些類似,邏輯回歸解決的是二分類問題,假設(shè)y\in\{0,1\}y∈{0,1},為了使輸出在00到11之間,邏輯回歸采用如下的函數(shù)形式:
h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}hθ?(x)=1+e?θTx1?
即將線性回歸的函數(shù)形式\theta^TxθTx用logistic sigmoid函數(shù)進行映射,logistic sigmoid函數(shù)的形式為:
\sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e?z1?
該函數(shù)具有如下的特性:當(dāng)xx趨近于負無窮時,yy趨近于00;當(dāng)xx趨近于正無窮時,yy趨近于1;當(dāng)x= 0x=0時,y=0.5y=0.5
最早logistic sigmoid函數(shù)是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增長的關(guān)系時命名的。sigmoid曲線可以模仿一些情況人口增長的?S?形曲線。起初階段大致是指數(shù)增長;然后隨著開始變得飽和,增加變慢;最后,達到成熟時增加停止。
邏輯回歸假設(shè)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
現(xiàn)在有訓(xùn)練數(shù)據(jù)集T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}
似然函數(shù)為:
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}l(θ)=i=1∏N?P(yi∣xi;θ)=i=1∏N?(hθ?(xi))yi(1?hθ?(xi))1?yi
最大似然等價于對似然函數(shù)的負對數(shù)求最小值:
J(\theta)=-lnl(\theta)=-\sum_{i=1}^N(y^iln(h_\theta(x^i))+(1-y^i)ln(1-h_\theta(x^i)))J(θ)=?lnl(θ)=?i=1∑N?(yiln(hθ?(xi))+(1?yi)ln(1?hθ?(xi)))
利用梯度下降求解的參數(shù)的更新公式為:
\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}(x^i) - y^i)x_j^{i}θj?:=θj??αi=1∑N?(hθ?(xi)?yi)xji?
可以看到邏輯回歸的參數(shù)更新遞推式和線性回歸的參數(shù)更新遞推式在形式上是一樣的,只是邏輯回歸的h_\theta(x)hθ?(x)是在線性回歸的h_\theta(x)=\theta^Txhθ?(x)=θTx的外面套了一層sigmoid函數(shù)。
在 softmax回歸中,我們解決的是多分類問題(相對于 logistic 回歸解決的二分類問題)。
因此對于訓(xùn)練集T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},我們有y^i\in\{1,2,...,k\}yi∈{1,2,...,k}。(注意此處的類別下標(biāo)從$ 1 $開始,而不是?00)。
對于給定的輸入xx,我們想用假設(shè)函數(shù)針對每一個類別j估算出概率值P(y=j|x)P(y=j∣x)。也就是說,我們想估計xx的每一種分類結(jié)果出現(xiàn)的概率。因此,我們的假設(shè)函數(shù)將要輸出一個kk維的向量(向量元素的和為11)來表示這kk個估計的概率值。 具體地說,我們的假設(shè)函數(shù)h_\theta(x)hθ?(x)形式如下:
softmax回歸的代價函數(shù)為(推導(dǎo)過程略去):
其中1\{\}1{}為示性函數(shù),\{\}{}中的取值為真的時候為11,否則為00。
值得注意的是,上述公式是logistic回歸代價函數(shù)的推廣。logistic回歸代價函數(shù)可以改為:
對于J(\theta)J(θ)的最小化問題,目前還沒有閉式解法。因此,我們使用迭代的優(yōu)化算法(例如梯度下降法)。經(jīng)過求導(dǎo),我們得到梯度公式如下:
有了梯度,就可以用梯度下降法去迭代更新參數(shù)了。
Softmax 回歸 vs. k 個二元分類器
如果你在開發(fā)一個音樂分類的應(yīng)用,需要對kk種類型的音樂進行識別,那么是選擇使用?softmax?分類器呢,還是使用 logistic 回歸算法建立$ k $個獨立的二元分類器呢?
這一選擇取決于你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉(xiāng)村音樂、搖滾樂和爵士樂,那么你可以假設(shè)每個訓(xùn)練樣本只會被打上一個標(biāo)簽(即:一首歌只能屬于這四種音樂類型的其中一種),此時你應(yīng)該使用類別數(shù)?k = 4k=4?的softmax回歸。(如果在你的數(shù)據(jù)集中,有的歌曲不屬于以上四類的其中任何一類,那么你可以添加一個“其他類”,并將類別數(shù)kk設(shè)為55。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間并不是互斥的。例如:一首歌曲可以來源于影視原聲,同時也包含人聲 。這種情況下,使用44個二分類的?logistic?回歸分類器更為合適。這樣,對于每個新的音樂作品 ,我們的算法可以分別判斷它是否屬于各個類別。
現(xiàn)在我們來看一個計算視覺領(lǐng)域的例子,你的任務(wù)是將圖像分到三個不同類別中。(i) 假設(shè)這三個類別分別是:室內(nèi)場景、戶外城區(qū)場景、戶外荒野場景。你會使用sofmax回歸還是$ 3$個logistic?回歸分類器呢? (ii) 現(xiàn)在假設(shè)這三個類別分別是室內(nèi)場景、黑白圖片、包含人物的圖片,你又會選擇?softmax?回歸還是多個?logistic?回歸分類器呢?
在第一個例子中,三個類別是互斥的,因此更適于選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。
在之前的章節(jié)中,我們談到了服從高斯分布的線性回歸和服從伯努利分布的邏輯回歸,它們的解決過程十分相似。實際上,他們都是廣義線性模型的特例,對于這類問題我們有比較統(tǒng)一的解決方案。
在介紹廣義線性模型之前,我們先來引入指數(shù)分布族這一概念,一個單參數(shù)指數(shù)分布族可以表示為:
p(y;\eta) = b(y)exp(\eta^TT(y) - a(\eta))p(y;η)=b(y)exp(ηTT(y)?a(η))
在這里,\etaη被稱為自然參數(shù)(natrual parameter),一般來說,T(y) = yT(y)=y,a(\eta)a(η)被稱為log partition function。這里e^{-a(\eta)}e?a(η)起到歸一化常數(shù)的作用。如果我們確定T, a, bT,a,b,通過不斷改變\etaη,我們就可以得到一個分布族。
伯努利分布屬于指數(shù)分布族
對于伯努利分布我們有:
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??))
很顯然,伯努利方程是符合指數(shù)分布族形式:
\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函數(shù)
高斯分布屬于指數(shù)分布族
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π?1?exp(?21?(y?μ)2)=2π?1?exp(?21?y2)exp(μy?21?μ2)
因此,在指數(shù)分布族形式下,我們只需要進行如下轉(zhuǎn)換:
\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)
還有很多常見的分布都屬于指數(shù)分布族,在此就不展開。
廣義線性模型
廣義線性模型有如下的假設(shè):
P(y|x;\theta) \sim 指數(shù)分布(\eta)P(y∣x;θ)~指數(shù)分布(η)
\etaη與xx成線性關(guān)系,即\eta = \theta^TXη=θTX
給定一個xx,我們需要目標(biāo)函數(shù)為h_\theta(x) = E[y|x]hθ?(x)=E[y∣x]
根據(jù)如上假設(shè),我們可以推導(dǎo)出高斯分布的線性回歸模型:
h_\theta(x) = E[y|x;\theta] \\ = \mu \\ = \eta \\ = \theta^Txhθ?(x)=E[y∣x;θ]=μ=η=θTx
上式中第一個等號是因為假設(shè)三,第二個等號則是由于高斯分布的基本性質(zhì),第三個等號則是由于前文中高斯分布中推導(dǎo)過的和的關(guān)系,最后一個等號則是由于假設(shè)二。
同樣,我們也可以推導(dǎo)出邏輯回歸模型:
h_\theta(x) = E[y|x;\theta] \\ = \phi \\ = \frac{1}{1 + e^{-\eta}} \\ = \frac{1}{1 + e^{-\theta^Tx}}hθ?(x)=E[y∣x;θ]=?=1+e?η1?=1+e?θTx1?
上式中第一個等號是因為假設(shè)三,第二個等號則是由于伯努利分布的基本性質(zhì),第三個等號則是由于前文中伯努利分布中推導(dǎo)過的和的關(guān)系,最后一個等號則是由于假設(shè)二。
從以上可以看出,線性回歸和邏輯回歸的sigmoid函數(shù)形式并非是拍腦袋想出來的,而是符合更廣泛的廣義線性模型的假設(shè)而得出的自然推論。
考慮二分類問題,根據(jù)貝葉斯公式有:
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函數(shù)形式也是一致的。
實際上,給定y=0y=0和y=1y=1這兩個類別的樣本的分布假設(shè)(如高斯分布),我們是可以用最大似然求解分布的均值和方差的,進而可以顯示的得到聯(lián)合概率分布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節(jié)的生成模型和判別模型。
極大似然的求解示意:
假設(shè)先驗P(y=1)=\piP(y=1)=π,則P(y=0)=1-\piP(y=0)=1?π,對于一個來自y=1y=1類別的數(shù)據(jù)點x^nxn,聯(lián)合概率分布如下,假設(shè)每一類的樣本分布為正態(tài)分布并且方差相同:
P(x^n,y=1)=P(y=1)P(x^n|y=1)=\pi{N(x^n|\mu_1,\Sigma)}P(xn,y=1)=P(y=1)P(xn∣y=1)=πN(xn∣μ1?,Σ)
P(x^n,y=0)=P(y=0)P(x^n|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?,Σ)
這樣似然函數(shù)可以寫為:
\prod_{n=1}^N(\pi{N(x^n|\mu_1,\Sigma))}^{y^n}((1-\pi){N(x^n|\mu_2,\Sigma))}^{1-y^n}n=1∏N?(πN(xn∣μ1?,Σ))yn((1?π)N(xn∣μ2?,Σ))1?yn
為了確定聯(lián)合概率分布,需要確定\pi,\mu_1,\mu_2,\Sigmaπ,μ1?,μ2?,Σ四個未知變量,分別為:
\pi=\frac{1}{N}\sum_{n=1}^Ny^nπ=N1?n=1∑N?yn
\mu_1=\frac{1}{N_1}\sum_{n=1}^Ny^nx^nμ1?=N1?1?n=1∑N?ynxn
\mu_2=\frac{1}{N_2}\sum_{n=1}^N(1-y^n)x^nμ2?=N2?1?n=1∑N?(1?yn)xn
\Sigma=\frac{N_1}{N}S_1+\frac{N_2}{N}S_2Σ=NN1??S1?+NN2??S2?
其中:
S_1=\frac{1}{N_1}\sum_{n\in{y=1}}(x^n-\mu_1)(x^n-\mu_1)^TS1?=N1?1?∑n∈y=1?(xn?μ1?)(xn?μ1?)T
S_2=\frac{1}{N_2}\sum_{n\in{y=0}}(x^n-\mu_2)(x^n-\mu_2)^TS2?=N2?1?∑n∈y=0?(xn?μ2?)(xn?μ2?)T
可以看到先驗概率\piπ就是樣本點所占的比例,而\mu_1μ1?和\mu_2μ2?分別為兩類樣本的均值,協(xié)方差\SigmaΣ為兩類樣本方差的加權(quán)平均。這些參數(shù)確定后,對于一個新的樣本xx,我們就可以很方便的獲得P(y=1|x)P(y=1∣x)的取值。
給個例子感覺一下: 如果我想知道一個人A說的是哪個國家的語言,我應(yīng)該怎么辦呢?
生成式模型
我把每個國家的語言都學(xué)一遍,這樣我就能很容易知道A說的是哪國語言,并且C、D說的是哪國的我也可以知道,進一步我還能自己講不同國家語言。
判別式模型
我只需要學(xué)習(xí)語言之間的差別是什么,學(xué)到了這個界限自然就能區(qū)分不同語言,我能說出不同語言的區(qū)別,但我不會講。
如果我有輸入數(shù)據(jù)xx,并且想通過標(biāo)注yy去區(qū)分不同數(shù)據(jù)屬于哪一類,生成式模型是在學(xué)習(xí)樣本和標(biāo)注的聯(lián)合概率分布P(x,y)P(x,y)?而判別式模型是在學(xué)習(xí)條件概率P(y|x)P(y∣x)?。
生成式模型P(x,y)P(x,y)可以通過貝葉斯公式轉(zhuǎn)化為P(y|x)=\frac{P(x,y)}{P(x)}P(y∣x)=P(x)P(x,y)?,并用于分類,而聯(lián)合概率分布P(x,y)P(x,y)也可用于其他目的,比如用來生成樣本對(x,y)(x,y)
判別式模型的主要任務(wù)是找到一個或一系列超平面,利用它(們)劃分給定樣本xx到給定分類yy,這也能直白的體現(xiàn)出“判別”模型這個名稱。
在4.5節(jié)中,直接用邏輯回歸建模就是判別式的模型,而對P(x^n,y=1)P(xn,y=1)和P(x^n,y=0)P(xn,y=0)進行建模就是生成式的模型。
分類算法有很多,不同分分類算法又用很多不同的變種。不同的分類算法有不同的特定,在不同的數(shù)據(jù)集上表現(xiàn)的效果也不同,我們需要根據(jù)特定的任務(wù)進行算法的選擇,如何選擇分類,如何評價一個分類算法的好壞,直觀上來看,我們可以用正確率(accuracy)來評價分類算法。
正確率確實是一個很好很直觀的評價指標(biāo),但是有時候正確率高并不能代表一個算法就好。比如某個地區(qū)某天地震的預(yù)測,假設(shè)我們有一堆的特征作為地震分類的屬性,類別只有兩個:0:不發(fā)生地震、1:發(fā)生地震。一個不加思考的分類器,對每一個測試用例都將類別劃分為0,那那么它就可能達到99%的正確率,但真的地震來臨時,這個分類器毫無察覺,這個人類帶來的損失是巨大的。為什么99%的正確率的分類器卻不是我們想要的,因為這里數(shù)據(jù)分布不均衡,類別1的數(shù)據(jù)太少,完全錯分類別1依然可以達到很高的正確率卻忽視了我們關(guān)注的東西。接下來詳細介紹一下分類算法的評價指標(biāo)。
這里首先介紹幾個 常見 的 模型評價術(shù)語,現(xiàn)在假設(shè)我們的分類目標(biāo)只有兩類,計為正例/正樣本(positive)和負例/負樣本(negtive)分別是:
1)True positives(TP): 被正確地劃分為正例的個數(shù),即實際為正例且被分類器劃分為正例的實例數(shù)
2)False positives(FP): 被錯誤地劃分為 正 例的個數(shù),即 實際為負例但被分類器劃分為正例的實例數(shù);
3)False negatives(FN):被 錯誤地劃分為 負 例的個數(shù),即 實際為 正 例但被分類器劃分為 負 例的實例數(shù);
4)True negatives(TN): 被正確地劃分為 負 例 的個數(shù) ,即實際為 負 例且被分類器劃分為 負 例的實例數(shù)。
混淆矩陣:
預(yù)測正預(yù)測負總計
實際正TPFN正樣本總數(shù)
實際負FPTN負樣本總數(shù)
總計預(yù)測為正樣本的總數(shù)預(yù)測為負樣本的總數(shù)所有樣本總數(shù)
評價指標(biāo):
1)正確率(accuracy)**
正確率是我們最常見的評價指標(biāo),?accuracy = (TP+TN)/(TP+FN+FP+TN),這個很容易理解,就是被分對的樣本數(shù)除以所有的樣本數(shù),通常來說,正確率越高,分類器越好;
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曲線
下圖是一個二分模型真實的輸出結(jié)果,一共有20個樣本,輸出的概率就是模型判定其為正例的概率,第二列是樣本的真實標(biāo)簽。
其中class一欄表示真實值,p為正例,n為反例,這20個樣本中有10個正例10個反例;score一欄則是分類器給出的分類評分。一般的二分類的實現(xiàn)方法就是選擇一個閾值,將大于這個閾值的樣本認為是正例,小于這個閾值的樣本認為是反例。于是,不妨對 樣本4來看,如果將樣本4的評分設(shè)置為分類閾值,被分類器為正例的樣本有1 2 3 4,其中真正的正例樣本有1 2 4,故其TPR=3/10=0.3,FPR=1/10=0.1(分母雖然數(shù)值一樣但是意義不同,前面TPR的分母是樣本總體中的真正例個數(shù),后者是樣本總體中的真反例個數(shù))。接著不妨設(shè)置樣本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的有序數(shù)對;然后不妨以TPR和FPR為兩個坐標(biāo)軸建立一個直角坐標(biāo)系,就可以得到這樣的圖像:
這樣每一組圖像在圖中都會有一個坐標(biāo),可以連成一條折線。一般地我們希望分類器得到的分類結(jié)果是完全正確的,也就是正例樣本全部都能夠被檢測出來,并且不會混入真反例樣本,這個時候TPR接近1且FPR接近0,反應(yīng)在圖像上好的分類器的折線應(yīng)該更加接近左上角。當(dāng)樣本足夠多時,折線就近似為圓滑的曲線,類似于這個樣子:
從這個圖上看,分類器A的結(jié)果肯定比分類器B要好。
還有一種更直觀的繪制ROC曲線的方法,這邊簡單提一下。就是把橫軸的刻度間隔設(shè)為1/N,縱軸的刻度間隔設(shè)為1/P,N,P分別為負樣本與正樣本數(shù)量。然后再根據(jù)模型的輸出結(jié)果降序排列,依次遍歷樣本,從0開始繪制ROC曲線,每遇到一個正樣本就沿縱軸方向繪制一個刻度間隔的曲線,每遇到一個負樣本就沿橫軸方向繪制一個刻度間隔的曲線,遍歷完所有樣本點以后,曲線也就繪制完成了。究其根本,其最大的好處便是不需要再去指定閾值尋求關(guān)鍵點了,每一個樣本的輸出概率都算是一個閾值了。
本博客所有內(nèi)容僅供學(xué)習(xí),不為商用,如有侵權(quán),請聯(lián)系博主謝謝。
[1] 人工智能:一種現(xiàn)代的方法(第3版)