做網(wǎng)站的上市公司海外發(fā)布新聞
? ? ? ? 在進(jìn)行回歸任務(wù)時間,可以能會遇到特征數(shù)量多于觀測數(shù)量或某些特征變量之間相關(guān)性較高(幾乎線性相關(guān))時,標(biāo)準(zhǔn)的線性回歸模型的系數(shù)估計可能非常不精確,可以理解成獨(dú)立方程個數(shù)小于未知數(shù)個數(shù)此時方程有無窮多解。
????????例如:1個方程,2個未知數(shù)時,此時方程數(shù)量小于未知數(shù)個數(shù),有無窮多解。
序號 | 方程組的解 |
解1 | |
解2 | |
... | |
解m | |
獨(dú)立方程數(shù)量小于未知數(shù)個數(shù),方程組有無窮多解 |
一、嶺回歸產(chǎn)生的背景
????????嶺回歸模型的提出為了解決什么問題呢?我們用一個比喻加一個例子來說明:
????????想象一下,你在一家咖啡館里試圖通過窗戶觀察外面行人手中的飲料類型來進(jìn)行統(tǒng)計。但是,由于窗戶上貼滿了復(fù)雜的花紋,這些花紋就像是數(shù)據(jù)中的噪音和復(fù)雜關(guān)系,讓你很難清晰地分辨每種飲料。這時候,如果你戴上一副特制的眼鏡——這副眼鏡能減弱花紋干擾,讓你更專注于主要的區(qū)別特征,比如飲料的顏色或形狀,這樣就能更準(zhǔn)確地統(tǒng)計了。
????????在機(jī)器學(xué)習(xí)中,嶺回歸就是這樣一副“眼鏡”。它是一種改進(jìn)的線性回歸方法,專門用來處理那些因為特征之間存在很強(qiáng)的相關(guān)性(我們稱之為多重共線性)而變得棘手的問題。沒有這副“眼鏡”,普通的線性回歸(就像直接用眼觀察)可能會被數(shù)據(jù)中的復(fù)雜關(guān)系迷惑,導(dǎo)致預(yù)測效果很差,甚至系數(shù)估計出錯。
二、嶺回歸的思想和公式
? ? ? ? 嶺回歸是如何工作的呢?它通過在原有的誤差最小化目標(biāo)基礎(chǔ)上,加入了一個額外的懲罰項。這個懲罰項是各個特征權(quán)重(也就是回歸系數(shù))的平方和乘以一個正的常數(shù)(我們稱之為正則化參數(shù)λ)。
在標(biāo)準(zhǔn)的多元線性回歸中,模型參數(shù)通過最小化殘差平方和(RSS)來估計:
其中,是樣本數(shù)量,
是因變量的觀測值,
是自變量的觀測值,
是回歸系數(shù)。
然而,在某些情況下,特別是當(dāng)特征數(shù)量接近或超過樣本數(shù)量時,線性回歸可能導(dǎo)致過擬合和不穩(wěn)定的估計值。嶺回歸為了防止這些問題,將一個額外的正則項(也稱為懲罰項)加到RSS上:
其中,是一個正的調(diào)節(jié)參數(shù)(嶺參數(shù)),起到調(diào)節(jié)系數(shù)向0收縮的力度。由于正則項的存在,嶺回歸傾向于將系數(shù)估計值向0壓縮,這意味著盡管它們可能永遠(yuǎn)不會等于0,但可以控制過擬合現(xiàn)象,提高模型的泛化能力。
【注】選擇一個合適的值,因為它決定了系數(shù)壓縮的程度。
的值越大,約束越強(qiáng),回歸系數(shù)會越小。通常
是通過交叉驗證來選擇的。
三、為什么叫嶺回歸?
????????嶺回歸之所以被稱為“嶺回歸”(Ridge Regression),源自它在問題求解中的幾何性質(zhì)。這個名字可以歸因于它在求解參數(shù)時,通過正則化項引入的約束導(dǎo)致解集呈現(xiàn)出“嶺”的形狀。
????????在標(biāo)準(zhǔn)線性回歸中,模型的目標(biāo)是最小化誤差平方和,這在參數(shù)空間中可以視為尋找一個能使誤差平方和函數(shù)最低的參數(shù)點。如果存在共線性,這個誤差平方和的底部(代表最佳解的區(qū)域)會變得非常扁平,導(dǎo)致許多可能的解。
????????當(dāng)引入嶺回歸的L2正則化時,即在目標(biāo)函數(shù)中增加所有系數(shù)的平方和乘以嶺參數(shù)λ,這就相當(dāng)于在參數(shù)空間中增加了一個圓形的約束。這個圓形約束使得參數(shù)不再在平坦的區(qū)域自由移動,而是被限制在一個“嶺”上,即限制在較小范圍的圓形區(qū)域內(nèi)尋找最佳解。因此,“嶺”這個名稱形象地描述了正則化項如何影響系數(shù)的求解過程,強(qiáng)制系數(shù)向零收縮,同時保護(hù)模型免于過擬合。
????????關(guān)于嶺回歸的代碼演示:
學(xué)習(xí)嶺回歸https://gitee.com/wx114/linear-ridge-lasso-regression.git?