集成學(xué)習(xí)(3) - 模型優(yōu)化基礎(chǔ)

在上一章中,我們通過幾個(gè)回歸模型講解了機(jī)器學(xué)習(xí)建模的一般流程。當(dāng)我們完成一個(gè)模型的建模訓(xùn)練預(yù)測就相當(dāng)于完成了一個(gè)基本的baseline,接下來的工作就是優(yōu)化模型,讓模型在測試集獲得更好的分?jǐn)?shù),那么如何優(yōu)化呢?這就是本次要涉及的內(nèi)容。

1. 數(shù)據(jù)集的劃分

首先我們明確一下機(jī)器學(xué)習(xí)數(shù)據(jù)集的劃分。
我們都知道機(jī)器學(xué)習(xí)是通過學(xué)習(xí)現(xiàn)有的數(shù)據(jù)來構(gòu)建模型。但是最終我們需要用這個(gè)模型來預(yù)測其在之前沒有見過的數(shù)據(jù)集上的表現(xiàn)。例如我們根據(jù)股票市場前六個(gè)月的數(shù)據(jù)擬合一個(gè)預(yù)測模型,我們的目的不是為了預(yù)測以前這六個(gè)月越準(zhǔn)越好,而是預(yù)測明天乃至未來的股價(jià)變化。

也就是說在模型訓(xùn)練過程中,模型還沒有部署到線上,這個(gè)時(shí)候我們不知道模型會(huì)遇到什么樣的真實(shí)數(shù)據(jù)。因而在測試集未知的情況下,我們需要將手中已經(jīng)擁有的數(shù)據(jù)集進(jìn)行劃分,一般可以分為訓(xùn)練集和測試集。訓(xùn)練集用于模型建模迭代和優(yōu)化。而測試集用于對模型的準(zhǔn)確度進(jìn)行檢驗(yàn)。

對于部分機(jī)器學(xué)習(xí)任務(wù),我們劃分的測試集必須是模型從未見過的數(shù)據(jù),比如語音識(shí)別中一個(gè)完全不同的人的說話聲,圖像識(shí)別中一個(gè)完全不同的識(shí)別個(gè)體。這時(shí),一般來說,訓(xùn)練集和驗(yàn)證集的數(shù)據(jù)分布是同分布的,而測試集的數(shù)據(jù)分布與前兩者會(huì)略有不同。在這種情況下,通常,測試集的正確率會(huì)比驗(yàn)證集的正確率低得多,這樣就可以看出模型的泛化能力,可以預(yù)測出實(shí)際應(yīng)用中的真實(shí)效果。

2. 方差與偏差

在有監(jiān)督學(xué)習(xí)中,偏差是指預(yù)測值和實(shí)際值的差值;方差是指模型在同一分布的多個(gè)測試集上的表現(xiàn)差別。偏差可以用“準(zhǔn)”來形容,方差可以用“確”來形容。比如,我們打靶,偏差小說明我們子彈射中點(diǎn)離靶心的平均距離很近;方差小說明我們子彈射中點(diǎn)比較集中。


image.png

在回歸中,我們最常用的評(píng)價(jià)指標(biāo)為均方誤差,即MSE: mean square error

MSE = \frac{1}{N}\sum\limits_{i=1}^{N}(y_i -\hat{ f}(x_i))^2,
其中\hat{ f}(x_i)是樣本x_i應(yīng)用建立的模型\hat{f}預(yù)測的結(jié)果。
如果我們所用的數(shù)據(jù)是訓(xùn)練集上的數(shù)據(jù),那么這個(gè)誤差為訓(xùn)練均方誤差,如果我們使用測試集的數(shù)據(jù)計(jì)算的均方誤差,我們稱為測試均方誤差。一般而言,我們并不關(guān)心模型在訓(xùn)練集上的訓(xùn)練均方誤差,我們關(guān)心的是模型面對未知的樣本集,即測試集上的測試誤差,我們的目標(biāo)是使得我們建立的模型在測試集上的測試誤差最小。那我們?nèi)绾芜x擇一個(gè)測試誤差最小的模型呢?這是個(gè)棘手的問題,因?yàn)樵谀P徒㈦A段,我們是不能得到測試數(shù)據(jù)的,比如:我們在模型未上線之前是不能拿到未知且真實(shí)的測試數(shù)據(jù)來驗(yàn)證我們的模型的。在這種情況下,為了簡便起見,一些觀點(diǎn)認(rèn)為通過訓(xùn)練誤差最小化來選擇模型也是可行的。這種觀點(diǎn)表面看上去是可行的,但是存在一個(gè)致命的缺點(diǎn),那就是:一個(gè)模型的訓(xùn)練均方誤差最小時(shí),不能保證測試均方誤差同時(shí)也很小。對于這種想法構(gòu)造的模型,一般在訓(xùn)練誤差達(dá)到最小時(shí),測試均方誤差一般很大!如圖:

