(整理自AndrewNG的課件,轉載請注明。整理者:華科小濤@http://www.cnblogs.com/hust-ghtao/)
前面幾篇博客主要介紹了線性回歸的學習算法,那么它有什么不足的地方么?怎么改進呢?這就是本篇的主題。
為了引出問題,先看一個關於線性的例子,選取不同的特征會得到不同結果。考慮給定一組數據,我們要進行線性回歸,得到
和
之間的關系。提出了三種不同的特征的選擇方式,結果如下:
左圖,選取一個特征,假設為
,我們可以看到數據不能很好的和數據相吻合。
中圖,我們選取了兩個特征和
,假設為
,我們可以看到擬合效果變好了。那是不是特征越多越好呢?非也。
右圖,一共6個數據點,所以用5階多項式就可以做到所有的數據點都在曲線上了,假設為。雖然將數據點擬合的很perfect,但是我們不認為這是一個很好的假設,因為它不能做到很好的預測。
我們稱左圖的擬合效果為underfitting(欠擬合),數據中的明顯的結構關系沒有被模型所捕獲。稱右圖的擬合效果為overfitting(過擬合),這種假設只是用於特定的數據,預測效果不好。中圖的效果最好,那我們應該如何選擇特征,使得假設的效果最好?有人說了,那就挨個試唄,先選擇1個特征,看效果,2個特征,看效果。。。。我們可不願意做這種事情。
就像上面討論的那樣,特征的選擇對學習算法的性能至關重要,那有沒有自動選擇特征集的算法,或者是讓特征的選擇對結果影響不那么大?這就是我們要介紹的Locally weight-
ed linear regression (LWR),這個算法對特征集要求不是非常的嚴格。
在最初的線性回歸算法中,對於輸入變量,我們要預測
,我們通常要做的:
相對而言,對於局部加權線性回歸,我們要做:
,這里多了一個權值項
。直觀上,
的值越大,它所對應的
對結果的影響越大,反之越小。
我們選擇的形式如下:
,顯然,當
足夠小時,
近似為1;當
足夠大時,
近似為0;也就是說離
很近的樣本會得到接近為1的權值,很遠的樣本權值近乎為0。所以我們無們可以這樣理解:在
局部構成了線性回歸算法,對於
的學習,主要依賴於
附近的點。如下圖:
,圖中紅色直線使用線性回歸做的結果,黑色直線使用LWR做的結果,可以看到局部加權回歸的效果較好。
在讓我們來看一下形式的的形式,和高斯函數形式很像,但和那一點關系都沒有哦!
是波長參數,控制了權值隨距離的下降速率。
總結一下:LWR算法是我們遇到的第一個non-parametric(非參數)學習算法,而線性回歸則是我們遇到的以一個parametric(參數)學習算法。所謂參數學習算法它有固定的明確的參數,參數一旦確定,就不會改變了,我們不需要在保留訓練集中的訓練樣本。而非參數學習算法,每進行一次預測,就需要重新學習一組
,
是變化的,所以需要一直保留訓練樣本。也就是說,當訓練集的容量較大時,非參數學習算法需要占用更多的存儲空間,計算速度也較慢。有得必有失,效果好當然要犧牲一些其他的東西。人不一定什么都擅長,只要有自己的特點就可以了!!