第8章 預測數(shù)值型數(shù)據(jù):回歸

回歸是監(jiān)督方法的延續(xù)寸宵,而回歸與分類不同,在于其目標變量是連續(xù)數(shù)值元咙。

8.1 用線性回歸找到最佳擬合直線

回歸的目的是預測數(shù)值型的目標值梯影,最直接的方法是依據(jù)輸入寫出一個目標值的計算公式。庶香,這就是所謂的回歸方程甲棍。求回歸系數(shù)的過程就是回歸。

線性回歸就是將輸入項分別乘以一些常量赶掖,再將結果加起來輸出感猛。

經(jīng)過一系列數(shù)學變化,求系數(shù)向量w最終可以同對X和Y的矩陣計算得到奢赂。X是輸入數(shù)據(jù)矩陣陪白,Y是分類標簽向量。通過調用NumPy庫里(哇靠膳灶!庫里T凼俊)的矩陣方法,僅使用幾行代碼就能實現(xiàn)功能,這種方法又叫做“普通最小二乘法”序厉。

對文件ex0.txt進行操作锐膜,得到如下圖:


ex0.txt的數(shù)據(jù)集和它的最佳擬合直線

為了計算預測值yHat序列和真實值y序列的匹配程度,我們可以計算這兩個序列的相關系數(shù)脂矫。NumPy庫提供了相關系數(shù)的計算方法枣耀。通過一個命令就能計算出來。


預測值與真實值相關系數(shù)是0.98

該矩陣包含所有兩兩組合相關系數(shù)庭再,對角線數(shù)據(jù)是1.0捞奕,即自己跟自己完美匹配。

8.2 局部加權線性回歸

線性回歸有一個問題:欠擬合拄轻。因為它求的是具有最小均方誤差的無偏估計颅围。所以有些方法就允許在估計中引入一些偏差,從而降低預測的均方誤差恨搓。

其中一個方法就是局部加權線性回歸院促。原理:給每個待預測點附近的每一個點賦予一定的權重,然后再基于最小均方差來進行普通的回歸斧抱。它會給每個待預測點附近的點給以對應的權重常拓,這種權重的分配是:隨著樣本點與待預測點距離的遞增,權重以指數(shù)級衰減辉浦。權重計算依據(jù)高斯核公式弄抬。得到只含對角元素的權重矩陣W就能將權重矩陣代入回歸系數(shù)計算公式來計算回歸系數(shù)。

在計算高斯核的公式中宪郊,有一個參數(shù)k是我們可以設置的掂恕,它決定了對附近的點賦予多大的權重。下面是k取不同值時的結果弛槐。

k=1.0


k=0.01



k=0.003

可以看到懊亡,1圖的權重很大,最佳擬合直線跟上一節(jié)線性回歸一致乎串,說明欠擬合店枣。2圖得到了很好的效果,揭示了數(shù)據(jù)的潛在規(guī)律叹誉。3圖呢艰争,過擬合了,納入了太多了噪聲點桂对,使擬合的直線和數(shù)據(jù)點過于貼切甩卓。

8.3 示例:預測鮑魚的年齡

鮑魚年齡是根據(jù)鮑魚殼的層數(shù)推算出來的(漲姿勢 。蕉斜。逾柿。)


k越小缀棍,預測誤差就越小

可以看到,使用較小的核可以得到較低的誤差机错。但是使用最小的核會導致過擬合爬范,對新數(shù)據(jù)不一定能達到最好的預測效果。

所以弱匪,看看它們在新數(shù)據(jù)上的表現(xiàn):


最小的核在測試數(shù)據(jù)上卻有最大的誤差

接下來青瀑,再來和簡單的線性回歸作比較:


通過線性回歸得到的預測誤差

簡單線性回歸達到了與局部加權線性回歸類似的效果。

這也表明萧诫,必須在未知數(shù)據(jù)上比較結果才能選取最佳模型斥难。而局部加權線性回歸的問題在于:為了作出預測,需要保存所有訓練數(shù)據(jù)帘饶。下面介紹提高預測精度的方法哑诊。

8.4 縮減系數(shù)來“理解”數(shù)據(jù)

如果特征比樣本點還多,那么輸入數(shù)據(jù)矩陣就不是滿秩矩陣了及刻,也就無法計算逆矩陣镀裤,無法求得回歸系數(shù)。為解決這個問題缴饭,本寶寶提出了三個辦法:嶺回歸暑劝,lasso法,前向逐步回歸颗搂。