image.png

在左圖中由真實(shí)函數(shù)f產(chǎn)生的數(shù)據(jù)用黑色曲線表示。
三種對f的估計(jì): 線性回歸(橙色曲線),兩條光滑樣條擬合(綠色和藍(lán)色)右圖:訓(xùn)練均方誤差(灰色曲線),測試均方誤差(紅色曲線)
可以看到:當(dāng)我們的模型的訓(xùn)練均方誤差達(dá)到很小時(shí),測試均方誤差反而很大,但是我們尋找的最優(yōu)的模型是測試均方誤差達(dá)到最小時(shí)對應(yīng)的模型,因此基于訓(xùn)練均方誤差達(dá)到最小選擇模型本質(zhì)上是行不同的。正如上右圖所示:模型在訓(xùn)練誤差很小,但是測試均方誤差很大時(shí),我們稱這種情況叫模型的過擬合。

過擬合的本質(zhì)是偏差小、方差大,而與之相對應(yīng)的欠擬合的本質(zhì)是偏差大,方差小。

從上圖的測試均方誤差曲線可以看到:測試均方誤差曲線呈現(xiàn)U型曲線,這表明了在測試誤差曲線中有兩種力量在互相博弈??梢宰C明:
E\left(y_{0}-\hat{f}\left(x_{0}\right)\right)^{2}=\operatorname{Var}\left(\hat{f}\left(x_{0}\right)\right)+\left[\operatorname{Bias}\left(\hat{f}\left(x_{0}\right)\right)\right]^{2}+\operatorname{Var}(\varepsilon)
也就是說,我們的測試均方誤差的期望值可以分解為\hat{f}(x_0)的方差、\hat{f}(x_0)的偏差平方和誤差項(xiàng)\epsilon的方差。為了使得模型的測試均方誤差達(dá)到最小值,也就是同時(shí)最小化偏差的平方和方差。由于我們知道偏差平方和方差本身是非負(fù)的,因此測試均方誤差的期望不可能會(huì)低于誤差的方差,因此我們稱\operatorname{Var}(\varepsilon)為建模任務(wù)的難度,這個(gè)量在我們的任務(wù)確定后是無法改變的,也叫做不可約誤差。那么模型的方差和偏差的平方和究竟是什么呢?
所謂模型的方差就是:用不同的數(shù)據(jù)集去估計(jì)f時(shí),估計(jì)函數(shù)的改變量。舉個(gè)例子:我們想要建立一個(gè)線性回歸模型,可以通過輸入中國人身高去預(yù)測我們的體重。但是顯然我們沒有辦法把全中國13億人做一次人口普查,拿到13億人的身高體重去建立模型。我們能做的就是從13億中抽1000個(gè)樣本進(jìn)行建模,我們對這個(gè)抽樣的過程重復(fù)100遍,就會(huì)得到100個(gè)1000人的樣本集。我們使用線性回歸模型估計(jì)參數(shù)就能得到100個(gè)線性回歸模型。由于樣本抽取具有隨機(jī)性,我們得到的100個(gè)模型不可能參數(shù)完全一樣,那么這100個(gè)模型之間的差異就叫做方差。
顯然,我們希望得到一個(gè)穩(wěn)定的模型,也就是在不同的樣本集估計(jì)的模型都不會(huì)相差太大,即要求f的方差越小越好。一般來說,模型的復(fù)雜度越高,f的方差就會(huì)越大。 如加入二次項(xiàng)的模型的方差比線性回歸模型的方差要大。
這里在補(bǔ)充兩個(gè)概念:

  • 基于偏差的誤差:主要是指預(yù)測值和真實(shí)值之間的差距,或者偏離程度,主要是用于評(píng)價(jià)模型的預(yù)測能力。
  • 基于方差的誤差:主要是描述了一個(gè)模型對給定的數(shù)據(jù)進(jìn)行預(yù)測的可變性。主要用于評(píng)價(jià)模型的穩(wěn)定性或者健壯性。
image.png

最終的目的是要衡方差與偏差,從而得到一個(gè)合理的模型。一般而言,增加模型的復(fù)雜度,會(huì)增加模型的方差,但是會(huì)減少模型的偏差,我們要找到一個(gè)方差--偏差的權(quán)衡,使得測試均方誤差最小。

3. 特征提取

