2.1.1 統計基礎
1.輸入空間、特征空間和輸出空間
向量空間模型包括輸入空間、特征空間與輸出空間。輸入與輸出所有的可能取值的集合分別稱為輸入空間與輸出空間,每個具體的輸入是一個實例,通常由特征向量表示,由所有特征向量構成的空間稱為特征空間。一般輸入變量用x表示,輸出變量用y表示。
訓練數據和測試數據由輸入輸出對組成,例如{(x1,y1),(x2,y2),…,(xn,yn)}。這些成對出現的數據稱為樣本,其中輸入和輸出變量類型可以是連續的,也可以是離散的,不同類型的樣本采用不同的求解方法。例如,如果x和y均為連續變量的預測問題,則可以用回歸方法來解決;如果y為離散變量的預測問題,則可以用分類算法處理。
2.聯合概率分布
聯合概率表示兩個或多個事件(變量)同時出現的概率,而聯合概率分布是指各個變量的出現概率之間存在一定的規律,但是其分布情況未知。在有監督學習中,樣本數據的訓練可使各變量之間的聯合概率分布情況逐漸明確。聯合概率分布按變量的類型可分為離散隨機變量聯合分布和連續隨機變量聯合分布。
3.假設空間
假設空間(Hypothesis Space)是由輸入空間到輸出空間的映射構成的集合,而其中每個映射對應一個模型,假設空間確定了模型預測的范圍,訓練過程就是從中選擇最優模型。監督學習的目標是學習一個由輸入到輸出的映射規律,其模型包括概率模型和非概率模型,前者由條件概率分布p(y|x)表示,后者由函數y=f (x)表示,模型確認之后就可以對具體的輸入進行相應的輸出預測。
4.均值、標準差、方差、協方差
首先給定一個含有n個樣本的集合X={x1,…,xn},其中均值和標準差的計算方法相對簡單,其計算公式如下。其中是樣本集合的均值,s是樣本集合的標準差。


均值描述的是樣本集合的平均值,而標準差描述的是樣本集合的各個樣本點到均值的距離分布,描述的是樣本集合的分散程度。例如{0,8,12,20}和{8,9,11,12}兩個集合的均值都是10,計算兩者的標準差,前者約是8.3,后者約是1.8,顯然后者較為集中,其標準差小一些。
方差是標準差的平方,其計算公式如下:

此外,在機器學習中方差就是估計值與其期望值的統計方差,計算方法如下式,其中是模型的估計值,而
表示
期望值,期望值
,由樣本的值xi與其發生概率相乘的總和表示,反映的是隨機變量均值。用估計值與期望值(均值)的差的平方表示模型預測穩定性。
![Var(β) =E (β?-E[β?]) 2](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0032-0014.jpg?sign=1755271201-Cpo5JZdknZtAW7FwYl4uM2DfNsYJKNe8-0-0fd59ec7913651bbb2673b037c56ff6b)
進行大量的重復實驗,就會發現模型在樣本集上的結果值并非唯一,模型的輸出值會在一定范圍內變化,這種變化的范圍越大,表示其方差就越大。
標準差和方差一般用來描述一維數據。面對多個維度的數據集,需要計算不同維度之間的關系,協方差主要用來度量兩個隨機變量關系:

協方差的結果有什么意義呢?如果結果為正值,則說明兩者是正相關的(從協方差可以引出“相關系數”的定義)。如果結果為負值,則說明兩者是負相關的。如果為0,就是統計意義上的“相互獨立”。
如果維度增加,就需要計算兩兩之間的協方差,這時就需要使用協方差矩陣了。以三維數據為例,數據集{x,y,z}的協方差矩陣如下:

可以看到,協方差矩陣是一個對稱的矩陣,而且對角線是各個變量上的方差,對應n維數據x={x1,x2,…,xn}的協方差矩陣公式如下,其中μ是x的期望值。

