機器學習筆記-線性迴歸

原文:http://blog.163.com/phoenixbai@126/blog/static/1086513492013953817839/

參考:線性迴歸和logistic迴歸 講述了矩陣法的推導過程

Logistic regression (邏輯迴歸) 概述  白話的概述


線性迴歸-理論篇  概論級別

對線性迴歸、邏輯迴歸、各種迴歸的概念學習  更多的概念

學習Logistic Regression的筆記與理解  梯度下降法的迴歸過程


Normal Equations 的由來  梯度下降與矩陣方程法比較,大量訓練用梯度下降法


這幾天開始學習coursera上的andrew ng老師的machine learning課程。

由於我對此課程的學習沒有能做到很連續,即看完視頻,過幾天後纔在開始做作業,所以總出現公式忘掉或記憶模糊的情況,導致做作業時,總感覺自己對課程理解不深刻而惶恐不安。

爲了改變此局面,決定找個地兒,寫學習筆記,以便忘了,或概念模糊時,可以幫助自己重溫一下!

線性迴歸(Linear Regression)

"迴歸"的由來

Francis Galton,英國生物學家,他研究了父母身高與子女身高之間關係後得出,若父母身高高於平均大衆身高,則其子女身高傾向於倒退生長,即會比其父母身高矮一些而更接近於大衆平均身高。若父母身高小於平均身高,則其子女身高傾向於向上生長,以更接近於大衆平均身高。此現象,被Galton稱之爲迴歸現象,即regression.

什麼是線性迴歸?

迴歸函數的具體解釋和定義,可查看任何一本“概率論與數理統計”的書。我看的是“陳希孺”的。
這裏我講幾點:
1)統計迴歸分析的任務,就在於根據機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai和Y的觀察值,去估計函數f,尋求變量之間近似的函數關係。
2)我們常用的是,假定f函數的數學形式已知,其中若干個參數未知,要通過自變量和因變量的觀察值去估計未知的參數值。這叫“參數迴歸”。其中應用最廣泛的是f爲線性函數的假設:
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai
這種情況叫做“線性迴歸”。這個線性模型就是我們今後主要討論的對象。

3)
自變量只有一個時,叫做一元線性迴歸。f = b0+b1x
自變量有多個時,叫做多元線性迴歸。  機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai

4)分類(Classification)與迴歸(Regression)都屬於監督學習,他們的區別在於:
分類:用於預測有限的離散值,如是否得了癌症(0,1),或手寫數字的判斷,是0,1,2,3,4,5,6,7,8還是9等。分類中,預測的可能的結果是有限的,且提前給定的。
迴歸:用於預測實數值,如給定了房子的面積,地段,和房間數,預測房子的價格。


一元線性迴歸

舉個例子!
我們要預測房價。當前自變量(輸入特徵)是房子面積x,因變量是房價y.給定了一批訓練集數據。
我們要做的是利用手上的訓練集數據,得出x與y之間的函數f關係,並用f函數來預測任意麪積x對應的房價。

假設x與y是線性關係,則我們可以接着假設一元線性迴歸函數如下來代表y的預測值:
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai

我們有訓練集了,那麼問題就成了如何利用現有的訓練集來判定未知參數機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值,使其讓機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值更接近實際值y? 訓練集指的是已知x,y值的數據集合!

一種方法是計算它的成本函數(Cost function),即預測出來的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值與實際值y之間的方差的大小來決定當前的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai值是否是最優的!

常用的成本函數是最小二乘法:
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai

機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai是變量機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的函數,故我們的目標就成了獲取使機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai值最小時的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值!!!
下面的圖表示,當機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai取各個值時對應的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值,從圖中可看出,當機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai分別取特定的某一值時,機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai可達到全局最小值,而對應的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值,就是我們要定位到的最終理想的值!
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai


那麼如何找到理想的機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai的值?
其中一個辦法是,利用微積分裏的梯度下降!

梯度下降的概念可查看高等數學下冊!

梯度下降算法:(alpha是自定義的,叫learning rate,設得值太大,可能永遠無法收斂,設得太小,則收斂會很慢很慢)
循環直到收斂{
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai
}
對於線性迴歸模型,成本函數的導數如下: (theta 0 對應的x爲常量1)
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai

一般程序裏會寫明最多循環次數以及收斂條件(如cost function值小於power(10,-3)時認爲成功收斂).若能自動收斂,甚好,若不能,則循環指定次數後,強行退出。此時,你需要調參數alpha或者重新慎視假設模型!

另一種方法是Normal Equation!

直接用矩陣的運算求出最佳的theta值。套現成公式,就能求得theta,此公式的原理,以後再補!

機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai
X是矩陣,代表訓練集,每一行是一個樣本的各特徵值。y是個向量,對應每個樣本的結果值。

梯度下降與Normal Equation的對批:
 Gradient Descent  Normal Equation
 自定義alpha 不需要定義alpha
 盾環N次才能得到最佳theta值 不需要任何循環操作
 特徵個數非常大時,也適用 X的轉陣與逆矩陣的計算量很大,
導致特徵個數多時,會很慢,適用於
特徵個數小於100000時使用
 需要feature scaling  不需要feature scaling

多元線性迴歸(Linear Regression with Multiple Variables)

跟一元線性迴歸的參數迴歸方式如出一轍,唯一區別在迴歸函數的假設上:
機器學習筆記-線性迴歸 - phoenixbai@126 - PhoenixBai

多元,故名思義,就是說有多個特徵做爲輸入。那問題就來了,若多個特徵的表達值的範圍不一樣,會有什麼影響和後果?比如,繼續拿預測房價作爲例子。現在它的特徵增加了,特徵1是面積,特徵2是房間數,特徵3是房子的年齡。很明顯,這三個特徵的值的範圍是有很大差異的。
特徵1:100到300之間
特徵2: 2到5之間
特徵3:20到60年之間
若不做任何處理,則特徵1和3對結果的影響遠大於特徵2,而可能扭曲了真實情況下,各特徵在最終結果中所應占的權重比例。

所以,一般情況下,特徵與特徵之間的值變化範圍差異過大時,我們用feature scaling的手段來規範化特徵值,使每個特徵的特徵值都處於-1至1之間。

Feature Scaling

feature scaling的方法可自定義,常用的有:
1) mean normalization (or standardization)
  (X - mean(X))/std(X)
2) rescaling
   (X - min) / (max - min)

先下這兒。接下來寫邏輯迴歸!
發佈了44 篇原創文章 · 獲贊 9 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章