機器學習(Coursera吳恩達)(二)
標籤(空格分隔): 機器學習
多變量線性迴歸(Linear Regression with Multiple Variables)
多維特性
構建一個有n個變量的模型,模型中的特徵爲( )。例如房價預測問題,除了房子面積之外還可以加如房間數,樓層位置,新舊程度等很多相關的特徵,這樣就構建了一個多變量模型。
- n表示特徵數量。
- 表示第i個樣本實例,是一個向量,包含這個樣本所對應的所有特徵。例如
- 表示第i個樣本實例的第j個特徵。
- 多變量的假設線性函數爲: 因爲有n個特徵 向量就有n+1維(包含一個 )。
- 因爲 ,而x是n維的,所以需要給樣本 添加一個 項,使 。保持維度一致。也就是改爲 。
這個模型目的是求 參數,使代價函數最小。
梯度下降
cost function:
目的:求出是的代價函數最小的一系列參數
在初始化之後,進行這樣的學習循環,直到收斂。
#這個地方有問題,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]之間。這樣等高線圖類似一個圓,可以加快下降。
特徵縮放沒有一個特別的區間,只要合適就可以。
學習率
學習率控制下降的步長, 過小則達到收斂所需的迭代次數會很高;如果過大,則迭代可能不會減小代價函數。可能越過極小點,導致無法收斂。
通常可以嘗試0.1 0.3 0.01 0.03 1 3這些量。
正規方程
正規方程是求解下面的方程來找出代價函數最小的參數。
假設訓練集特徵矩陣爲X(包含 ),並且訓練集結果爲向量y,則利用正規方程解出向量 。
正規方程是求解某些線性問題迴歸的方法。
下面的對比很重要,矩陣求逆計算複雜度較高 。
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()
進行僞逆計算,得到一個可用的值,但實際並不可逆。
正規方程的推到過程是矩陣的求導:
。。。待定上傳一張圖片。。。