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

統計學習基礎知識

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

1. 統計學習種類

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

1.1 監督學習

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

1.1.1 分類問題

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

例如:

在這裏插入圖片描述

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

概率描述的必要性

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

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

給定輸出條件概率,我們一般用取值最大的猜測作爲新輸入的推斷(預測)輸出 y ^ \hat{y}
y ^ = f ^ ( x ) = arg max c = 1 , 2 , . . . , C p ( y = c x ) \hat{y}=\hat{f}(x)=\mathop{\arg\max}_{c=1,2,...,C}p(y=c|x)
這對應着最可能的類別標籤,也叫作 p ( y x ) p(y|x) 衆數

一些實際應用

文本分類

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

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

圖片分類

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

1.1.2 迴歸問題

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

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

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

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

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

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

1.2 非監督學習

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

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

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

聚類示意:

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

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

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

現在考慮一個關於 x x 的多項式擬合上述藍顏色的點:
f ( x , w ) = w 0 + w 1 x + w 2 x 2 + . . . + w M x M = j w j x j f(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_jw_jx^j
雖然 f ( x , w ) f(x,w) 是關於 x x 的非線性函數,但是是關於參數 w w 的線性函數,這種和參數保持線性關係的模型被稱爲線性模型。

可以通過最小化 f ( x , w ) f(x,w) y y 的差別來求解參數 w w ,其中一種是誤差的平方和:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2
因爲 E ( w ) E(w) 是關於 w w 的二次函數,所以其導數是關於 w w 的一次函數, E ( w ) E(w) 的最小值是唯一的,當數據量比較小時,可以通過最小二乘直接獲得解析解,在數據量比較大時,一般通過梯度下降法來逼近這個解。

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

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

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

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

2.2 欠擬合和過擬合

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

在這裏插入圖片描述

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

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

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

2.3 如何避免過擬合

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

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

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

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

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

AIC準則的其中一種表達式爲:
A I C = k + E ( w ) AIC=k+E(w)
BIC準則的其中一種表達式爲:
B I C = k l n ( N ) + E ( w ) BIC=kln(N)+E(w)
其中 k k 代表模型參數的個數, N N 代表訓練集樣本數目。通常 A I C AIC B I C BIC 的取值越小,模型泛化能力越強。

2.3.2 從策略出發(正則化)

在參數取值圖中,我們可以看到, M = 9 M=9 的多項式模型的參數取值和波動非常大,雖然這個模型有很強的能力來擬合訓練集。而在 M = 3 M=3 時,參數是在一個相對較爲合理的範圍之內的,那麼如何把模型的參數限制在一個較爲合理的範圍之內呢?我們考慮在損失函數 E ( w ) E(w) 上加入一個對參數取值的懲罰:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 + λ 2 w 2 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\frac\lambda2||w||^2
參數 λ \lambda 用來控制懲罰的程度, w ||w|| L 2 L2 範數,在迴歸問題中,上述策略被稱爲嶺迴歸(ridge regression)。

或者:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 + λ w 1 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\lambda||w||_1
w 1 ||w||_1 L 1 L1 範數,在迴歸問題中,上述策略被稱爲lasso迴歸。他們的統計學意義我們後續會涉及。

2.3.3 從尋優出發(Early Stopping

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

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

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

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

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

在這裏插入圖片描述

直觀上來看,大的數據量和大的模型容量是適配的,這樣能在很大程度上避免過擬合,但是在實際工程中仍然要結合交叉驗證,正則化和早停法一起使用。另外,有標註的樣本是非常昂貴的,一方面需要在實際生產過程中採集樣本,另一方面要給每個樣本打上一個合適的標籤(答案) y 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 ) f(x;D) 爲在訓練集 D D 上學習的函數 f f 在新樣本 x x 上的預測輸出, y y 代表真實的輸出

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

使用樣本數相同的不同訓練集產生的方差variance)爲:
v a r ( x ) = E D ( ( f ( x ; D ) f ˉ ( x ) ) 2 ) var(x)=E_D((f(x;D)-\bar{f}(x))^2)
方差的含義:方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響。

期望輸出與真實標記的差別稱爲偏差bias),即:
b i a s ( x ) = ( f ˉ ( x ) y ) 2 bias(x)=(\bar{f}(x)-y)^2
偏差的含義:偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力。

