1.緒論
1.1 機器學習的定義:
Arthur Samuel : " Field of study that gives computers the ability to learn without being explicitly programmed."
Tom Mitchell : " A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P. improves with experiience E."
(譯:計算機程序從經驗E中學習,解決某一任務T,進行某一性能度量P,通過P測定在T上的表現因經驗E而提高。)
1.2 監督學習:
利用一組帶標籤的數據, 學習從輸入到輸出的映射, 然後將這種映射關係應用到未知數據, 達到分類或者回歸的目的。
Regression Problem(迴歸問題):設法預測取值連續的數值輸出(房價預測)
Classification Problem (分類問題) :設法預測取值離散的數值輸出 (腫瘤良性/惡性預測)
1.3 無監督學習:
利用無標籤的數據學習數據的分佈或數據與數據之間的關係被稱爲無監督學習。
無監督學習最常應用的場景是聚類(clustering)和降維(Dimension Reduction)
有監督學習和無監督學習的最大區別在於數據是否有標籤
2.單變量線性迴歸
2.1模型描述
專用的術語以及假設函數h:
假設函數( Hypothesis function)表示從輸入到輸出的映射,通常寫作h θ ( x ) h_\theta(x) h θ ( x ) 或簡寫爲h ( x ) h(x) h ( x )
h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x h θ ( x ) = θ 0 + θ 1 x
其中,θ 0 \theta_0 θ 0 、θ 1 \theta_1 θ 1 :模型參數(parameters of the model), 選取不同的模型參數會導致不同的假設函數。
2.2代價函數(cost function)
常用:平方誤差代價函數。
例如:在根據房子大小預測房子售價的問題中,令平方誤差代價函數爲J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J ( θ 0 , θ 1 ) .
則由上述得:
Hypothesis function : h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x h θ ( x ) = θ 0 + θ 1 x
Parameters : θ 0 、 θ 1 \theta_0 、\theta_1 θ 0 、 θ 1
Cost function : J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J ( θ 0 , θ 1 ) = 2 m 1 i = 1 ∑ m ( h θ ( x ( i ) ) − y ( i ) ) 2
Goal :
min J ( θ 0 , θ 1 ) = min 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \min J(\theta_0,\theta_1)=\min \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 min J ( θ 0 , θ 1 ) = min 2 m 1 i = 1 ∑ m ( h θ ( x ( i ) ) − y ( i ) ) 2
找出使得代價函數最小的θ 0 、 θ 1 \theta_0、\theta_1 θ 0 、 θ 1 ,即目標函數最小時對應的θ 0 、 θ 1 \theta_0、\theta_1 θ 0 、 θ 1 ,則找到了擬合訓練集的假設函數 h θ ( x ) h_\theta(x) h θ ( x ) 。
若 θ 0 = 0 \theta_0=0 θ 0 = 0 ,即假設函數簡化爲h θ ( x ) = θ 1 x h_\theta(x)=\theta_1x h θ ( x ) = θ 1 x 。
則根據不同的θ 1 \theta_1 θ 1 的值,可以繪製出相對應的h θ ( x ) h_\theta(x) h θ ( x ) 函數曲線,根據圖中函數曲線與訓練集(含輸入x,實際輸出y)的差值,可以得出此時的J ( θ 1 ) J(\theta_1) J ( θ 1 ) 的值。取不同的θ 1 \theta_1 θ 1 ,繪製出J ( θ 1 ) J(\theta_1) J ( θ 1 ) 的函數曲線(碗狀)。——凸函數
若 θ 0 ≠ 0 \theta_0\neq0 θ 0 ̸ = 0 ,h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x h θ ( x ) = θ 0 + θ 1 x
或投影成等高線圖的形式:
若融入更多的參數時,會得到更加高維的代價函數曲線,甚至無法繪製、無法可視化,此時再手動讀取代價函數最小參數,不可取。
——>梯度下降算法 可以解決這些問題
2.3 梯度下降算法 (Gradient decent)
α \alpha α 是學習速率,可控制算法以多大的幅度更新參數。換句話而言,就是以多大的步幅沿最陡下降路移動。
如果α \alpha α 過小,梯度下降算法可能會收斂得很慢。
如果α \alpha α 過大,可能導致不斷地震盪以至於無法收斂甚至發散,離局部地最優點越來越遠。J ( θ ) J(\theta) J ( θ ) 隨着迭代次數的增加,反而越來越大。例如:
當到達局部最優點時,導數部分爲0。
利用梯度下降算法可求得局部最優解
2.4 線性迴歸算法 ——第一個機器學習算法
Batch Gradient Descent算法
(Batch:each step of gradient descent uses all the training examples)
思想:將梯度下降算法應用到最小化平方差代價函數
平方代價函數是凸函數,不存在局部最優解,只有一個全局最優。
3.線性代數的知識
4.配置Matlab
5.多變量線性迴歸
5.1 多元梯度下降算法
相比較單變量線性迴歸,多變量線性迴歸有以下特徵:
(1)表示特徵數目的變量:n,每個特徵用x j x_j x j 表示,j=1,2…n ;
(2)訓練集的樣本中每一對輸入和輸出分別是一個n維向量,第i個輸入樣本表示爲x ( i ) x^{(i)} x ( i ) ,輸出爲y ( i ) y^{(i)} y ( i ) ;
(3)x j ( i ) {\rm{x}}_j^{(i)} x j ( i ) 表示:第i個訓練樣本的第j個特徵量的值。
(4)假設函數:h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n {h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + \ldots + {\theta _n}{x_n} h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n 。可以看作是x 0 = 1 x_0=1 x 0 = 1 的兩個n+1維向量的內積。
x = [ x 0 , x 1 … x n ] T x = {\left[ {{x_0},{x_{\rm{1}}} \ldots {x_{\rm{n}}}} \right]^T} x = [ x 0 , x 1 … x n ] T θ = [ θ 0 , θ 1 … θ n ] T \theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T} θ = [ θ 0 , θ 1 … θ n ] T
h θ ( x ) = θ T x {h_\theta }(x) = {\theta ^T}x h θ ( x ) = θ T x
(5)代價函數:J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J ( θ ) = 2 m 1 i = 1 ∑ m ( h θ ( x ( i ) ) − y ( i ) ) 2
(6)梯度下降算法應用到多變量線性迴歸問題中的改變:(多元梯度下降算法)
5.2特徵縮放
當模型的某些特徵值x j x_j x j 過大,而其他的過小時,通常會造成代價函數的等值線圖過於橢圓(擁擠),使得梯度下降的過程變得更加緩慢,反覆來回振盪,才能找到一條通往全局最小的路。
此時要對這些特徵值進行適當處理,使其值相近,即特徵縮放。通常採用的方法是歸一化處理。
5.3學習率
在單變量線性迴歸算法中,曾經提到,α \alpha α 過大過小都不好。在多變量裏同理。
因此,選取一個合適的學習率α \alpha α 很重要。
可以嘗試不同的α \alpha α 值,觀察代價函數J ( θ ) J(\theta) J ( θ ) 隨迭代次數變化的曲線。(正常情況下,應該是單調遞減曲線)
5.4正規方程
正規方程通常在特徵不多的情況下使用,特徵過多時最好使用梯度下降。
舉例:
樣本數爲4,特徵數爲4。
如前所述:
假設函數 :h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n {h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + \ldots + {\theta _n}{x_n} h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n 。可以看作是x 0 = 1 x_0=1 x 0 = 1 的兩個n+1維向量的內積。
x = [ x 0 , x 1 … x n ] T x = {\left[ {{x_0},{x_{\rm{1}}} \ldots {x_{\rm{n}}}} \right]^T} x = [ x 0 , x 1 … x n ] T θ = [ θ 0 , θ 1 … θ n ] T \theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T} θ = [ θ 0 , θ 1 … θ n ] T
h θ ( x ) = θ T x {h_\theta }(x) = {\theta ^T}x h θ ( x ) = θ T x
代價函數 :J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J ( θ ) = 2 m 1 i = 1 ∑ m ( h θ ( x ( i ) ) − y ( i ) ) 2
增加一個特徵:即x 0 = 1 x_0=1 x 0 = 1
則必然有:
其中,第i個樣本 x ( i ) = [ x 0 ( i ) x 1 ( i ) x 2 ( i ) … x n ( i ) ] T ∈ R n + 1 {{x}^{(i)}}={{\left[ \begin{matrix}
x_{0}^{(i)} & x_{1}^{(i)} & x_{2}^{(i)} & \ldots & x_{n}^{(i)} \\
\end{matrix} \right]}^{T}}\in {{R}^{n+1}} x ( i ) = [ x 0 ( i ) x 1 ( i ) x 2 ( i ) … x n ( i ) ] T ∈ R n + 1
即:X = [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] X=\left[ \begin{matrix}
1 & 2104 & 5 & 1 & 45 \\
1 & 1416 & 3 & 2 & 40 \\
1 & 1534 & 3 & 2 & 30 \\
1 & 852 & 2 & 1 & 36 \\
\end{matrix} \right] X = ⎣ ⎢ ⎢ ⎡ 1 1 1 1 2 1 0 4 1 4 1 6 1 5 3 4 8 5 2 5 3 3 2 1 2 2 1 4 5 4 0 3 0 3 6 ⎦ ⎥ ⎥ ⎤
y = [ 460 232 315 178 ] y=\left[ \begin{matrix}
460 \\
232 \\
315 \\
178 \\
\end{matrix} \right] y = ⎣ ⎢ ⎢ ⎡ 4 6 0 2 3 2 3 1 5 1 7 8 ⎦ ⎥ ⎥ ⎤
θ = [ θ 0 , θ 1 … θ n ] T \theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T} θ = [ θ 0 , θ 1 … θ n ] T
因此,X θ = y X\theta =y X θ = y ,又寫作:θ = ( X T X ) − 1 X T y \theta ={{({{X}^{T}}X)}^{-1}}{{X}^{T}}y θ = ( X T X ) − 1 X T y
P.S:若X T X X^{T}X X T X 不可逆,即奇異矩陣,這種情況很少發生。
如果發生:可能是包含了多餘的特徵(有類似的,導致矩陣某幾行成正比)或者特徵過多(m<=n),此時應該刪除一些特徵或考慮正規化的方法。