房價模型增加更多的特徵,例如房間數樓層等,構成一個含有多個變量的模型,模型中的特徵爲
m:訓練集樣本數量
n:特徵的數量
:代表第 i個訓練實例,是特徵矩陣中的第i行,是一個向量
:代表特徵矩陣中第i行的第j個特徵,也就是第i個訓練實例的第j個特徵。
支持多變量的假設 h 表示爲:
爲了使得公式能夠簡化一些,引入 x0 =1,則公式轉化爲:
此時模型中的參數是一個n+1維的向量,任何一個訓練實例也都是n+1維的向量,特徵矩陣X的維度是 m*(n+1)
公式可以簡化爲
代價函數:
其中:
即:
以房價問題爲例,假設我們使用兩個特徵,房屋的尺寸和房間的數量,尺寸的值爲 0-2000平方英尺,而房間數量的值則是0-5,以兩個參數分別爲橫縱座標,繪製代價函數的等高線圖能,看出圖像會顯得很扁,梯度下降算法需要非常多次的迭代才能收斂。
解決的方法是嘗試將所有特徵的尺度都儘量縮放到-1到1之間。如圖:
亦可令
:xn的平均值
:標準差,即xn最大值 -xn最小值
這樣 每一個x的取值範圍爲[-0.5,0.5]
梯度下降算法收斂所需要的迭代次數根據模型的不同而不同,我們不能提前預知,我們可以繪製迭代次數和代價函數的圖表來觀測算法在何時趨於收斂。
橫軸:迭代次數
縱軸:代價函數
如果代價函數增加,那麼您可能需要減少α。
當代價函數減少率少於e時,e通常指10的-3次方,可以認爲代價函數已經收斂。
已經證明,當學習率α足夠小時,代價函數將會在每一次迭代中收斂。
通常可以考慮嘗試些學習率:
α=0.01,0.003,0.1,0.3,1,3,10
總結:梯度下降算法的每次迭代受到學習率的影響,如果學習率α過小,則達到收斂所需的迭代次數會非常高;如果學習率α過大,每次迭代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。
如房價預測問題:
令 x1=frongtage 臨街寬度
x2=depth 縱向深度
則:
線性迴歸並不適用於所有數據,有時我們需要曲線來適應我們的數據,比如一個二次方模型:
或者三次方模型:
通常我們需要先觀察數據然後再決定準備嘗試怎樣的模型。 另外,我們可以令:
,從而將模型轉化爲線性迴歸模型。
根據函數圖形特性,我們還可以使:
或者
如果採用多項式迴歸模型,在運行梯度下降算法前,特徵縮放非常有必要。
特徵選擇:
當訓練集m 小於 特徵量 n,使用正則化的線性代數方法,通過刪除某些特徵或者是使用某些技術,來解決當m比n小的問題。
特徵值裏是否有一些多餘的特徵,像這些x1和x2是線性相關的,互爲線性函數。當有一些多餘的特徵時,可以刪除這兩個重複特徵裏的其中一個,無須兩個特徵同時保留。