回歸𝑝>𝑛p>
np>`n設置:如何選擇正則化方法(Lasso、PLS、PCR、ridge)?
我正在嘗試在存在大量變量/特徵的情況下選擇嶺回歸、LASSO、主成分回歸(PCR) 或偏最小二乘法(PLS)() 和較少數量的樣本 (),我的目標是預測。
這是我的理解:
- **嶺回歸**縮小回歸係數,但使用所有係數而不使它們.
- **LASSO**也縮小了係數,但也使它們,這意味著它也可以進行變量選擇。
- 主成分回歸截斷成分,使得變得小於; 它會丟棄組件。
- 偏最小二乘還構建了一組用於回歸的輸入的線性組合,但與 PCR 不同,它使用(此外) 用於降維。PCR 和 PLS 回歸之間的主要實際區別在於,PCR 通常需要比 PLS 更多的組件來實現相同的預測誤差(參見此處)。
考慮以下虛擬數據(我嘗試使用的實際數據類似):
#random population of 200 subjects with 1000 variables M <- matrix(rep(0,200*100),200,1000) for (i in 1:200) { set.seed(i) M[i,] <- ifelse(runif(1000)<0.5,-1,1) } rownames(M) <- 1:200 #random yvars set.seed(1234) u <- rnorm(1000) g <- as.vector(crossprod(t(M),u)) h2 <- 0.5 set.seed(234) y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g))) myd <- data.frame(y=y, M)
四種方法的實現:
require(glmnet) # LASSO fit1=glmnet(M,y, family="gaussian", alpha=1) # Ridge fit1=glmnet(M,y, family="gaussian", alpha=0) # PLS require(pls) fit3 <- plsr(y ~ ., ncomp = 198, data = myd, validation = "LOO") # taking 198 components and using leave-one-out cross validation summary(fit3) plot(RMSEP(fit3), legendpos = "topright") # PCR fit4 <- pcr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
數據的最佳描述是:
- , 大多數時候 ;
- 變量 (和)以不同程度相互關聯。
我的問題是哪種策略最適合這種情況?為什麼?
我認為你的問題沒有單一的答案——這取決於許多情況、數據和你想要做什麼。一些修改可以或應該修改以實現目標。但是,以下一般性討論會有所幫助。
在進入更高級的方法之前,讓我們先討論基本模型:最小二乘 (LS) 回歸。完整模型中參數的最小二乘估計不令人滿意的原因有兩個:
- **預測質量:**最小二乘估計通常具有較小的偏差但較高的方差。有時可以通過縮小回歸係數或將某些係數設置為零來提高預測質量。這樣,偏差會增加,但預測的方差會顯著降低,從而導致整體改進的預測。**通過分解均方誤差 (MSE)**可以很容易地看出偏差和方差之間的這種權衡。 較小的 MSE 可以更好地預測新值。
- 可解釋性:如果有許多預測變量可用,那麼確定影響最大的變量並將與預測無關的變量設置為零是有意義的。因此,我們消除了只解釋一些細節的變量,但我們保留了那些允許對響應變量進行主要解釋的變量。
因此,可變選擇方法應運而生。通過變量選擇,僅使用所有輸入變量的一個子集,其餘的從模型中消除。最佳子集回歸找到大小的子集對於每個這給出了最小的 RSS。一種有效的算法是所謂的跳躍和邊界算法,它可以處理多達或者回歸變量。數據集大於輸入變量 搜索所有可能的子集變得不可行。因此,前向逐步選擇和後向逐步選擇很有用。 後向選擇只能在以下情況下使用以獲得良好定義的模型。這些方法的計算效率是有問題的非常高。
在許多情況下,我們有大量輸入(如您的),通常高度相關(如您的情況)。在高度相關的回歸量的情況下,OLS 會導致數值不穩定的參數,即不可靠估計。為了避免這個問題,我們使用使用派生輸入方向的方法。這些方法產生少量的線性組合原始輸入然後將其用作回歸中的輸入。
這些方法的不同在於如何構建線性組合。**主成分回歸 (PCR)**尋找將原始數據轉換為一組稱為主成分的新的不相關變量。
偏最小二乘 (PLS) 回歸- 該技術還構建了一組用於回歸的輸入的線性組合,但與它使用的主成分回歸不同此外對於這個建築。我們假設兩者和居中。而不是計算參數在線性模型中,我們估計參數在所謂的潛變量模式下。我們假設新的係數有維度. PLS 對加權版本進行回歸其中包含不完整或部分信息。由於 PLS 也使用為了確定 PLS 方向,這種方法應該比 PCR 具有更好的預測性能。與 PCR 相比,PLS 正在尋找具有高方差和大相關性的方向.
收縮方法將所有變量保留在模型中並分配不同的(連續的)權重。通過這種方式,我們獲得了具有較小可變性的更平滑的過程。嶺回歸通過對它們的大小施加懲罰來縮小係數。嶺係數最小化懲罰殘差平方和。這裡是控制收縮量的複雜度參數:值越大,收縮量越大。係數向零(以及彼此)收縮。
通過懲罰 RSS,我們試圖避免高度相關的回歸量相互抵消。一個特別大的正係數可以被一個同樣大的負係數抵消. 通過對係數施加大小約束,可以防止這種現象。
可以看出PCR 與嶺回歸非常相似:兩種方法都使用輸入矩陣的主成分. 嶺回歸收縮主成分的係數,收縮取決於相應的特徵值;PCR 將組件完全丟棄到最小特徵值。
lasso是一種類似於 ridge的收縮方法,但在約束中使用的是 L1 範數而不是 L2 範數。L1-範數損失函數也稱為最小絕對偏差(LAD)、**最小絕對誤差(LAE)。它基本上是最小化目標值和估計值之間的絕對差之和。L2 範數損失函數也稱為最小二乘誤差 (LSE)。**它基本上是最小化目標值之間差異的平方和() 和估計值。L1 和 L2 的區別只是 L2 是權重的平方和,而 L1 只是權重的和。 L1-norm 傾向於產生稀疏係數並且具有內置的特徵選擇。L1-norm 沒有解析解,但 L2-norm 有。這允許高效地計算 L2 範數解。L2-norm 有獨特的解決方案,而 L1-norm 沒有。
Lasso和ridge的處罰期限不同。套索解決方案是非線性的,並且使用二次規划算法來計算它們。由於約束的性質,使足夠小會導致一些係數正好. 因此套索進行了一種連續的子集選擇。就像子集選擇中的子集大小,或者嶺回歸中的懲罰一樣,應適當選擇以最小化預期預測誤差的估計。
什麼時候,高方差和過擬合是此設置中的主要問題。因此,簡單、高度正則化的方法通常成為首選方法。
主成分分析是尋找在數據集中表現出較大變化的特徵的線性組合的有效方法。但我們在這裡尋求的是具有高方差和與結果顯著相關性的線性組合。因此,我們希望鼓勵主成分分析來找到與結果監督主成分高度相關的特徵的線性組合(參見***《統計學習要素***》一書中的第 678 頁,算法 18.1 )。
偏最小二乘法降低噪聲特徵的權重,但不會丟棄它們;因此,大量的噪聲特徵會污染預測。閾值 PLS 可以被視為監督主成分的噪聲版本,因此我們可能不期望它在實踐中也能正常工作。受監督的主成分可以產生比閾值 PLS更低的測試誤差。然而,它並不總是產生一個只包含少量特徵的稀疏模型。
另一方面,套索從數據中生成稀疏模型。Ridge 總能表現平平。我認為當人數眾多時套索是不錯的選擇. 有監督的主成分也可以很好地工作。