模型的泛化能力可以分解爲偏差和方差的和:
E D ( ( f ( x ; D ) y ) 2 ) = E D ( ( f ( x ; D ) f ˉ ( x ) ) 2 ) + ( 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 = s i n ( 2 π x ) y=sin(2\pi x) 上新採樣 10 10 個不同的樣本點,那麼 9 9 階的多項式將會發生非常大的波動,但仍然能擬合這 10 10 個點,這就是低偏差,高方差的一個表現,最後泛化誤差仍然很高。下圖給出了一個示意圖:

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

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

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

2.5.1 貝葉斯定理

A A B B 代表兩個事件,則 A A B B 共同發生的概率爲:
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 ) = P ( B A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)}
我們開看如下的具體案例:

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

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

假設這個人的檢測呈陽性,那麼直觀來看他有很大的機率有結腸癌。但是如果考慮結腸癌在人羣中發生的概率 P ( y = 1 ) = 0.004 P(y=1)=0.004 (先驗知識),那麼此時有:
P ( y = 1 x = 1 ) = 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 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 { 0 , 1 } x\in\{0,1\} ,其中 x = 1 x=1 代表投擲結果爲正面, x = 0 x=0 代表投擲結果爲反面。我們假設這個硬幣是不均勻的,也就是每次投擲正反面出現的概率是不一樣的,假設正面的概率爲 μ \mu
p ( x = 1 μ ) = μ p(x=1|\mu)=\mu
那麼自然,反面的概率爲 1 μ 1-\mu :
p ( x = 0 μ ) = 1 μ p(x=0|\mu)=1-\mu
統一上述兩式子就是經典的伯努利分佈(Bernoulli distribution
p ( x μ ) = μ x ( 1 μ ) 1 x p(x|\mu)=\mu^x(1-\mu)^{1-x}
假設我們觀測了一個投擲序列 D = { x 1 , x 2 , . . . , x N } D=\{x_1,x_2,...,x_N\} ,似然函數定義爲這些觀測出現的概率乘積

p ( D μ ) = n = 1 N p ( x n μ ) = n = 1 N μ x n ( 1 μ ) 1 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 μ ) = μ 7 ( 1 μ ) 3 p(D|\mu)=\mu^7(1-\mu)^3
上述式子求最大值可以先進行對數,變成 l n ( p ( D μ ) ) = 7 l n μ + 3 l n ( 1 μ ) ln(p(D|\mu))=7ln\mu+3ln(1-\mu) ,對其求導,可以得到 μ = 0.7 \mu=0.7

一般來說,有 μ M L = 1 N n = 1 N x n \mu_{ML}=\frac1N{\sum_{n=1}^N{x_n}}

2.5.3 貝葉斯估計

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

假設有如下的關於 μ \mu 的先驗分佈:
p ( μ ) μ 10 ( 1 μ ) 10 p(\mu)\propto\mu^{10}(1-\mu)^{10}
此時根據貝葉斯定理:
p ( μ D ) p ( D μ ) p ( μ ) p(\mu|D)\propto{p(D|\mu)p(\mu)}
此時結合我們的觀測3次,正面次數爲3次,可知:
p ( μ D ) μ 13 ( 1 μ ) 10 p(\mu|D)\propto\mu^{13}(1-\mu)^{10}
此時我們最大化 p ( μ D ) p(\mu|D) 會得到 μ M A P = 13 23 \mu_{MAP}=\frac{13}{23} ,這個推斷要遠遠比 μ M L = 1 \mu_{ML}=1 更加合理,這就是引入先驗知識的意義。在我們觀測的樣本量比較小的時候,引入先驗分佈會顯得尤爲重要。這種將結合先驗和似然結合到一起的參數估計方式也稱爲最大後驗概率推斷(MAP: Max a Posterior)

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

3. 線性迴歸

3.1 經典線性迴歸

對於一個一般的線性模型而言,其目標就是要建立輸入變量和輸出變量之間的迴歸模型。該模型是既是參數的線性組合。從數學上來說,線性迴歸有如下表達形式:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n = i = 0 n θ i x i = θ T x 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_0=1 ,當 x = ( x 0 , x 1 ) x=(x_0,x_1) 時,就是一元的線性迴歸,例如房屋面積和銷售價格的關係:

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

x x y y 的散點圖如下:

在這裏插入圖片描述

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

在這裏插入圖片描述

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

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

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

在這裏插入圖片描述