在前面的討論中,我們已經(jīng)明確一個(gè)目標(biāo),就是:我們要選擇一個(gè)測試誤差達(dá)到最小的模型。但是實(shí)際上我們很難對實(shí)際的測試誤差做精確的計(jì)算,因此我們要對測試誤差進(jìn)行估計(jì),估計(jì)的方式有兩種:訓(xùn)練誤差修正與交叉驗(yàn)證。
- 訓(xùn)練誤差修正:
前面的討論我們已經(jīng)知道,模型越復(fù)雜,訓(xùn)練誤差越小,測試誤差先減后增。因此,我們先構(gòu)造一個(gè)特征較多的模型使其過擬合,此時(shí)訓(xùn)練誤差很小而測試誤差很大,那這時(shí)我們加入關(guān)于特征個(gè)數(shù)的懲罰。因此,當(dāng)我們的訓(xùn)練誤差隨著特征個(gè)數(shù)的增加而減少時(shí),懲罰項(xiàng)因?yàn)樘卣鲾?shù)量的增加而增大,抑制了訓(xùn)練誤差隨著特征個(gè)數(shù)的增加而無休止地減小。具體的數(shù)學(xué)量如下:
C_p = \frac{1}{N}(RSS + 2d\hat{\sigma}^2),其中d為模型特征個(gè)數(shù),RSS = \sum\limits_{i=1}^{N}(y_i-\hat{f}(x_i))^2\hat{\sigma}^2為模型預(yù)測誤差的方差的估計(jì)值,即殘差的方差。
AIC赤池信息量準(zhǔn)則:AIC = \frac{1}{d\hat{\sigma}^2}(RSS + 2d\hat{\sigma}^2)
BIC貝葉斯信息量準(zhǔn)則:BIC = \frac{1}{n}(RSS + log(n)d\hat{\sigma}^2)
- 交叉驗(yàn)證:
前面討論的對訓(xùn)練誤差修正得到測試誤差的估計(jì)是間接方法,這種方法的橋梁是訓(xùn)練誤差,而交叉驗(yàn)證則是對測試誤差的直接估計(jì)。交叉驗(yàn)證比訓(xùn)練誤差修正的優(yōu)勢在于:能夠給出測試誤差的一個(gè)直接估計(jì)。在這里只介紹K折交叉驗(yàn)證:我們把訓(xùn)練樣本分成K等分,然后用K-1個(gè)樣本集當(dāng)做訓(xùn)練集,剩下的一份樣本集為驗(yàn)證集去估計(jì)由K-1個(gè)樣本集得到的模型的精度,這個(gè)過程重復(fù)K次取平均值得到測試誤差的一個(gè)估計(jì)CV_{(K)} = \frac{1}{K}\sum\limits_{i=1}^{K}MSE_i。5折交叉驗(yàn)證如下圖:(藍(lán)色的是訓(xùn)練集,黃色的是驗(yàn)證集)

image.png

在測試誤差能夠被合理的估計(jì)出來以后,我們做特征選擇的目標(biāo)就是:從p個(gè)特征中選擇m個(gè)特征,使得對應(yīng)的模型的測試誤差的估計(jì)最小。對應(yīng)的方法有:
- 最優(yōu)子集選擇:
(i) 記不含任何特征的模型為M_0,計(jì)算這個(gè)M_0的測試誤差。
(ii) 在M_0基礎(chǔ)上增加一個(gè)變量,計(jì)算p個(gè)模型的RSS,選擇RSS最小的模型記作M_1,并計(jì)算該模型M_1的測試誤差。
(iii) 再增加變量,計(jì)算p-1個(gè)模型的RSS,并選擇RSS最小的模型記作M_2,并計(jì)算該模型M_2的測試誤差。
(iv) 重復(fù)以上過程知道擬合的模型有p個(gè)特征為止,并選擇p+1個(gè)模型\{M_0,M_1,...,M_p \}中測試誤差最小的模型作為最優(yōu)模型。
- 向前逐步選擇:
最優(yōu)子集選擇雖然在原理上很直觀,但是隨著數(shù)據(jù)特征維度p的增加,子集的數(shù)量為2^p,計(jì)算效率非常低下且需要的計(jì)算內(nèi)存也很高,在大數(shù)據(jù)的背景下顯然不適用。因此,我們需要把最優(yōu)子集選擇的運(yùn)算效率提高,因此向前逐步選擇算法的過程如下:
(i) 記不含任何特征的模型為M_0,計(jì)算這個(gè)M_0的測試誤差。
(ii) 在M_0基礎(chǔ)上增加一個(gè)變量,計(jì)算p個(gè)模型的RSS,選擇RSS最小的模型記作M_1,并計(jì)算該模型M_1的測試誤差。
(iii) 在最小的RSS模型下繼續(xù)增加一個(gè)變量,選擇RSS最小的模型記作M_2,并計(jì)算該模型M_2的測試誤差。
(iv) 以此類推,重復(fù)以上過程知道擬合的模型有p個(gè)特征為止,并選擇p+1個(gè)模型\{M_0,M_1,...,M_p \}中測試誤差最小的模型作為最優(yōu)模型。