8.4.1 嶺回歸

嶺回歸最先用來處理特征數(shù)多于樣本數(shù)的情況铃岔,現(xiàn)在也用于在估計中加入偏差,從而得到更好的估計峭火。引入lambda限制所有w之和,通過引入懲罰項智嚷,能夠減少不重要的參數(shù)卖丸,這個技術就叫做縮減≌档溃縮減去掉了不重要的參數(shù)稍浆,所以能更好地理解數(shù)據(jù)。

PS:代碼里出現(xiàn)了幾個“有趣”的操作:1猜嘱、一個n*1矩陣可以減去一個1*1的矩陣衅枫,并且這個結果是列矩陣所有元素都減去那個唯一的元素。2朗伶、一個n*m的矩陣A可以減去或者除以一個1*m的矩陣弦撩,結果是n*m矩陣每行都減去或者除以1*m矩陣的對應元素。

我表示很服论皆,不禁感嘆:python大法好啊~各種神操作益楼,這要是java猾漫。。感凤。

下圖是30個不同lambda所對應是回歸系數(shù):


回歸系數(shù)與log(lambda)的關系

注:

書上:圖中最左邊悯周,lambda最小時,可以得到所有系數(shù)的原始值(與線性回歸一致)陪竿,到最右邊禽翼,系數(shù)全部縮減成0。中間部分的某值可以取得最好的預測效果族跛。為了定量地找到最佳參數(shù)值闰挡,還需要交叉驗證。此外庸蔼,要判斷哪些變量對結果預測最具有影響力解总,在圖中觀察它們對應的系數(shù)大小即可。

我:圖中八條線段姐仅,其實代表天龍八部八個特征花枫,八個特征的回歸系數(shù)在不同lambda下的變化。畫圖用的是回歸系數(shù)的數(shù)組掏膏,數(shù)組每行是用不同lambda算出的回歸系數(shù)劳翰,一共30行8列。也就意味著同一行數(shù)據(jù)是同一個lambda下8個不同特征的值馒疹,代表圖某一豎線經(jīng)過的8個點佳簸。同一列數(shù)據(jù)是一個特征在30個不同lambda下的變化,也就是圖上8條線段之一颖变。lambda不斷變大生均,最終所有回歸系數(shù)都縮減到0。而要想知道那個特征對預測結果的影響最大腥刹,可以觀察圖中回歸系數(shù)的大小马胧,系數(shù)越大,其對應的特征對預測結果影響越大衔峰。(疑惑:這就是所謂的“理解數(shù)據(jù)”佩脊??這到底怎么體現(xiàn)對數(shù)據(jù)的理解的垫卤?書中說縮減可以去掉不重要的參數(shù)以理解數(shù)據(jù)威彰。這個參數(shù)是對預測結果影響小的特征呢還是某條數(shù)據(jù)呢?暫且認為是特征吧~)

8.4.2 lasso

尷尬~公式打不上來~

看書吧穴肘,區(qū)別啥的都在書上歇盼,不敲了~

但是,這邊是有疑惑的评抚,嶺回歸中是lambda非常大時旺遮,回歸系數(shù)縮減為0赵讯,這個根據(jù)求回歸系數(shù)的矩陣公式大概能明白為什么。而lasso的約束條件表達了當lambda足夠小時耿眉,回歸系數(shù)縮減為0边翼,這個看約束條件也能明白∶簦可是為什么兩個趨勢相反呢组底??筐骇?奇了怪了债鸡,難道都用lambda但是其實是兩個意思相反的參數(shù)值?黑人問號臉铛纬。厌均。。

8.4.3 前向逐步回歸

能取得和lasso差不多效果告唆,但更簡單棺弊,而且還是個貪心算法(從代碼可以體會),代碼主要就是每次只改某一個特征的一個值擒悬,加或減一個很小的步長然后算和真實分類的誤差模她,誤差變小就將回歸系數(shù)記錄下來,多次迭代懂牧,不斷優(yōu)化侈净。

下圖是使用0.005的步長經(jīng)過1000次迭代的結果:


鮑魚數(shù)據(jù)集上執(zhí)行逐步線性回歸法得到的系數(shù)與迭代次數(shù)的關系

這個算法的優(yōu)點在于幫助人們理解現(xiàn)有模型并改進。這個理解就是:你可以看到哪個特征對結果影響最大或最小僧凤,這樣人們就可以及時停止對不重要特征信息的采集畜侦。比如圖中紅線代表的特征在0處徘徊,那就可以減少對它的信息采集躯保,減少工作量旋膳。