現在我們假設預測值 θ T x \theta^Tx 與真實值 y y 之間存在一個誤差 ϵ \epsilon , 於是可以這樣寫:
y = θ T x + ϵ y = \theta^Tx + \epsilon
線性迴歸假設 ϵ \epsilon 是獨立同分布的, 服從與均值爲 0 0 , 方差爲 σ 2 \sigma^2 正態分佈(高斯分佈)
P ( ϵ ) = 1 2 π σ e ( ϵ ) 2 2 σ 2 P(\epsilon) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(\epsilon)^2}{2\sigma^2}}
那麼 y y 服從均值爲 θ T x \theta^Tx ,方差爲 σ 2 \sigma^2 的正態分佈:
P ( y x ; θ ) = 1 2 π σ e ( y θ T x ) 2 2 σ 2 P(y|x;\theta) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y - \theta^Tx)^2}{2\sigma^2}}
所有的樣本可以認爲是從上述分佈中抽樣,則 M M 個樣本的似然函數爲:
L ( θ ) = i = 1 m ρ ( y i x i ; θ ) = i = 1 m 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 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 x^i y i y^i 都是已知的樣本, θ θ 是要學習的參數。

爲計算方便,我們把 L ( θ ) L(\theta) 取對數:
l o g L ( θ ) = l o g i = 1 m 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 = i = 1 m l o g 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 = m l o g 1 2 π σ 1 σ 2 1 2 i = 1 m ( y i θ T x i ) 2 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 ( θ ) = 1 2 i = 1 m ( h θ ( x i ) y i ) 2 J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2
J ( θ ) J(\theta) 的最小值,可以直接對上式求駐點:

首先,將上式變形:
J ( θ ) = 1 2 i = 1 m ( h θ ( x i ) y i ) 2 = 1 2 ( X θ y ) T ( X θ y ) 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 求導可得:
θ J ( θ ) = θ ( 1 2 ( X θ y ) T ( X θ y ) ) = θ ( 1 2 ( θ T X T y T ) ( X θ y ) = θ ( 1 2 ( θ T X T X θ θ T X T y y T X θ + y T y ) = 1 2 ( 2 X T X θ X T y ( y T X ) T ) = X T X θ X T y \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 T X θ X T y = 0 X^TX\theta-X^Ty = 0
即得到 :
θ = ( X T X ) 1 X T y \theta = (X^TX)^{-1}X^Ty
上式也稱爲Normal Equation​,當然也可以利用梯度下降法迭代求解:
θ j = θ j α θ j J ( θ ) = θ j α i = 1 m ( h θ ( x i ) y i ) x j i \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 T X X^TX 的逆矩陣,複雜度較高
當特徵維度 n n 很高時也能使用 特徵維度 n n 很高時幾乎無法使用

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

3.2 嶺迴歸(ridge regression

經典線性迴歸是假設誤差滿足標準正態分佈,嶺迴歸是在這個基礎上加上了參數 θ \theta 也滿足標準正態分佈,用最大後驗估計推導可得似然函數爲:
a r g m a x θ L ( θ ) = l n i = 1 n 1 σ 2 π e ( y i θ T x i ) 2 2 σ 2 j = 1 d 1 τ 2 π e θ 2 2 τ 2 = 1 2 σ 2 i = 1 n ( y i θ T x i ) 2 1 2 τ 2 i = 1 d θ j 2 n l n σ 2 π d l n τ 2 π \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}
最大似然等價於最小化如下的損失函數:
a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ j = 1 d θ j 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}
嶺迴歸的Normal Equation​爲:
θ = ( X T X + λ I ) 1 X T y \theta = (X^TX+\lambda I)^{-1}X^Ty
嶺迴歸因爲矩陣 λ I \lambda I 的對角元素全是 1 1 ,像一條山嶺,故而得名。嶺迴歸的示意圖如下:

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

3.3 lasso迴歸和ElasticNet

lasso迴歸和嶺迴歸的不同是假設參數 θ \theta 也滿足laplace分佈,用最大後驗估計推導可得似然函數爲:
a r g m a x θ L ( θ ) = l n i = 1 n 1 σ 2 π e ( y i θ T x i ) 2 2 σ 2 j = 1 d 1 2 b e θ i b = 1 2 σ 2 i = 1 n ( y i θ T x i ) 2 1 b i = 1 d θ j n l n σ 2 π d l n 2 b \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}

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

