今天帶來第二週課程的筆記:梯度下降與正規方程。
主要內容:
- 多維特徵
- 多變數梯度下降
- 梯度下降法實踐
- 正規方程
- 多維特徵Multiple Features
多維特徵Multiple Features
還是利用房價模型的例子,增加了更多的特徵,比如:房間樓層、房間數量、地理位置等,構成了一個含有多個變數的模型
n:代表的是特徵的數量
x(i):代表第i個訓練例項,是特徵矩陣中的第i行,是一個向量vector
xij:表示的是第i個訓練例項的第j個特徵;i表示行,j表示列
支援多變數的假設h表示為:
為了簡化公式,引入,公式轉化為:
特徵矩陣X 的維度是m∗(n+1),公式簡化為:
多變數梯度下降
演算法目標
與單變數線性迴歸類似,在多變數線性迴歸中,構建一個代價函式,則這個代價函式是所有建模誤差的平方和,即:
其中:
演算法過程:
Python程式碼
import numpy as np
def computeCost(X,y,theta):
inner = np.power(((X * theta.T) - y), 2) # 求解每個平方項
return np.sum(inner) / (2 / len(X)) # 求和再除以2*len(X)
梯度下降法實踐
特徵縮放
面對多維度特徵問題,我們需要保證這些特徵具有相近的尺度,幫助梯度下降演算法更快地收斂。
以房價問題為例,假設僅用兩個特徵,房屋的尺寸和數量,以兩個引數分別為橫縱座標,假設尺寸在0-2000平方英尺,數量在0-5之間。
繪製代價函式的等高線圖能,看出影像會顯得很扁,梯度下降演算法需要非常多次的迭代才能收斂。
解決辦法:將所有的特徵的尺度儘量縮放到-1到1之間,令:
其中un為平均值,sn為標準差
均值歸一化
學習率問題
梯度下降演算法的每次迭代受到學習率的影響
- 如果學習率過小,則達到收斂所需的迭代次數會非常高,收斂速度非常慢
- 如果學習率過大,每次迭代可能不會減小代價函式,可能會越過區域性最小值導致無法收斂
常用學習率包含:α=0.01,0.03,0.1,0.31,3,10α=0.01,0.03,0.1,0.31,3,10
特徵和多項式迴歸
如房價預測問題,
同時房屋面積=寬度 * 深度
在實際擬合資料的時候,可能會選擇二次或者三次方模型;如果採用多項式迴歸模型,在執行梯度下降法之前,特徵縮放很有必要。
正規方程 Normal Equation
梯度下降缺點
需要多次迭代才能達到區域性最優解
正規方程demo
正規方程具有不可逆性
正規方程就是透過求解下面例子中的方程找出使得代價函式最小引數θ:
不可逆矩陣不能使用正規方程求解
Normal Equation VS Gradient Descent
梯度下降和正規方程的比較:
引數θ求解過程
正規方程的Python實現
import numpy as np
def normalEquation(X, y):
theta = np.linalg.inv(X.T@X)@X.T@Y # X.T@X等價於X.T.dot(X) @等價於.dot
return theta
至此,第二週的課程筆記完畢!
系列文章:
吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習
本文首發於公眾號:AI有道(ID: redstonewill),歡迎關注!