5.超參數
超參數是機器學習算法的調優參數(Tuning Parameter),常應用于估計模型參數的過程中,由人工直接指定,可以使用啟發式方法來設置,并能依據給定的預測問題而調整。例如,訓練神經網絡的學習率或邏輯回歸損失函數中的正則化因子等。需要注意,超參數與模型參數不同,模型參數是學習算法擬合訓練數據獲得的參數,即這些參數是作為模型本身的參數而存在的。例如,線性回歸的系數是模型參數。
6.損失函數和風險函數
損失函數是關于模型計算結果f(x)和樣本實際目標結果y的非負實值函數,記作L(y,f(x)),用它來解釋模型在每個樣本實例上的誤差。損失函數的值越小,說明預測值與實際值越接近,即模型的擬合效果越好。損失函數主要包括以下幾種。
① 0-1損失函數。
![1, ( )y fx Ly f x[, ( )]=0, ( )≠=y fx](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0018.jpg?sign=1755271201-oBw9HhnZpGJzfsuFo2WoPv2gsEA0xbBR-0-48b272563eaeb7ea9574835b4d49b9a2)
0-1損失函數是一種最簡單的損失函數,如果實際值y與f(x)的值不相等,則認為預測失敗;反之,預測成功,損失為0。可見,該損失函數不考慮預測值和真實值的誤差程度,只要預測錯誤,即使預測誤差再小,也算預測錯誤。
② 平方損失函數。
![L[y,f(x)]=[y- f(x)] 2](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0019.jpg?sign=1755271201-BeWQNWqwMmV3zlHVBUcBBVhswSEocnx8-0-f3423b2aa06bf90a8552d5b741dabdc8)
平方損失函數計算的是實際目標值y與預測值f(x)之間的差的平方,其特點是非負,將差值進行放大。
③ 絕對損失函數。
![L [y,f(x)]=|y- f(x)|](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0020.jpg?sign=1755271201-SiR06Vi8yPhkX9gG0d9ruiHxksYU5ylU-0-a5ef43f283212e480a224bbb4f20ceb7)
絕對損失函數是對實際目標值y與預測值f(x)之間的差求絕對值,損失函數的結果為非負。
④ 對數損失函數。
![L[y,f(x)]=-log 2 p(y|x)](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0021.jpg?sign=1755271201-0Ope4JseB3AUbgnmvJ8BB1xEQ6fYJaWy-0-270a291774d123e33d7b707c106dfdca)
對數損失函數用到了最大似然估計的思想。p(y|x)是指在當前模型的基礎上,對于輸入變量x,其預測值為y,也就是預測正確的概率。在公式中加負號,表示預測正確的概率越高,其損失值應該越小。
7.訓練誤差
模型的損失函數是模型訓練誤差的度量,而模型優化目標是全局損失,即所有樣本的損失函數的均值最小,其中訓練誤差可以表示為
![Ly f x[, ( )]= ∑1 n 1in =i[, ( )]Ly f x](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0022.jpg?sign=1755271201-pvvUEeXLNlicgQrsWX2gLqkoh5Q0zfvV-0-960bc855c4b574f77f3c900c3b67ec4d)
對于平方損失函數,就是對所有樣本的誤差求平方和,如下公式所示。為了求導方便,可以在前面乘1/2。
![[, ( )]Ly f x =2n =i 1 1∑n [y fx- ( )]2 i](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0023.jpg?sign=1755271201-336Kz4Ibk6ToHjmAiO4sGqd0re5weK04-0-3cdade20a23cebb21b0143c5ed4bb84f)
損失函數的期望Rexp是模型關于聯合分布的期望損失,可以用如下公式表示,其中F是假設空間,Rexp稱為風險函數或期望損失。
![expR =∈f F min 1i∑n =n1 i[, ( )]Ly f x](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0033-0024.jpg?sign=1755271201-XiuzQAaquT7kCDzJYWPWEzJarxTi9gQF-0-e612ae9eeffa46552e3fa746990ab956)
L [y,f(x)]可以被認為是模型的經驗風險,是模型關于訓練樣本集的平均損失。通常情況下,經驗風險可以由訓練集的損失函數來確定。根據大數定律,當樣本容量趨于無窮時,經驗風險趨向期望風險。根據經驗風險最小化的策略,如果最優模型的經驗風險最小,就可以將模型選擇轉化為求解最小經驗風險的問題。這一理論的前提是訓練樣本的數量要足夠多,但是在現實應用中,這一條件很難滿足。
假如樣本數量較多,通過最小化經驗風險學習即可。但是當樣本量很少時,經驗信息不足,通過最小化經驗風險學習效果未必很好,當模型的復雜度過大時,訓練誤差會逐漸減小并趨近于0;而測試誤差會先減小,達到最小值后又增大。當選擇的模型復雜度過大時,過擬合現象就會發生。
結構風險最小化(Structural Risk Minimization,SRM)針對經驗風險最小化在小樣本量時易產生過擬合問題進行了改進,增加了表示模型復雜度的正則化項,對模型復雜度進行限制。這一策略認為結構簡單的模型最優,它的評估目標是模型復雜度。在其他變量都相同的情況下,模型結構風險最小化的定義如下:
![n f F min1 [Lxy∈ n 1=i∑i i] ( )+ Jλ f](https://epubservercos.yuewen.com/325728/31664380603480106/epubprivate/OEBPS/Images/figure-0034-0025.jpg?sign=1755271201-RP3vZPFmHkJQol67wUT0rycBDx5Fe6VW-0-b381edac0ef3b7a05dad56307c24933e)
其中J(f)為模型的復雜度,模型f越復雜,復雜度J(f)就越大;反之,模型f越簡單,復雜度J(f)就越小。λ≥0是系數,用以權衡經驗風險和模型的復雜度。結構風險小,要求經驗風險與模型復雜度同時小。結構風險小的模型往往對訓練數據以及未知的測試數據都有較好的預測。當模型是條件概率分布,損失函數是對數損失函數且模型復雜度由模型的先驗概率表示時,結構風險最小化就等價于最大后驗概率估計,監督學習問題就變成了經驗風險或結構風險函數的最優化問題,這時經驗風險或結構風險函數是最優化的目標函數。
損失函數反映了模型預測結果與實際結果之間的差距,理解損失函數的本質,有助于對算法進行優化,需要結合業務目標和數據特點對問題本質進行理解,并用數學公式進行抽象,選擇較簡單的實現方法應用。
8.正則化與交叉驗證
正則化和交叉驗證都是為了避免過擬合,其中正則化用于結構風險最小化,在經驗風險上加正則化項或懲罰項,正則化項一般是模型復雜度的單調遞增函數,模型越復雜,正則化值就越大。例如正則化項可以是模型參數向量的范數。常用的正則化包括L1、L2正則化,它們也被稱為范數,對應于結構化風險最小化中的λJ(f),即模型復雜度的懲罰項,稱其為正則化項(Regularizer)。
如何增加正則化項呢?首先從理論上說,任何函數都可以用多項式的方式去逼近,而在下面結構化風險最小化公式中的f(x)可以用f(x)=w0+w1x+…+wmxm的形式來表示。

其中n是樣本數,多項式函數中的wi就對應模型的參數。模型越復雜,其中wi的個數就越多,因此增加正則項的任務就是減少wi的個數,而L0、L1、L2這些正則化方法的目標均是使模型參數向量簡化。
(1)L0正則化
L0正則化通過限制向量中非0的元素的個數實現模型優化,用L0來正則化一個參數矩陣W,目標是使其更稀疏,即使W中的大部分元素都是0。很明顯,如果將最小化L0正則化作為懲罰項,就是尋找最優的稀疏特征項。但L0的最小化問題在實際應用中會出現NP困難問題(NP-Hard Problem)。因此很多情況下,L0優化問題會用L1、L2代替。
(2)L1正則化
L1正則化通過對參數向量中各個元素絕對值之和進行限制,任何正則化算子,如果在 wi=0的地方不可微,并且可以分解為多項式的形式,那么這個正則化算子就可以實現稀疏。與L0正則化相比,L1正則化不僅可以實現稀疏,而且L1正則化是L0正則化的最優凸近似,它比L0正則化容易優化求解。按照 L1正則化的定義,可以將結構風險中的模型復雜度λJ(W)表示為,其中λ表示正則化系數,m是模型的階次,表示數據的維度。例如,m=2為二維的情況,對于權重w1和w2(w0=0),此時J(W)=|w1|+|w2|,如圖2-1所示。其中圖2-1(a)是將w1和w2分別作為x、y坐標,L作為z坐標繪制出來的;圖2-1(b)是圖2-1(a)的俯視圖;對于梯度下降(Gradient Descent)法,求解的過程可以畫出等值線,如圖2-1(c)所示,不同色彩的圓圈表示損失函數尋找最小值的過程,參數矩陣W按照梯度下降法計算損失函數,不斷向最小值的位置迭代,與L1交界的地方就是取得的極值點,這其實是兩個曲面相交的地方。

圖2-1 二維L1正則化
因為L函數有很多“突出的角”(二維情況下有4個),損失函數與這些角接觸的概率會遠大于與L的其“部位”接觸的概率。而在這些角上,會有很多權重等于0,這就是L1正則化可以產生稀疏模型,進而可以限制模型中參數的數量,降低模型復雜度,防止過擬合的原因。與L2相比,L1做得更徹底、更稀疏。
正則化前面的系數λ,可以控制L圖形的大小,λ越大,L的圖形就越小;而λ越小,L的圖形越大。同樣地,損失函數的參數越多,圖中的圓圈就越大。可以看到 λ 起到平衡兩者的作用,因此λ也稱為學習率(Learning Rate)。
(3)L2正則化
L2正則化是指向量各元素求平方和,用模最小化來確保w的每個元素都很小,都接近于0。與L1正則化不同,它不會等于0,而是接近于0。如圖2-2(a)所示,在m為2時,它就是一個拋物面。俯視圖如圖2-2(b)所示,就是一個圓,與方形相比,被磨去了棱角。求解過程可畫出等值線,如圖2-2(c)所示。

圖2-2 二維L2正則化
因此損失函數使w1或w2等于0的概率小了許多,這就是L2正則化不具有稀疏性的原因。但是,L2正則化通過將損失函數變為強凸函數,可以有效地加快梯度下降的收斂速度。
在算法調優時需要注意選擇合適的正則化策略。L2準確度高,但是訓練時間長;L1正則化可以做一定的特征選擇,適合大量數據,在樣本不均勻時可以調整損失函數中的權重。
擬合過程中,通常希望最后構造的模型中,所有參數都比較小。這樣做可以減少模型的復雜度,適應不同的數據集,也在一定程度上避免過擬合。例如,在線性回歸方程中,如果參數很大,那么只要數據偏移一點點,就會對結果造成很大的影響,即參數小表示抗擾能力強。特別是特征數比樣本數量多時,如果不加入L2正則化,會使模型的抗擾能力變差。而一旦加入正則化懲罰項,隨著不斷迭代,損失函數中的參數矩陣會不斷減小。
在交叉驗證方面,一般情況下,將數據集隨機切分為訓練集、驗證集和測試集這3部分,其中訓練集用來訓練模型;驗證集用于訓練過程中模型的驗證和選擇,如果有多個模型,選擇其中最小預測誤差的模型;而測試集用于對最終訓練完成的模型進行評估。在實際應用中,數據往往并不充足,此時可以采用交叉驗證的方法,將訓練集切分成很多份,然后進行組合,以擴大可用訓練集的數量。按照樣本切分和組合方式,交叉驗證分為以下幾種。
① Holdout檢驗。
將原始的數據集隨機分成兩個集合A和B,A作為訓練集,B作為測試集。先使用訓練集訓練模型,然后利用測試集驗證模型的效果,記錄最后的分類準確率作為該模型的性能指標,其準確性可以用平均絕對誤差(Mean Absolute Error,MAE)、平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)等統計指標來衡量。這種方法的好處是簡單,只需要把原始數據分成兩個部分。但是嚴格意義上,Holdout檢驗并不算是交叉檢驗。
② 簡單交叉驗證。
首先,隨機地將數據集分成兩個部分,分別用作訓練和測試,然后用訓練集在各種條件下訓練模型,得到不同的模型,在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型。
③ k折交叉驗證。
將數據切分為k個互不相交的大小相同的數據集,利用k-1個子集訓練,用剩下的一個子集測試,重復k次,選出平均測試誤差最小的模型。顯然,k取值越大,統計偏誤就越小,但是需要的計算量越大。一些實驗表明,當k取10時,在計算代價和性能之間能達到好的平衡。
④ 留一交叉驗證。
在k折交叉驗證中,當k為所有樣本數N,在數據缺乏的情況下可使用留一交叉驗證。假設樣本數據集中有N個樣本,將其中一個樣本單獨作為測試集,其余N-1個樣本作為訓練集,這樣得到了N個模型,用這N個模型的分類準確率的平均數作為此分類器的性能指標。留一交叉驗證的優點是每一個模型都用幾乎所有的樣本來訓練模型,并且評估的結果比較可靠。它的缺點是計算成本高,特別是當N非常大時,計算耗時極長。