1. 程式人生 > >機器學習筆記----最小二乘法,區域性加權,嶺迴歸講解

機器學習筆記----最小二乘法,區域性加權,嶺迴歸講解

https://www.cnblogs.com/xiaohuahua108/p/5956254.html

前情提要:關於logistic regression,其實本來這章我是不想說的,但是剛看到嶺迴歸了,我感覺還是有必要來說一下。

一:最小二乘法

最小二乘法的基本思想:基於均方誤差最小化來進行模型求解的方法。線上性迴歸中,最小二乘法就是試圖找到一條直線,使所有樣本到直線上的歐氏距離之和最小。就是說讓你現在追一個女生,你希望女生喜歡你是f(xi),而女生喜歡你的程度是yi,你是不是想讓你們這兩個值相差最少?我們的最小二乘法也是這個原理,但是他引入方差的概念,方差的幾何意義對應著歐氏距離。其實大同小異,公式如下:

最小二乘法總公式

補充說下維基百科的一個小例子:

某次實驗得到了四個資料點(x,y),分別為(1,6),(2,5),(3,7),(4,10)我們希望找出一條和這四個點最匹配的直線:y=B1+B2X, 即找出在某種“最佳情況”下能夠大致符合如下超定線性方程組的B1和B2

普通公式

最小二乘法採用的手段是儘量使得等號兩邊的方差最小,也就是找出這個函式的最小值:

普通公式2

最小值可以分別求B1 和B2的偏導數,然後使它們等於零得到:

普通公式3

如此就得到了一個只有兩個未知數的方程組,很容易就可以解出:

普通公式4

也就是說直線y=3.5+1.4x7yy是最佳的。

好,現在我們接著上面講,我們的目標是得到:

目標公式 ,且f(xi)與yi相差越小越好。

為了方面,我們把b和我w寫在一起,構成新的w=(w,b),這個w是一個向量,然後x寫成一個矩陣,形如:

矩陣X

 

再把,樣本原先的標記搞成向量模式:QQ截圖20161012200831 ,那麼可得出:

QQ截圖20161012202139

可以改編成:

證明

下面我們對w求導。

好像很多人對這種求導公式很煩。我來補充點公式吧。

f(w)

導數

WTX

X

XTW

X

WTX

2W

WT

CW

2CW

C是矩陣

 

求導過程如下:

最小二乘法推導過程

結果:結果

 

當XTX為滿秩矩陣的時候,或者正定矩陣,可得:

最後w

所以線性迴歸模型為:

f(x)=xTW

下面給出,最小二乘法迴歸的程式碼:

執行效果圖:

最小二乘法的實現效果圖

如果單純的任何情況都用這種線性劃分,很容易出現欠擬合現象,什麼是欠擬合現象呢,如圖:

欠擬合現象

由上圖片可知:最後的幾個點,沒有擬合在直線上,這就叫做欠擬合現象。那如何解決呢。

二 區域性加權線性迴歸

思路:如果要想解決這個問題,是不是這樣就可以了,如下圖:

解決欠擬合現象1

既然方向已經明確,那麼來解決問題。

要想解決上述問題,我們可不可以給每個點加一個權重,讓這些權重去影響本來的直線,改變他們的方向。該演算法給出的迴歸係數如下:

區域性加權線性迴歸

,W是一個矩陣,是為了給每個點賦予權重。

那估計小夥伴會問,這個權重還能讓我們自己憑空yy?我可不想yy了。哈哈。

好,那麼我們就引入核的概念,說白了,就是對附近的點讓他有更高的權重,這裡的核,我們在以後接著svm慢慢和大家說。

最常用的核如下:

2.1高斯核

高斯核權重:高斯核

高斯核分佈如下:

高斯核分佈

2.2 其他核函式,暫時就不贅述了,內容太多,等我另外開一章節再講。

2.3用高斯核對w進行賦值,

程式碼實現如下:

2.4效果圖:

解決欠擬合2

感覺效果還行。注意那個K引數,不容易選擇,以我現在的水平,我都是試著給的,等我水平上升了,我在來和大家說,哈哈。互相進步,互相傷害啊。

三 嶺迴歸

回去看,是不是我給的程式碼中總有這樣一段:

錯誤

這句話用資料來說,就是特徵比樣本還多,所以如果出現這種情況的話,前面的方法,是不是總是print this matrix is singular,cannot do inverse?這是因為X不是滿秩矩陣了,不是滿秩矩陣不可以求逆,你懂得。

那我們如何解決呢,既然不是,那我們就讓他是不就完了嗎,現在我們給XTX加一個矩陣,然後在對這個新的矩陣求逆,不就完了嗎。迴歸係數公式如下:

嶺迴歸

嶺迴歸是一種專用於共線性資料分析的有偏估計迴歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分資訊、降低精度為代價獲得迴歸係數更為符合實際、更可靠的迴歸方法,對病態資料的擬合要強於最小二乘法。

本文總結:講到了最小二乘法,區域性加權迴歸,嶺迴歸這些方法的優缺點,及推導。其實機器學習就這樣,給出什麼方法,然後為什麼用這個方法,這就是演算法+優化的過程。送給大家一句話,沒有最好的演算法,只有適合的演算法,要讓資料去選擇演算法。共勉。