此外,我們應用縮減方法(嶺回歸或逐步線性回歸)時吻氧,模型中就增加了偏差,與此同時也減少了方差咏连。下一節(jié)就揭示它們的關系并分析它們對結果的影響盯孙。

PS:又發(fā)現(xiàn)一個神奇的操作,書P151將逐步線性回歸的預測結果與最小二乘法的預測結果進行比較時祟滴,調用普通線性回歸的函數(shù)來計算回歸系數(shù)振惰,這也沒啥,然而這個實參是居然是矩陣垄懂,形參居然是數(shù)組骑晶,也就是說可以直接把矩陣賦給了數(shù)組痛垛,驚呆了我的小伙伴,這要是在java里桶蛔。匙头。。

8.5? 權衡偏差和方差

本不能理解這兩個為什么會有相關性仔雷,看到網(wǎng)上一些博客才恍然大悟蹂析。原來志華的西瓜書里已經(jīng)介紹過,當時看時沒有體會碟婆,此時代入一個具體的算法再來比較這兩者的區(qū)別和聯(lián)系才明白其中真正的含義电抚。除西瓜書P44頁外,再給出一些資料:

機器學習中的偏差和方差


線性回歸中偏差竖共,方差權衡


簡單總結:

(1)西瓜書總結

偏差度量了學習算法的期望預測與真實結果的偏離程度蝙叛,即刻畫了學習算法本身的擬合能力。

方差度量了同樣大小的訓練集的變動所產(chǎn)生的學習性能的變化公给,即刻畫了數(shù)據(jù)擾動所造成的影響借帘。

噪聲表達了當前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度妓布。

而泛化性能是由學習算法的能力姻蚓,數(shù)據(jù)的充分性以及學習任務本身的難度共同決定的。給定一個學習任務匣沼,想要獲得較好的泛化性能狰挡,則需要偏差較小,方差較小释涛。偏差小意味著能夠充分擬合數(shù)據(jù)加叁,方差小意味著數(shù)據(jù)擾動產(chǎn)生的影響小。

一般而言唇撬,偏差與方差有沖突它匕,即偏差-方差窘境:給定一個學習任務,訓練程度不足時窖认,學習器擬合能力不強豫柬,訓練數(shù)據(jù)的擾動不足以使學習器產(chǎn)生明顯變化,此時偏差主導了泛化錯誤率扑浸。而隨著訓練強度加大烧给,學習器擬合能力不斷增強,訓練數(shù)據(jù)發(fā)生的擾動就能漸漸被學習器學到喝噪,此時方差主導了泛化錯誤率础嫡。在訓練程度充足之后,學習器擬合能力極強,訓練數(shù)據(jù)的輕微擾動都會使學習器發(fā)生顯著變化榴鼎,當訓練數(shù)據(jù)自身的伯诬、非全局性的特性被學習器學到,那就是過擬合了巫财。

(2)機器學習實戰(zhàn)總結

方差和偏差概念強調:方差是模型之間的差異盗似,比如說,從鮑魚數(shù)據(jù)集中隨機取100個數(shù)據(jù)用線性模型擬合得到了一組回歸系數(shù)W1翁涤,再隨機取100個數(shù)據(jù)用線性模型擬合得到了一組回歸系數(shù)W2桥言。模型方差的大小就是W1和W2之間的差異大小。而偏差是模型產(chǎn)生的預測值與真實值的差異大小葵礼。

前面提到降低核的大小号阿,就是在局部加權線性回歸中,k越來越小時鸳粉,就是提高模型復雜度扔涧,這樣學習器擬合程度漸漸提高,導致方差變大届谈,偏差變小枯夜。降低核在下圖里就是黑線從左到右的過程。

而前面提到的縮減法相反艰山,因為它將一些系數(shù)縮減成很小的值或是0湖雹,就減少了模型復雜度,增大了模型偏差曙搬。通過縮減可以去掉某些不重要的特征摔吏,使模型容易理解,同時降低預測誤差纵装≌鹘玻縮減法在下圖里就是黑線從右到左的過程。圖中左側是參數(shù)縮減過于嚴厲橡娄,右側是無縮減诗箍。

(3)丫的,還想對上面兩個博客來一個總結挽唉,仔細看看也沒啥好寫滤祖,知識點差不多寫完了。so~that? is? all~