4. 主成分分析(principal component analysis,PCA)

主成分分析的思想:通過最大投影方差 將原始空間進(jìn)行重構(gòu),即由特征相關(guān)重構(gòu)為無關(guān),即落在某個(gè)方向上的點(diǎn)(投影)的方差最大。在進(jìn)行下一步推導(dǎo)之前,我們先把樣本均值和樣本協(xié)方差矩陣推廣至矩陣形式:
樣本均值Mean:\bar{x} = \frac{1}{N}\sum\limits_{i=1}^{N}x_i = \frac{1}{N}X^T1_N,\;\;\;其中1_N = (1,1,...,1)_{N}^T
樣本協(xié)方差矩陣S^2 = \frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\bar{x})(x_i-\bar{x})^T = \frac{1}{N}X^THX,\;\;\;其中,H = I_N - \frac{1}{N}1_N1_N^T
最大投影方差的步驟:
(i) 中心化:x_i - \bar{x}
(ii) 計(jì)算每個(gè)點(diǎn)x_1,...,x_N\vec{u}_1方向上的投影:(x_i-\bar{x})\vec{u}_1,\;\;\;||\vec{u}_1|| = 1
(iii) 計(jì)算投影方差:J = \frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2,\;\;\;||\vec{u}_1|| = 1
(iv) 最大化投影方差求\vec{u}_1
\bar{u}_1 = argmax_{u_1}\;\;\frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2 \\ \;\;\;s.t. \vec{u}_1^T\vec{u}_1 = 1 (\vec{u}_1往后不帶向量符號(hào))
得到:
J = \frac{1}{N}\sum\limits_{i=1}^{N}[(x_i-\bar{x})^T\vec{u}_1]^2 = \frac{1}{N}\sum\limits_{i=1}^{N}[u_1^T(x_i-\bar{x})(x_i-\bar{x})^Tu_1]\\ \; = u_1^T[\frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\bar{x})(x_i - \bar{x})^T]u_1 = u_1^TS^2u_1
即:
\hat{u}_1 = argmax_{u_1}u_1^TS^2u_1,\;\;\;s.t.u_1^Tu_1 = 1\\ L(u_1,\lambda) = u_1^TS^2u_1 + \lambda (1-u_1^Tu_1)\\ \frac{\partial L}{\partial u_1} = 2S^2u_1-2\lambda u_1 = 0\\ 即:S^2u_1 = \lambda u_1
可以看到:\lambdaS^2的特征值,u_1S^2的特征向量。因此我們只需要對中心化后的協(xié)方差矩陣進(jìn)行特征值分解,得到的特征向量即為投影方向。如果需要進(jìn)行降維,那么只需要取p的前M個(gè)特征向量即可。是一種常見的數(shù)據(jù)降維方法,其目的是在“信息”損失較小的前提下,將高維的數(shù)據(jù)轉(zhuǎn)換到低維,從而減小計(jì)算量。下面通過一個(gè)栗子來進(jìn)行討論
在許多領(lǐng)域的研究與應(yīng)用中,通常需要對含有多個(gè)變量的數(shù)據(jù)進(jìn)行觀測,收集大量數(shù)據(jù)后進(jìn)行分析尋找規(guī)律。多變量大數(shù)據(jù)集無疑會(huì)為研究和應(yīng)用提供豐富的信息,但是也在一定程度上增加了數(shù)據(jù)采集的工作量。更重要的是在很多情形下,許多變量之間可能存在相關(guān)性,從而增加了問題分析的復(fù)雜性。如果分別對每個(gè)指標(biāo)進(jìn)行分析,分析往往是孤立的,不能完全利用數(shù)據(jù)中的信息,因此盲目減少指標(biāo)會(huì)損失很多有用的信息,從而產(chǎn)生錯(cuò)誤的結(jié)論。

因此需要找到一種合理的方法,在減少需要分析的指標(biāo)同時(shí),盡量減少原指標(biāo)包含信息的損失,以達(dá)到對所收集數(shù)據(jù)進(jìn)行全面分析的目的。由于各變量之間存在一定的相關(guān)關(guān)系,因此可以考慮將關(guān)系緊密的變量變成盡可能少的新變量,使這些新變量是兩兩不相關(guān)的,那么就可以用較少的綜合指標(biāo)分別代表存在于各個(gè)變量中的各類信息。主成分分析與因子分析就屬于這類降維算法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容