4.1 多維特征
舉例房價模型
增添了更多的特征。
此時模型中的參數(shù)是一個n+1維的向量褥伴。
公式可以簡化:
4.2 多變量梯度下降
與單變量線性回歸類似,在多變量線性回歸中,我們也構(gòu)建一個代價函數(shù):所有建模誤差的平方和贯莺。
目標(biāo):找出使得代價函數(shù)最小的一系列參數(shù)。
多變量線性回歸的批量梯度下降算法為:
開始:隨機(jī)選擇一系列的參數(shù)值宁改。
計算所有的預(yù)測結(jié)果后缕探,再給所有的參數(shù)一個新的值。如此循環(huán)直到收斂还蹲。
4.3 梯度下降法時間
特征縮放
對于多維特征問題爹耗,最好保證這些特征都具有相近的尺度,這將幫助梯度下降算法更快地收斂谜喊。
解決方法:嘗試將所有特征的尺度都盡量縮放到-1到1之間潭兽。
學(xué)習(xí)率
梯度下降算法的每次迭代受到學(xué)習(xí)率的影響。
學(xué)習(xí)率過小則達(dá)到收斂所需的迭代次數(shù)會非常高斗遏。
學(xué)習(xí)率過大山卦,每次迭代可能不會減小代價函數(shù),可能會越過局部最小值導(dǎo)致無法收斂诵次。
通痴巳兀可以考慮嘗試學(xué)習(xí)率:
特征和多項式回歸
線性回歸并不適用于所有數(shù)據(jù),有時我們需要曲線來適應(yīng)我們的數(shù)據(jù)逾一。
二次方模型:
三次方模型:
通常我們需要先觀察數(shù)據(jù)然后再決定準(zhǔn)備嘗試怎樣的模型剔猿。
另外,我們可以令:
從而將模型轉(zhuǎn)化為線性回歸模型嬉荆。
采用多項式回歸模型归敬,在運行梯度下降算法前,特征縮放非常有必要鄙早。
正規(guī)方程
對于某些線性回歸問題汪茧,正規(guī)方程方法是更好的解決方案,如:
對于不可逆矩陣(通常因為特征之間不獨立限番,如單位不同的兩個同樣特征舱污,也有可能是特征數(shù)量大于訓(xùn)練集的數(shù)量),不能使用正規(guī)方程方法弥虐。
舉個栗子:
梯度下降與正規(guī)方程的比較:
梯度下降 | 正規(guī)方程 |
---|---|
需要選擇學(xué)習(xí)率 | 不需要 |
需要多次迭代 | 一次運算得出 |
當(dāng)特征數(shù)量n大時也能較好適用 | 需要計算如果特征數(shù)量n較大則運算代價大扩灯,因為矩陣逆的計算時間復(fù)雜度為媚赖,通常來說當(dāng)n小于10000時還是可以接受的 |
適用于各種類型的模型 | 只適用于線性模型,不適合邏輯回歸模型等其他模型 |
只要特征變量數(shù)量小于1w珠插,通常使用標(biāo)準(zhǔn)方程法而不使用梯度下降法惧磺。
對于這個特定的線性回歸模型,標(biāo)準(zhǔn)方程法是一個比梯度下降法更快地替代算法捻撑。
但是對于實際上更復(fù)雜的學(xué)習(xí)算法磨隘,不得不仍然使用梯度下降法。
python實現(xiàn) 正規(guī)方程
import numpy as np
def normalEqn(X,y):
theta = np.linalg.inv(X.T@X)@X.T@y
return theta
#np.linalg.inv 求逆矩陣
#X.T@X等價于X.T.dot(X)
#先求X的轉(zhuǎn)置再與X點積