機器學習(Coursera吳恩達)(二)

機器學習(Coursera吳恩達)(二)

標籤(空格分隔): 機器學習


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

多維特性

構建一個有n個變量的模型,模型中的特徵爲(x1,x2,x3,...,xn )。例如房價預測問題,除了房子面積之外還可以加如房間數,樓層位置,新舊程度等很多相關的特徵,這樣就構建了一個多變量模型。

  • n表示特徵數量。
  • x(i) 表示第i個樣本實例,是一個向量,包含這個樣本所對應的所有特徵。例如x(2)=[1416,3,2,40]T
  • xj(i) 表示第i個樣本實例的第j個特徵。x2(2)=3
  • 多變量的假設線性函數爲:hθ(x)=θ0+θ1x1+θ2x2+...+θnxn 因爲有n個特徵θ 向量就有n+1維(包含一個θ0 )。
  • 因爲θRn+1 ,而x是n維的,所以需要給樣本x 添加一個x0=1 項,使xRn+1 。保持維度一致。也就是改爲θ0x0hθ(x)=θTx

這個模型目的是求θ 參數,使代價函數最小。

梯度下降

cost function: J(θ0,θ1,...θn)=12mi=1m(hθ(x(i))y(i))2
目的:求出是的代價函數最小的一系列參數θ

4多變量梯度下降1·.png-51.2kB

4多變量梯度下降2.png-30.7kB

在初始化之後,進行這樣的學習循環,直到收斂。

#這個地方有問題,X*theta.T所以X是怎麼保存樣本的。
#theta是1*n,theta.T是n*1,X是m*n的,也就是樣本矩陣每一行保存一個樣本,每一列是對應的特徵數。
def computeCost(X, y, theta):
    inner = np.power(((X*theta.T)-y, 2)
    return np.sum(inner)/(2.len(X))

特徵縮放

梯度下降法需要多次迭代才能收斂。如果按照原始的特徵繪製代價函數等高線,則是一個橢圓的,顯得很扁。而且梯度下降方向是曲折的。爲了解決這個問題,並且加快梯度下降,就需要進行特徵縮放,將特徵尺度縮放到[-1,1]之間。這樣等高線圖類似一個圓,可以加快下降。
4特徵縮放.png-280kB

特徵縮放沒有一個特別的區間,只要合適就可以。

學習率

學習率控制下降的步長,α 過小則達到收斂所需的迭代次數會很高;如果過大,則迭代可能不會減小代價函數。可能越過極小點,導致無法收斂。

通常可以嘗試0.1 0.3 0.01 0.03 1 3這些量。

正規方程

正規方程是求解下面的方程來找出代價函數最小的參數。
假設訓練集特徵矩陣爲X(包含x0 ),並且訓練集結果爲向量y,則利用正規方程解出向量θ=(XTX)1XTy

正規方程是求解某些線性問題迴歸的方法。
下面的對比很重要,矩陣求逆計算複雜度較高O(n3)

4梯度下降與正規方程比較.png-99.1kB

import numpy as np
def normalEqn(X,y)
    return np.linalg.inv(X.T@X)@X.T@y #X.T@X等價於X.T.dot(X)

正規方程有可能是不可逆的,如果來展示兩個相關聯的特徵的話,那麼X’X是不可逆的。
在MATLAB中可以用pinv()進行僞逆計算,得到一個可用的值,但實際並不可逆。

正規方程的推到過程是矩陣的求導:
4矩陣求導1.png-101kB

。。。待定上傳一張圖片。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章