a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ j = 1 d θ j 1 \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}
因爲 θ j 1 \lVert \theta_{j} \rVert_{1} 不可導,lasso迴歸的求解需要用到座標軸下降或者最小角迴歸,受限於篇幅,這裏不做展開,lasso迴歸的示意圖如下:

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

ElasticNet迴歸是將嶺迴歸和lasso迴歸進行結合,吸收二者的優點,損失函數爲:
a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ 1 j = 1 d θ j 2 + λ 2 j = 1 d θ j 1 \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 N 個樣本點 x x 分爲 C C 類的過程,不同的樣本類別在空間中的邊界稱爲決策邊界,當決策邊界是輸入的線性組合時( D D 維的空間中是一個 D 1 D-1 維的超平面),稱爲線性分類,示意圖如下:

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

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

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

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

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

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

給定一個數據集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\},
其中, x i R   n ,   y i γ = { + 1 , 1 } ,   i = 1 , 2 , . . . , N x_i \in R^{\ n}, \ y_i \in \gamma = \{+1, -1\}, \ i = 1, 2, ..., N ,如果存在某個超平面 S S
w x + b = 0 w \cdot x + b = 0
能夠將數據集的正實例點和負實例點完全正確地劃分到超平面的兩側,則稱數據集爲線性可分數據集(linear separable data set)。

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

4.1 感知機

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

感知機從輸入空間樣本 x x 到輸出空間樣本 y y 的模型如下:
f ( x ) = s i g n ( w x + b ) f(x)=sign(w \cdot {x}+b)
其中:
s i g n ( x ) = { 1 x < 0 1 x 0 sign(x)= \begin{cases} -1& {x<0}\\ 1& {x\geq 0} \end{cases}
M M 爲誤分點的集合,感知機的優化目標是最小化如下函數:
L ( w , b ) = x i M y i ( w x i + b ) 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 ) } T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\} ,其中

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

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

STEP 1選取初值 w 0 , b 0 w_0, b_0

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

STEP 3如果 y i ( w x i + b ) 0 y_i(w \cdot x_i + b) \leq 0 ,則:
w w + η y i x i b b + η y i 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 ] [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 { 0 , 1 } y\in\{0,1\} ,爲了使輸出在 0 0 1 1 之間,邏輯迴歸採用如下的函數形式:
h θ ( x ) = 1 1 + e θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}
即將線性迴歸的函數形式 θ T x \theta^Tx logistic sigmoid函數進行映射,logistic sigmoid函數的形式爲:
σ ( z ) = 1 1 + e z \sigma(z)=\frac{1}{1+e^{-z}}

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

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

邏輯迴歸假設 y y 服從伯努利分佈,並且用 h θ ( x ) h_\theta(x) 代表 y = 1 y=1 的概率,即:
P ( y = 1 x ; θ ) = h θ ( x ) P(y=1|x;\theta) = h_\theta(x)

P ( y = 0 x ; θ ) = 1 h θ ( x ) P(y=0|x;\theta) = 1-h_\theta(x)

將上述兩個式子合併成一個:
P ( y x ; θ ) = ( h θ ( x ) ) y ( 1 h θ ( x ) ) 1 y 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 ) } T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}

似然函數爲:
l ( θ ) = i = 1 N P ( y i x i ; θ ) = i = 1 N ( h θ ( x i ) ) y i ( 1 h θ ( x i ) ) 1 y i 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 ( θ ) = l n l ( θ ) = i = 1 N ( y i l n ( h θ ( x i ) ) + ( 1 y i ) l n ( 1 h θ ( x i ) ) ) J(\theta)=-lnl(\theta)=-\sum_{i=1}^N(y^iln(h_\theta(x^i))+(1-y^i)ln(1-h_\theta(x^i)))
利用梯度下降求解的參數的更新公式爲:
θ j : = θ j α θ j J ( θ ) \theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta)
展開後爲:
θ j : = θ j α i = 1 N ( h θ ( x i ) y i ) x j i \theta_j:=\theta_j-\alpha\sum_{i=1}^N(h_{\theta}(x^i) - y^i)x_j^{i}
利用梯度下降求解的參數的更新公式爲:
θ j : = θ j α θ j J ( θ ) \theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta)
展開後爲:
θ j : = θ j α i = 1 N ( h θ ( x i ) y i ) x j i \theta_j:=\theta_j-\alpha\sum_{i=1}^N(h_{\theta}(x^i) - y^i)x_j^{i} 可以看到邏

相關文章
相關標籤/搜索