机器学习--逐步回归算法,线性回归的特征选择算法
逐步回歸算法
監(jiān)督式學(xué)習(xí)算法的任務(wù)是擬合多個(gè)特征與標(biāo)簽的關(guān)系,在實(shí)際應(yīng)用中,所收集的數(shù)據(jù)中,所有的特征可能并不是都與標(biāo)簽有關(guān)聯(lián)。模型中如果包含與標(biāo)簽無(wú)關(guān)聯(lián)的特征,不僅會(huì)增加數(shù)據(jù)規(guī)模和計(jì)算量,還會(huì)影響模型對(duì)標(biāo)簽的預(yù)測(cè)效果。因此特征選擇是監(jiān)督式學(xué)習(xí)算法的一個(gè)重要組成部分。
逐步回歸是一個(gè)貪心算法。它的運(yùn)行效率較高,但也因?yàn)槠涫秦澬乃惴?#xff0c;有時(shí)會(huì)做出次優(yōu)的最優(yōu)選擇。
向前逐步回歸算法
向前逐步回歸算法是最簡(jiǎn)單的一種特征選擇方法,大概做法為:在向前逐步回歸算法的初始階段,先選定第一個(gè)特征,然后重復(fù)執(zhí)行以下幾個(gè)步驟----首先計(jì)算只使用當(dāng)前選定的特征的線性回歸的均方誤差,然后逐一引入尚未選取的特征,選擇能最大程度降低均方誤差的一個(gè)特征,判斷該特征是否在統(tǒng)計(jì)意義上顯著地降低均方誤差,如果是,就將該特征加入模型。重復(fù)循環(huán)上述過(guò)程,直至沒(méi)有能夠被繼續(xù)選中的特征為止。
判斷選擇的特征是否在統(tǒng)計(jì)意義上顯著降低均方誤差
在向前逐步回歸算法中,采用F檢驗(yàn)來(lái)判斷均方誤差的減小是否具有統(tǒng)計(jì)顯著性。
給定兩個(gè)均方誤差mse1 和mse2,設(shè)mse1>mse2。用F檢驗(yàn)計(jì)算mse1>mse2的置信度p。
置信度p是在重新采樣訓(xùn)練數(shù)據(jù)并對(duì)其重復(fù)向前逐步選擇算法時(shí)再次出現(xiàn)mse1>mse2的概率。
如果置信度p>95%,則認(rèn)為mse1>mse2這一結(jié)論具有統(tǒng)計(jì)顯著性。
向前逐步回歸算法的應(yīng)用
# 應(yīng)用向前逐步回歸算法進(jìn)行特征選擇import numpy as np from sklearn.preprocessing import PolynomialFeatures from machine_learning_lib_stepwise_regression import StepwiseRegression import matplotlib.pyplot as plt from machine_learning_lib_stepwise_regressiontwo import Stepwiseregression as Step# 構(gòu)造數(shù)據(jù) def generate_sample(m):X = 2 * (np.random.rand(m,1)-0.5)y = X + np.random.normal(0,0.3,(m,1))return X,ynp.random.seed(100) # 生成10個(gè)點(diǎn) X,y = generate_sample(10) plt.scatter(X,y) poly = PolynomialFeatures(degree=10) X_poly = poly.fit_transform(X) model = StepwiseRegression() model.forward_selection(X_poly,y) y_pred = X_poly[:,[0,1]].dot(model.w) plt.plot(X,y_pred) print(model.A,model.w) plt.show()為了直觀的觀察特征選擇的效果,訓(xùn)練數(shù)據(jù)是通過(guò)隨機(jī)函數(shù)產(chǎn)生的,并對(duì)其多項(xiàng)式化,產(chǎn)生11個(gè)特征,標(biāo)簽以y=x,賦予一定程度的浮動(dòng)人為產(chǎn)生。
該訓(xùn)練數(shù)據(jù)如果不進(jìn)行特征的選擇,直接對(duì)全部特征進(jìn)行線性回歸,將產(chǎn)生過(guò)度擬合的線性回歸模型。
未使用特征選擇:
使用特征選擇:
總結(jié):
特征選擇能有效的剔除與標(biāo)簽無(wú)關(guān)聯(lián)的特征,避免無(wú)關(guān)特征對(duì)模型的影響,導(dǎo)致過(guò)度的擬合,但向前逐步回歸法是一個(gè)貪心算法,在算法的開(kāi)始,選擇了第一個(gè)特征為起始,但第一個(gè)特征與標(biāo)簽的關(guān)系并未進(jìn)行判斷,若第一個(gè)特征與標(biāo)簽無(wú)關(guān)聯(lián),則將會(huì)產(chǎn)生次優(yōu)解。
思考:
向后逐步回歸算法可以有效解決向前逐步回歸算法的影響,向后逐步回歸在起始的時(shí)候選取全部特征,之后逐一 剔除不能有效降低均方誤差的特征。但是向后逐步回歸算法也是一個(gè)貪心算法,依然可能產(chǎn)生次優(yōu)解,并且當(dāng)前選定的特征已經(jīng)過(guò)度擬合,從而具有較小的均方誤差,向后逐步回歸算法將無(wú)法繼續(xù)從模型中剔除與標(biāo)簽無(wú)關(guān)的特征。
處理方案:
向前逐步回歸算法與向后逐步回歸算法的合并使用。
向前逐步回歸算法起始選擇隨機(jī),多次運(yùn)行,選擇最優(yōu)情況。
總結(jié)
以上是生活随笔為你收集整理的机器学习--逐步回归算法,线性回归的特征选择算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 仙元天下试玩感受
- 下一篇: 3D打印设计软件 FreeCAD 入门