機器學習實戰——預測數值型數據:迴歸

一、線性迴歸——尋找最佳擬合直線

1、 線性迴歸的特點: 易於理解、計算簡單; 但是對於非線性數據擬合不好;適用於數值型和標稱型數據。
2、 爲了尋找對數據最佳擬合的直線,一般常用的方法就是尋找使誤差最小的w,我們採用平方誤差:
如果對其求導,零導數爲0,則得到:
這就是一般的線性迴歸估計出的w的最優解。注意:此方程只在逆矩陣存在的時候纔有效。
最佳擬合直線將數據視爲直線進行建模,但是如果數據的預測值和特徵之間不是線性關係,那麼將不能取得很好的效果,會出現欠擬合現象

二、 局部加權線性迴歸

1、 線性迴歸模型容易出現欠擬合現象
他求得是具有最小均方根誤差的無偏估計。如果模型欠擬合將不能達到很好的預測效果。在有些方法中允許引入一些偏差,從而降低預測的均方誤差。
2、 Locally Weighted Linear Regression, LWLR局部加權線性迴歸
我們給待預測點附近的每個點都賦予一定的權重,較遠的點就賦予較低的權重,局部擬合預測點附近的數據子集,這樣得到的迴歸係數如下:
其中w是一個矩陣,給每個點賦予權重。
LWLR採用核函數來對附近的點賦予更高的權重,核的類型可以自由選取,常用的是高斯核:
利用高斯核就構建了一個權重矩陣w, 上式中需要用戶只大牛股一個參數k,它決定了對附近的點賦予多大的權值。
上圖是k取不同值的時候,LWLR對於數據的擬合曲線。當k過大的時候,大部分數據都用於訓練迴歸模型,導致其結果與線性迴歸模型很相似,而當k較小的時候,由於實際參與訓練的數據非常少,導致數據過擬合;只有當k取一個合適值的時候,所得到的曲線才能很好地擬合數據。
3、 問題
局部加權線性迴歸增加了計算量:對每個點做預測的時候,都必須使用整個數據集重新計算一個針對預測點的權重係數w,這樣做預測的時候時間複雜度就會非常高。實際上,當k取一個合適值的時候,大多數點的權重都是接近0的,如果能想法避免這些計算就可以減少程序的運行時間。
4、 思考
1)是否可以考慮將整個數據集劃分成區?對於每一個區以內的數據,計算一個w,這樣只要預測點落入這個區,就可以直接用這個區對應的w來計算預測值。
2)以每一個樣本點爲中心計算一個權重係數w,對於預測的數據,選取一個離他最近的訓練數據,用其對應的w作爲權重係數來做預測。

三、 縮減係數來理解數據

以下幾種方法主要是爲了能通過給特徵權重加上約束,來找出數據中的主要特徵。
1、 嶺迴歸Ridge Regression
前面提到,在做線性迴歸計算W的時候要求一個逆矩陣,這個逆矩陣在有的時候是不存在的,而嶺迴歸就是在之前的那個矩陣加上一個λI 從而使矩陣非奇異,這樣就可以直接求逆。
爲了使用嶺迴歸和縮減技術,首先要對特徵進行標準化處理:將所有特徵減去各自的均值,併除以方差。
lamda非常小的時候,係數與普通迴歸一樣,lamda非常大的時候,所有迴歸係數都縮減爲0,可以在兩者之間找到一個合適值。
可以證明,普通最小二乘法迴歸增加如下約束可以得到嶺迴歸一樣的公式:(此處貌似有問題,lambda應該是係數大小和均方誤差的一個相對權重
2、 lasso
貌似應該是均方誤差加上一個係數絕對值之和,lambda應該是兩者之間的相對權重。這樣在lambda足夠小的時候,能夠使一些係數被迫縮減到0,從而可以更好地理解數據。
3、 前向逐步迴歸
前向逐步迴歸是一種貪心算法:每一步都儘可能減少誤差,一開始所有權重都爲1,然後每一步所做的決策就是對某個權重增加會減少一個很小的值(分別試探增加和減少兩種情況,看哪種情況最後的誤差更小就取哪種),經過多次迭代以後,權重就會收斂到一個合適的值。
算法的僞碼如下:
嶺迴歸是縮減法的一種,對於迴歸係數的大小進行了限制。lasso也是縮減法的一種,不過相對嶺迴歸更難以求解。縮減法也可以看做是對一個模型增加偏差的同時減少方差。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章