吳恩達機器學習課程筆記——第一週
1. 單變數線性迴歸(Linear Regression with One Variable)
1.1 模型表示
像上述公式,因為只含有一個特徵/輸入變數,因此這樣的問題叫作單變數線性迴歸問題。
例子如下:
單變數線性方程,就是我們初中就學的一元一次函式。
當然啦,除了這個模型之外,我們還有很多其他的線性模型,比如指數模型、對數模型等等,除了線性模型之外,還有非線性模型,有這麼多的模型,其目的就是在於更好的擬合訓練集的資料,以使得預測率更高。
以下是對模型的具體定義:
2. 代價函式(Cost Function)
代價函式就是為了就是找到目的函式的最優解。
因為在一個訓練集中,有無數個模型(一元一次函式),我們需要找到最擬合這個訓練集的一個函式,所以就引入了代價函式,用來找到那個最好的模型。
2.1公式表示
上述是平方誤差代價函式,這也是常用到的代價函式,它通過目的函式跟各個實際值的誤差平方建立新的函式。為了使這個值不受個別極端資料影響而產生巨大波動,採用類似方差再取二分之一的方式來減小個別數據的影響。
2.2 代價函式的直觀理解①
最優解即為代價函式的最小值,根據以上公式多次計算可得到代價函式的影象:
可以看到該代價函式的確有最小值,這裡恰好是橫座標為1的時候。
2.3 代價函式的直觀理解②
如果有更多引數,就會更為複雜,兩個引數的時候就已經是三維影象了:
3. 梯度下降演算法(Gradient Descent)
梯度下降是一個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式J(θ0,θ1) 的最小值。
個人理解,代價函式是分析模型與實際訓練集之間的誤差,而梯度下降演算法的作用,就是找出那個誤差最小的代價函式。
演算法思想
- 從引數的某一個(組)值開始,比如從θ0=0和θ1=0開始
- 保持該(組)值持續減小,如果是一組值就要保證他們同步更新,直到找到我們希望找到的最小值
我們要找到一條最快下山的路徑,我們走的每一步大小就是α 。
如果在不同的起點,最後到達的最低點也會不一樣。
3.1批量梯度下降(batch gradient descent)
- α:學習速率,決定我們讓代價函式下降程度最大的方向邁出的步子有多大
3.1.1 同步更新(Simultaneous update)
在梯度下降演算法中,我們需要更新θ0,θ1,實現梯度下降演算法的微妙之處是,在這個表示式中,如果你要更新這個等式,你需要同時更新。
3.1.2 梯度下降演算法理解
如果 α 太大,那麼梯度下降法可能會越過最低點,甚至可能無法收斂,下一次迭代又移動了一大步,越過一次,又越過一次,一次次越過最低點,直到你發現實際上離最低點越來越遠,所以,如果 α 太大,它會導致無法收斂,甚至發散。
解決方法——乘偏導數
首先初始化我的梯度下降演算法,在那個品紅色的點初始化,如果
我更新一步梯度下降,隨著我接近最低點,我的導數越來越接近零,所以,梯度下降一步後,新的導數會變小一點點。然後我想再梯度下降一步,在這個綠點,我自然會用一個稍微跟剛才在那個品紅點時比,再小一點的一步,到了新的紅色點,更接近全域性最低點了,因此這點的導數會比在綠點時更小。所 以,我再進行一步梯度下降時,我的導數項是更小的,θ1更新的幅度就會更小。所以隨著梯度下降法的執行,你移動的幅度會自動變得越來越小,直到最終移動幅度非常小,你會發現,已經收斂到區域性極小值。
3.1.3 線性迴歸的批量梯度下降
偏導數求解推導過程
批量梯度下降方程
通過上面幾條公式的整合,最終得出以下公式
4. 線性代數基礎
個人現在認為,線性代數的作用主要是為了方便操作訓練集。
4.1 矩陣的定義
橫為行,豎為列,表示方法一般是R^(m*n)
尋找某個矩陣元素
4.2 矩陣加法(Matrix Addition)
同一個位置的矩陣元素相加,得到新的矩陣
4.3 矩陣乘法(Scalar Multiplication)
將值與矩陣每個元素相乘,得到新的矩陣
4.4 矩陣的組合運算(Combination of Operands)
將矩陣加減法和乘除法結合起來,道理都一樣
4.5 兩個矩陣相乘
A矩陣的行 乘 B矩陣的列 得到新矩陣 y 。
4.6 矩陣應用到梯度下降演算法例項
把訓練集做成一個矩陣,把線性迴歸方程做成另外一個矩陣,將兩個矩陣相乘,最後就能得出一個新的矩陣。
4.7 單位矩陣
在矩陣的乘法中,有一種矩陣起著特殊的作用,如同數的乘法中的1,這種矩陣被稱為單位矩陣.它是個方陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0。
除0矩陣外,任何矩陣乘單位矩陣都等於它本身。
4.8 逆矩陣
用octave求得逆矩陣:pinv()函式