- 簽證留學(xué) |
- 筆譯 |
- 口譯
- 求職 |
- 日/韓語 |
- 德語
線性回歸的一個(gè)問題是有可能出現(xiàn)欠擬合現(xiàn)象,因?yàn)樗蟮氖蔷哂凶钚【秸`差的無偏估計(jì)。顯而易見,如果模型欠擬合將不能取得最好的預(yù)測(cè)效果。所以有些方法允許在估計(jì)中引入一些偏差,從而降低預(yù)測(cè)的均方誤差。
其中的一個(gè)方法是局部加權(quán)線性回歸(Locally Weighted Linear Regression,LWLR)。在該算法中,我們給待預(yù)測(cè)點(diǎn)附近的每個(gè)點(diǎn)賦予一定的權(quán)重;然后在這個(gè)子集上基于最小均方差來進(jìn)行普通的回歸。與kNN一樣,這種算法每次預(yù)測(cè)均需要事先選取出對(duì)應(yīng)的數(shù)據(jù)子集。
該算法解出回歸系數(shù)w的形式如下:
其中w是一個(gè)矩陣,用來給每個(gè)數(shù)據(jù)點(diǎn)賦予權(quán)重。
LWLR使用“核”(與支持向量機(jī)中的核類似)來對(duì)附近的點(diǎn)賦予更高的權(quán)重。核的類型可以自由選擇,最常用的核就是高斯核,高斯核對(duì)應(yīng)的權(quán)重如下:
這樣就構(gòu)建了一個(gè)只含對(duì)角元素的權(quán)重矩陣w,并且點(diǎn)x與x(i)越近,w(i,i)將會(huì)越大。上述公式包含一個(gè)需要用戶指定的參數(shù)k,它決定了對(duì)附近的點(diǎn)賦予多大的權(quán)重,這也是使用LWLR時(shí)唯一需要考慮的參數(shù),在圖1中可以看到參數(shù)k與權(quán)重的關(guān)系。
圖1 每個(gè)點(diǎn)的權(quán)重圖(假定我們正預(yù)測(cè)的點(diǎn)是x=0.5),最上面的圖是原始數(shù)據(jù)集,第二個(gè)圖顯示了當(dāng)k=0.5時(shí),大部分的數(shù)據(jù)都用于訓(xùn)練回歸模型;而最下面的圖顯示當(dāng)k=0.01時(shí),僅有很少的局部點(diǎn)被用于訓(xùn)練回歸模型
下面看看模型的效果,打開文本編輯器,將程序清單1-1的代碼添加到文件regression.py中。
程序清單1-1局部加權(quán)線性回歸函數(shù)
程序清單1-1中代碼的作用是,給定x空間中的任意一點(diǎn),計(jì)算出對(duì)應(yīng)的預(yù)測(cè)值yHat。函數(shù)1wlr()的開頭與程序清單1-1類似,讀入數(shù)據(jù)并創(chuàng)建所需矩陣,之后創(chuàng)建對(duì)角權(quán)重矩陣weights。權(quán)重矩陣是一個(gè)方陣,階數(shù)等于樣本點(diǎn)個(gè)數(shù)。也就是說,該矩陣為每個(gè)樣本點(diǎn)初始化了一個(gè)權(quán)重。接著,算法將遍歷數(shù)據(jù)集,計(jì)算每個(gè)樣本點(diǎn)對(duì)應(yīng)的權(quán)重值:隨著樣本點(diǎn)與待預(yù)測(cè)點(diǎn)距離的遞增,權(quán)重將以指數(shù)級(jí)衰減。輸入?yún)?shù)k控制衰減的速度。與之前的函數(shù)stand-Regress()一樣,在權(quán)重矩陣計(jì)算完畢后,就可以得到對(duì)回歸系數(shù)ws的一個(gè)估計(jì)。