https://www.cnblogs.com/xiaohuahua108/p/5956254.html

前情提要:關於logistic regression,其實本來這章我是不想說的,但是剛看到嶺迴歸了,我感覺還是有必要來說一下。

一:最小二乘法

最小二乘法的基本思想:基於均方誤差最小化來進行模型求解的方法。線上性迴歸中,最小二乘法就是試圖找到一條直線,使所有樣本到直線上的歐氏距離之和最小。就是說讓你現在追一個女生,你希望女生喜歡你是f(xi),而女生喜歡你的程度是yi,你是不是想讓你們這兩個值相差最少?我們的最小二乘法也是這個原理,但是他引入方差的概念,方差的幾何意義對應著歐氏距離。其實大同小異,公式如下:

最小二乘法總公式

補充說下維基百科的一個小例子:

某次實驗得到了四個資料點(x,y),分別為(1,6),(2,5),(3,7),(4,10)我們希望找出一條和這四個點最匹配的直線:y=B1+B2X, 即找出在某種“最佳情況”下能夠大致符合如下超定線性方程組的B1和B2

普通公式

最小二乘法採用的手段是儘量使得等號兩邊的方差最小,也就是找出這個函式的最小值:

普通公式2

最小值可以分別求B1 和B2的偏導數,然後使它們等於零得到:

普通公式3

如此就得到了一個只有兩個未知數的方程組,很容易就可以解出:

普通公式4

也就是說直線y=3.5+1.4x7yy是最佳的。

好,現在我們接著上面講,我們的目標是得到:

目標公式 ,且f(xi)與yi相差越小越好。

為了方面,我們把b和我w寫在一起,構成新的w=(w,b),這個w是一個向量,然後x寫成一個矩陣,形如:

矩陣X

 

再把,樣本原先的標記搞成向量模式:QQ截圖20161012200831 ,那麼可得出:

QQ截圖20161012202139

可以改編成:

證明

下面我們對w求導。

好像很多人對這種求導公式很煩。我來補充點公式吧。

f(w)

導數

WTX

X

XTW

X

WTX

2W

WTCW

2CW

C是矩陣

 

求導過程如下:

最小二乘法推導過程

結果:結果

 

當XTX為滿秩矩陣的時候,或者正定矩陣,可得:

最後w

所以線性迴歸模型為:

f(x)=xTW

下面給出,最小二乘法迴歸的程式碼:

執行效果圖:

最小二乘法的實現效果圖

如果單純的任何情況都用這種線性劃分,很容易出現欠擬合現象,什麼是欠擬合現象呢,如圖:

欠擬合現象

由上圖片可知:最後的幾個點,沒有擬合在直線上,這就叫做欠擬合現象。那如何解決呢。

二 區域性加權線性迴歸

思路:如果要想解決這個問題,是不是這樣就可以了,如下圖:

解決欠擬合現象1

既然方向已經明確,那麼來解決問題。

要想解決上述問題,我們可不可以給每個點加一個權重,讓這些權重去影響本來的直線,改變他們的方向。該演算法給出的迴歸係數如下:

區域性加權線性迴歸

,W是一個矩陣,是為了給每個點賦予權重。

那估計小夥伴會問,這個權重還能讓我們自己憑空yy?我可不想yy了。哈哈。

好,那麼我們就引入核的概念,說白了,就是對附近的點讓他有更高的權重,這裡的核,我們在以後接著svm慢慢和大家說。

最常用的核如下:

2.1高斯核

高斯核權重:高斯核

高斯核分佈如下:

高斯核分佈

2.2 其他核函式,暫時就不贅述了,內容太多,等我另外開一章節再講。

2.3用高斯核對w進行賦值,

程式碼實現如下:

2.4效果圖:

解決欠擬合2

感覺效果還行。注意那個K引數,不容易選擇,以我現在的水平,我都是試著給的,等我水平上升了,我在來和大家說,哈哈。互相進步,互相傷害啊。

三 嶺迴歸

回去看,是不是我給的程式碼中總有這樣一段:

錯誤

這句話用資料來說,就是特徵比樣本還多,所以如果出現這種情況的話,前面的方法,是不是總是print this matrix is singular,cannot do inverse?這是因為X不是滿秩矩陣了,不是滿秩矩陣不可以求逆,你懂得。

那我們如何解決呢,既然不是,那我們就讓他是不就完了嗎,現在我們給XTX加一個矩陣,然後在對這個新的矩陣求逆,不就完了嗎。迴歸係數公式如下:

嶺迴歸

嶺迴歸是一種專用於共線性資料分析的有偏估計迴歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分資訊、降低精度為代價獲得迴歸係數更為符合實際、更可靠的迴歸方法,對病態資料的擬合要強於最小二乘法。

本文總結:講到了最小二乘法,區域性加權迴歸,嶺迴歸這些方法的優缺點,及推導。其實機器學習就這樣,給出什麼方法,然後為什麼用這個方法,這就是演算法+優化的過程。送給大家一句話,沒有最好的演算法,只有適合的演算法,要讓資料去選擇演算法。共勉。