機器學習經典演算法原始碼分析系列 線性回歸

2021-09-27 04:47:20 字數 1496 閱讀 3719

一、單變數線性回歸:

1.資料集視覺化 

2.求解模型引數

對於線性回歸模型,有兩種方法可以求解模型引數。

1)  梯度下降法

將代價函式代入展開:

matlab**實現:

2)  正規方程

matlab**實現:

關於正規方程的推導:

3)梯度下降法和正規方程比較

由控制台輸出模型引數和回歸直線可知,兩者得到的結果很相近,具體選擇什麼方法參照以下標準。

二、多變數線性回歸

多變數線性回歸求解步驟和單變數線性回歸相似,值得注意的乙個問題是:

對於多個特徵變數,在計算模型引數之前要記得進行特徵縮放,使各個特徵值大致在同一範圍內,有利於進行梯度下降演算法求解模型引數。

介紹一種方法如下:

matlab實現:

相比較而言,正規方程在處理多變數回歸方程問題時省略了特徵縮放的步驟,只需按照單變數的步驟進行處理即可,在簡潔性上更勝一籌。

三、學習速率的選擇

梯度下降法的效率受學習速率的影響非常大,過小,收斂速度非常緩慢,所需迭代次數增大;過大時,每次迭代可能不會減小代價函式,甚至會出現越過區域性最小值無法收斂。

可以通過試湊的方式進行的選擇:如0.01,0.03,0.1,0.3,1,3,10…

ps:本原始碼解讀針對史丹福大學機器學習課程(2014版)- 業界大牛andrew ng(吳恩民)擔任主講。

pps:本系列課程筆記【小弟純手寫】:

密碼:bnks

原始碼詳細分析:

密碼:hdn7

機器學習經典演算法原始碼分析系列 邏輯回歸

1.邏輯回歸 logistic regression 又常被成為 邏輯斯蒂回歸 實質上是乙個二元分類問題。邏輯回歸代價函式 代價函式導數 matlab實現 採用matlab中自帶的無約束最小化函式fminunc來代替梯度下降法 避免學習率的選擇 fminunc高階函式的使用參考 自定義函式與fmin...

Redis原始碼分析系列

redis目前熱門nosql記憶體資料庫,量不是很大,本系列是本人閱讀redis原始碼時記錄的筆記,由於時間倉促和水平有限,文中難免會有錯誤之處,歡迎讀者指出,共同學習進步,本文使用的redis版本是2.8.19。redis之hash資料結構 redis之intset資料結構 redis之skipl...

jQuery原始碼分析系列

斷斷續續地看jquery原始碼,第一次萌生看jq原始碼的念頭,當時還是版本1.7.2,由於工作中沒有用到jq的機會,連 有幾種用法都還不知道,就開始啃原始碼,痛苦自然是少不了的,於是不久就放棄扔一邊了。等到工作中終於就機會用jq了 撒花 又萌生了啃jq原始碼的念頭,此時jq版本已經是2.0了。鑑於瀏...