偏差瓶籽,方差匠童,預測誤差

8.6? 示例:預測樂高玩具套裝價格

完犢子。棘劣。俏让。

要訪問Google API控制臺返回產(chǎn)品信息然后做操作楞遏。茬暇。首昔。

老子在中國啊。糙俗。勒奇。萬里長城啊。巧骚。赊颠。

代碼簡記:交叉驗證測試嶺回歸,驗證10次劈彪,每次隨機選90%作訓練集竣蹦,10%作測試集,用訓練得來的回歸系數(shù)對測試集算預測誤差沧奴,因為是嶺回歸痘括,所以可以得到30個不同lambda下預測誤差。再求30個不同lambda下10次驗證的均值滔吠,找到最小誤差對應的lambda纲菌,也就是說這個lambda縮減效果最好,然后找到這個lambda對應的回歸系數(shù)疮绷,這就是要求的回歸系數(shù)了翰舌。最后將數(shù)據(jù)還原呈現(xiàn)出來即可。(好吧冬骚,我承認說的很亂椅贱,大概流程我能明白就行,這也不太好說啊~)

?8.7? 本章小結

在回歸方程里唉韭,求得特征對應的最佳回歸系數(shù)的方法是最小化誤差的平方和夜涕。

輸入數(shù)據(jù)集x,如果(x的轉置)*x的逆存在属愤,那么回歸法都可以用女器,這就是線性回歸。

因為線性回歸欠擬合住诸,所以使用“核”來對待預測點附近的點賦予更高的權重驾胆,這就是局部加權線性回歸。它在估計中引入了偏差贱呐,從而降低了預測的均方誤差丧诺。核越小,擬合越好奄薇,核太小會導致過擬合驳阎,偏差很小方差很大。

當數(shù)據(jù)樣本數(shù)少于特征數(shù)時,(x的轉置)*x的逆無法計算呵晚,或者雖然數(shù)據(jù)樣本數(shù)多于特征數(shù)蜘腌,但是特征之間高度相關,這時就要用到嶺回歸算法饵隙,它是縮減法的一種撮珠,對回歸系數(shù)的大小施加了限制,

另一種縮減法是lasso金矛,但它難以求解芯急,我們就用計算簡便的逐步線性回歸方法來求得近似結果∈豢。縮減法可以看做是對一個模型增加偏差的同時減少方差娶耍。

PS:這是我記筆記最多的一章。饼酿。伺绽。。我也是醉了嗜湃,越看越多越寫越多~感悟不少奈应,很充實,但是~真的好多啊~除了這些文字代碼也注釋了很多~~彻号看常新吧~東西多了容易忘哦~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末杖挣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刚陡,更是在濱河造成了極大的恐慌惩妇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筐乳,死亡現(xiàn)場離奇詭異歌殃,居然都是意外死亡,警方通過查閱死者的電腦和手機蝙云,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門氓皱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勃刨,你說我怎么就攤上這事波材。” “怎么了身隐?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵廷区,是天一觀的道長。 經(jīng)常有香客問我贾铝,道長隙轻,這世上最難降的妖魔是什么埠帕? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮玖绿,結果婚禮上搞监,老公的妹妹穿的比我還像新娘。我一直安慰自己镰矿,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布俘种。 她就那樣靜靜地躺著秤标,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宙刘。 梳的紋絲不亂的頭發(fā)上苍姜,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音悬包,去河邊找鬼衙猪。 笑死,一個胖子當著我的面吹牛布近,可吹牛的內容都是我干的垫释。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼撑瞧,長吁一口氣:“原來是場噩夢啊……” “哼棵譬!你這毒婦竟也來了?” 一聲冷哼從身側響起预伺,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤订咸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酬诀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脏嚷,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年瞒御,在試婚紗的時候發(fā)現(xiàn)自己被綠了父叙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肴裙,死狀恐怖高每,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情践宴,我是刑警寧澤鲸匿,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站阻肩,受9級特大地震影響带欢,放射性物質發(fā)生泄漏运授。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一乔煞、第九天 我趴在偏房一處隱蔽的房頂上張望吁朦。 院中可真熱鬧,春花似錦渡贾、人聲如沸逗宜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纺讲。三九已至,卻和暖如春囤屹,著一層夾襖步出監(jiān)牢的瞬間熬甚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工肋坚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乡括,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓智厌,卻偏偏與公主長得像诲泌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铣鹏,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容