李航-統計學習方法筆記(一):統計學習方法概論
本系列筆記,主要是整理統計學習方法的知識點和代碼實現各個方法,來加強筆者對各個模型的理解,為今年找到好工作來打下基礎。
計劃在一個月內更新完這本書的筆記,在此立一個flag: 從2019/2/17開始 到 2019/3/17結束。
在本章中,我們需要了解這些概念:統計學習的定義、研究對象、方法;監督學習;統計學習方法的三要素:模型、策略和算法;模型選擇;正則化、交叉驗證和學習的泛化能力;生成模型與判別模型;分類問題、標註問題與回歸問題。
統計學習的定義:
統計學習(statistical learning)是關於計算機基於數據構建概率統計模型並運用模型對數據進行預測與分析的一門學科。統計學習也稱為統計機器學習。
統計學習的研究對象:
統計學習的對象是數據。它從數據出發,提取數據的特征,抽象出數據的模型,發現數據中的知識,又回到對數據的分析與預測中去。統計學習關於數據的基本假設是同類數據具有一定的統計規律性,這是統計學習的前提。這裏的同類數據是指具有某種共同性質的數據。
統計學習的方法:
統計學習的方法是基於數據構建統計模型從而對數據進行預測與分析,統計學習由監督學習、非監督學習、半監督學習和強化學習等組成。
我們主要討論監督學習,這種情況下統計學習的方法可以概括如下:從給定的、有限的、用於學習的訓練數據集合出發,假設數據是獨立同分布產生的;並且假設要學習的模型屬於某個函數的集合,稱為假設空間;應用某個評價準則,從假設空間種選取一個最優的模型,使它對已知的數據及未知的測試數據在給定的評價準則下有最優的預測;最優模型的選取由算法實現。這樣,統計學習方法包括模型的假設空間、模型選擇的準則以及模型學習的算法,稱其為統計學習方法的三要素,模型、策略和算法
監督學習:
在監督學習中,每個具體的輸入是一個實列,通常由特征向量表示。這時,所有特征向量存在的空間稱為特征空間,特征空間的每一維對應一個特征,模型實際上都是定義在特征空間上的。
監督學習的模型可以是概率模型或非概率模型,由條件概率分別$P(Y|X)$或決策函數$Y = f(X)$表示,隨具體學習方法而定,對具體的輸入進行相應的輸出預測時,寫作$P(y|x)$或$y = f(x)$。
統計學習三要素:
方法=模型+策略+算法
模型:統計學習首要考慮的問題是學習什麽樣的模型。在監督學習過程中,模型就是所要學習的條件概率分布或決策函數。模型的假設空間包含所有可能的條件概率分布或決策函數。
策略:有了模型的假設空間,統計學習接著需要考慮的是按照什麽樣的準則學習或者選取最優的模型?為了回答這一問題,首先引入損失函數和風險函數的概念:損失函數度量模型一次預測的好壞,風險函數度量平均意義下模型預測的好壞。
損失函數和風險函數:監督學習問題是在假設空間$F$中選取模型$f$作為決策函數,對於給定的輸入$X$,由$f(X)$給出相應的$Y$,這個輸出的預測值$f(X)$與真實值$Y$可能一致也可能不一致,用一個損失函數(loss function)或代價函數(cost function)來度量預測錯誤的程度。損失函數是$f(X)$和$Y$的非負實值函數,記作$L(Y,f(X))$。
常用的損失函數有以下幾種:
(1)0-1 損失函數(0-1 loss function):
$$L(Y,f(X)) = \left\{\begin{matrix}
1, & Y \neq f(X) \\
0, & Y= f(X)
\end{matrix}\right.$$
(2)平方損失函數(quadratic loss function):
$$L(Y,f(X)) = (Y - f(X))^2$$
(3)絕對損失函數(absolute loss function)
$$L(Y,f(X)) = |Y - f(X)|$$
(4)對數損失函數(logarithmic loss function)或對數似然損失函數(log-likelihood loss function):
$$L(Y,P(Y|X)) = -logP(Y|X)$$
損失函數值越小,模型就越好。由於模型的輸入、輸出$(X,Y)$是隨機變量,遵循聯合分布$P(X,Y)$,所以損失函數的期望是:
$$R_{exp}(f) = E_p[L(Y,f(X))] = \int_{\mathcal{X} \times \mathcal{Y}}L(y,f(x))P(x,y)dxdy$$
這是理論上模型$f(X)$關於聯合分布$P(X,Y)$的平均意義下的損失,稱為風險函數或期望損失(expected loss).學習的目標就是選擇期望風險最小的模型,由於聯合分布$P(X,Y)$是未知的,$R_{exp}(f)$不能直接計算。實際上,如果知道聯合分布$P(X,Y)$,可以從聯合分布直接求出條件概率分布$P(Y|X)$,也就不需要學習了。那麽如何解決這個問題呢?
給定一個訓練數據集:
$$T = {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}$$
模型$f(X)$關於訓練數據集的平均損失稱為經驗風險或經驗損失(empirical loss),記作$R_{emp}$:
$$R_{emp}(f) = \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))$$
期望風險$R_exp(f)$是模型關於聯合分布的期望損失,經驗風險$R_{emp}(f)$是模型關於訓練樣本集的平均損失。根據大數定律,當樣本容量N趨於無窮時,經驗風險$R_{emp}(f)$趨於期望風險R_{exp}(f)。所以,我們使用經驗風險估計期望風險。但是,有一個問題:現實中,訓練數目有限,用經驗風險估計期望風險並不理想。如何解決這個問題呢?既然是經驗風險引起的問題,那麽我們需要對問題來源做改動:對經驗風險進行一定的矯正,這就關系到監督學習的兩個基本策略:經驗風險最小化和結構風險最小化。
經驗風險最小化(empirical risk minimization,ERM)與結構風險最小化(structural risk minimization, SRM):
在假設空間、損失函數以及訓練數據集確定的情況下,經驗風險最小化的策略認為,經驗風險最小的模型就是最優的模型。根據這一策略,按照經驗風險最小化求最優模型就是求解最優化問題:
$$\min_{f\in\mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))$$
其中,$\mathcal{F}$是假設空間。
當樣本容量足夠大時,經驗風險最小化能夠保證有很好的學習效果,如:極大似然估計(maximum likelihood estimation)就是經驗風險最小化的一個例子:當模型是條件概率分布,損失函數是對數損失函數時,經驗風險最小化就等價於極大似然估計:
$$\arg \min_{\theta}-\frac{1}{N}\sum_{i=1}^{N}logP(y_i|x_i,\theta)$$
$$\arg \max_{\theta}\frac{1}{N}\sum_{i=1}^{N}logP(y_i|x_i,\theta)$$
但是,當樣本容量很小時,經驗風險最小化學習的效果就未必很好,會產生過擬合(over-fitting)現象。如何解決這個樣本容量小時造成過擬合問題呢?其中一個解決方法(有多個)是使用結構風險最小化來代替經驗風險最小化。
結構風險最小化:是為了防止過擬合而提出來的策略。結構風險最小化等價於正則化(regularization)。結構風險在經驗風險上加上表示模型復雜度的正則化項或罰項(penalty term)。在假設空間、損失函數以及訓練數據集確定的情況下,結構風險的定義為:
$$R_{srm}(f) = \frac{1}{N}\sum_{i=1}{N}L(y_i,f(x_i)) + \lambda J(f)$$
其中$J(f)$為模型的復雜度。如,貝葉斯估計中的最大後驗概率估計(maximum posterior probability estimation, MAP)就是結構風險最小化的一個例子。當模型是條件概率分布、損失函數是對數損失函數、模型復雜度由模型的先驗概率表示時,結構風險最小化就等價於最大後驗概率估計:
在這裏簡單介紹一下最大後驗概率(參考博客),貝葉斯公式:
$$p(\theta | X) = \frac{p(X|\theta)p(\theta)}{p(X)}$$
每一項表示:$$posterior = \frac{likehood\ast prior}{evidence}$$
posterior:通過樣本$X$得到參數$\theta$的概率;likehood:通過參數$\theta$得到的樣本$X$的概率;
prior:參數$\theta$的先驗概率,一般是根據人的先驗知識得出來的,像L1,L2正則化就是對參數引入了拉普拉斯先驗分布和高斯先驗分布;
evidence:樣本$X$發生的概率。
對於給定的數據集:極大似然估計:
$$P(X|\theta) = \sum_{x_{1}}^{x_{N}}logP(x_i|\theta)$$
最大後驗概率:
$$\arg \max_{\theta}p(\theta|X) =\frac{p(X|\theta)p(\theta)}{p(X)} = \arg \max_{\theta}p(X|\theta)p(\theta) = \arg \max_{\theta}(\sum_{x_{1}}^{x_{N}}logp(x_i|\theta) + logp(\theta))$$
所以,結構風險最小化的策略認為結構風險最小的模型是最優的模型。所以,求最優的模型,就是求解最優化問題:
$$\min_{f\in\mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) + \lambda J(f)$$
算法:算法是指學習模型的具體計算方法。統計學習基於訓練數據集,根據學校策略,從假設空間中選擇最優模型,最後考慮用什麽樣的計算方法求解最優模型。
模型選擇:
首先介紹兩個概念:訓練誤差和測試誤差,這個比較好理解,訓練誤差就是指學到的模型對訓練數據上使用損失函數來評估,測試誤差亦如此。
當假設空間含有不同復雜度(例如,不同的參數個數)的模型時,就面臨模型選擇的問題。如果一味追求提高對訓練數據的預測能力,所選模型的復雜度則往往會比真模型更高,這種現象稱為過擬合(指學習時選擇的模型所包含的參數過多)。那怎樣選擇一個好的模型呢?兩種常用的模型選擇方法:正則化與交叉驗證
正則化和交叉驗證:
正則化:是結構風險最小化策略的實現,是在經驗風險上加一個正則化項。正則化項一般是模型復雜度的單調遞增函數,模型越復雜,正則化值就越大。比如:正則化項可以是模型參數向量的範數。例如,在回歸問題中,損失函數是平方損失,正則化可以是參數向量的$L_2$範數:
$$L(w) = \frac{1}{N}\sum_{i=1}{N}(f(x_i;w) - y_i)^2 + \frac{\lambda}{2}||w||^2$$
這裏,$||w||$表示參數向量$w$的$L_2$範數。
正則化項也可以是參數向量的$L_1$範數:
$$L(w) = \frac{1}{N}\sum_{i=1}{N}(f(x_i;w) - y_i)^2 + \lambda ||w||_1$$
這裏,$||w||_1$$表示參數向量$w$的$L_1$範數。
正則化的作用是選擇經驗風險與模型復雜度同時較小的模型。正則化符合奧卡姆剃刀(Occam‘s razor)原理:在所有可能選擇的模型中,能夠很好地解釋已知數據並且十分簡單才是最好的模型,也就是應該選擇的模型。從貝葉斯估計的角度來看,正則化項對應於模型的先驗概率。可以假設復雜的模型有較小的先驗概率,簡單的模型有較大的先驗概率。
交叉驗證:如果給定的樣本數據充足,進行模型選擇的一種簡單方法是隨機地將數據集切分成三部分,分別是訓練集、驗證集和測試集。訓練集用來訓練模型,驗證集用於模型的選擇,測試集用於對於最後方法的評估。當數據是不充足時,為了選擇好的模型,可以采用交叉驗證方法。交叉驗證的基本想法時重復地使用數據;把給定的數據進行切分,將切分的數據集組合為訓練集與測試集,在此基礎上反復地進行訓練、測試以及模型選擇。
簡單交叉驗證:首先隨機地將已給數據分為兩個部分,一部分作為訓練集,另一部分作為測試集;然後用訓練集在各種條件下(例如,不同的參數個數)訓練模型,從而得到不同的模型;在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型。
$S$折交叉驗證:首先隨機地將已給數據切分為$S$個互不相交的大小相同的子集;然後利用$S - 1$個子集的數據訓練模型,利用余下的子集測試模型;將這一過程對可能的$S$種選擇重復進行;最後選出$S$次評測中平均測試誤差最小的模型。
留一交叉驗證:$S$折交叉驗證的特殊情形是$S = N$。
泛化能力:
學習方法的泛化能力是指該方法學習到的模型對未知數據的預測能力。
生成模型與判別模型:
監督學習的任務就是學習一個模型,這個模型的一般形式為決策函數:
$$Y = f(X)$$
或者條件概率分布:
$$P(Y|X)$$
生成方法由數據學習聯合概率分布$P(X,Y)$,然後求出條件概率分布$P(Y|X)$作為預測的模型,即生成模型:
$$P(Y|X) = \frac{P(X,Y)}{P(X)}$$
典型的生成模型有:樸素貝葉斯法和隱馬爾可夫模型。生成方法的特點:生成方法可以還原$P(X,Y)$,而判別方法不能;生成方法的學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快地收斂於真實模型;當存在隱變量時,仍可以用生成方法學習,此時判別方法就不能用。
判別方法由數據直接學習接層函數$f(X)$或者條件概率分布$P(Y|X)$作為預測的模型,即判別模型;典型的判別模型:$k$近鄰法、感知機、決策樹、邏輯斯諦回歸模型、最大熵模型、支持向量機、提升方法和條件隨機場等。判別方法的特點:判別方法直接學習的是條件概率$P(Y|X)$或決策函數$f(X)$,直接面對預測,往往學習的準確率更高;由於直接學習$P(Y|X)$或$f(X)$,可以對數據進行各種程度上的抽象、定義特征並使用特征,因此可以簡化學習問題。
分類問題、標註問題與回歸問題:
分類問題:當輸出變量$Y$取有限個離散值時,預測問題便成為了分類問題。這時,輸入變量$X$可以是離散的,也可以是連續的。對於二分類問題常用的評價指標是精確率(precision)與召回率(recall):精確率定義:$P = \frac{TP}{TP + FP}$;召回率定義:$R = \frac{TP}{TP + FN}$。此外,還有$F_1$值,是精確率和召回率的調和均值:$$\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}\\F_1 = \frac{2TP}{2TP + FP + FN}$$
在這裏,$TP$:將正類預測為正類數;$FN$:將正類預測為負類數;$FP$:將負類預測為正類數;$TN$:將負類預測為負類數。
標註問題:可以認為標註問題是分類問題的一個推廣,標註問題又是更復雜的結構預測問題的簡單形式。標註問題的輸入是一個觀測序列,輸出是一個標記序列或狀態序列。標註問題的目標是在於學習一個模型,使它能夠對觀測序列給出標記序列作為預測。
回歸問題:回歸用於預測輸入變量和輸出變量之間的關系,特別是當輸入變量的值發生變化時,輸出變量的值隨之發生的變化。回歸模型正是表示從輸入變量到輸出變量之間映射的函數。回歸問題的學習等價於函數擬合:選擇一條函數曲線使其很好地擬合已知數據且很好地預測未知數據。
李航-統計學習方法筆記(一):統計學習方法概論