線性回歸(一)
什麽是機器學習?
機器學習:研究如何通過計算的手段,利用經驗來改善系統自身的性能。
機器學習分為監督學習和非監督學習。
-
監督學習 (Supervised learning)
從給定的訓練數據集中學習出一個函數(模型參數),當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求包括輸入輸出,也可以說是特征和目標。
常見的有監督學習算法:回歸分析和統計分類
- 非監督學習 (Unsupervised learning)
輸入數據沒有被標記,也沒有確定的結果。樣本數據類別未知,需要根據樣本間的相似性對樣本集進行分類(聚類,clustering
在實際應用中,不少 情況下無法預先知道樣本的標簽,也就是說沒有訓練樣本對應的類別,因而只能從原先沒有樣本標簽的樣本集開始學習分類器設計。
線性回歸
在對機器學習這門學科有了一個基本的認識後,我們就要正式開始進行模型算法的學習了。
在線性回歸這部分,這篇博客主要從以下幾個部分來討論:
- 模型定義
- 損失函數
- 參數估計
以下筆記來自吳聞達老師的機器學習視頻。
模型定義
以上是監督學習問題的圖示描述,我們的目標是,給定訓練集,學習函數h:X→Y,使得h(x)是對於y有較好的預測值。
h(x)代表的是一個假設集合(Hypothesis ),我們要做的就是從這個假設集合中找出預測效果最好的那一個假設。
損失函數(Cost Function)
之前舉的例子,關於房價的預測問題,是一個單變量的回歸問題,輸入數據只有x維度為1,
我們建立的模型是,我們的目標是讓這個直線盡可能的擬合所有數據,
即從數據的中心穿過,讓我們的每個預測值h(x)與我們的已知數值y盡可能的接近。
那麽,我們應該怎麽選擇最好的模型呢?通過求解參數theta1和theta2.
我們可以通過使用 cost function(損失函數)來測量我們的假設的準確性。 這需要使用來自x的輸入
和實際輸出y的假設的所有結果的平均差(實際上是平均值的更好的版本),如下。
說明:其實損失函數 J 計算的是h(x)與真實值y之間的垂直距離的平方和均值。
關於為什麽多一個1/2的問題,是為了以後求導方便,不用太在意這個。
為了問題描述的方便,首先使用上圖右邊的簡單模型,只有一個參數theta1.
下圖是對數據樣本點”X“的擬合狀態,
當在上圖中我們隨意旋轉h(x),將會得到不同的 J 值,可以得到下面的關於theta1 損失函數 J 的圖像:
當同時考慮兩個參數值 theta1和theta0時,損失函數的圖像是這樣的,被稱為bowl-shape function,碗狀的
下圖的右邊是上面三維圖像的二維展示,那一圈一圈的橢圓被稱為“等高線”(類似地理上的等高線),每一個橢圓上的不同點的 J 值都是相等的,
如圖中綠色橢圓上的三個點,越靠近中心的橢圓 J 值越小。
上面左圖對應的是右圖中用綠色圓圈標註的點(theta1=800,theta0=-1.5),對應的模型h(x)的圖像,右圖中每一個不同的點,
都會在左圖中對應一個不同的圖像,如下:
當然,我們理想的情況是類似上圖的情況,我們取的(theta1,theta0)出現圖中的中心theta0=450,theta1=0.12,
在這個點可以是損失函數達到最小,趨近於0.這樣我們就求得了模型參數theta0和theta1,進而得到最佳的假設h(x)。
參數估計:
Gradient Descent(梯度下降)
我們有了假設模型h(x),和損失函數 J,現在來討論如何求得theta1和theta0的方法,梯度下降。我們的問題描述如下:
需要不斷叠代,求得使損失函數 J 達到最小的theta1和theta0.
關於梯度下降的理解:
假設你現在站在兩座山包上的其中一座,你需要以最快的速度下到山的最低處。每到達一個新的地方,
都選擇在該點處梯度最大的方向下山即可。如圖:
梯度下降算法表示如下:其中標出了梯度(藍框內)和學習率(α > 0),梯度在這裏通俗的說就是函數 J 的偏導數。
註意:梯度下降算法對局部最小值敏感,梯度下降可能收斂在局部最小,不能保證收斂到全局最小值。
說明:在計算機科學中,x:=x+y表示,先計算x+y的結果再賦值給變量x,類似先計算a=x+y,然後使x的值等於a。
下圖為梯度為正、負的情況,theta的更新是不一樣的:
關於參數更新的問題,theta1和theta2必須同時更新,下圖左邊為正解,即不能使用更新過後的theta0來進一步更新theta1
(這將是後面要講到了另一種算法)。
關於學習率α的問題:
當a過小的時候,叠代步長太小,梯度下降得太慢;
當a過大的時候,叠代步長過大,梯度無法收斂到最小值,而發生左右震蕩的現象。
當固定a時,梯度下降法依然可以收斂到最小值(局部),
因為,當我們越靠近最小值時,我們的 梯度 越小,反應在上圖就是越來越平緩,所以上面藍色方框中的表達式會越來越小,
然後乘上a也越來越小,證明我們叠代的步長會逐步變小,即使我們使用的是固定不變的學習率a。
Gradient Descent For Linear Regression
(在線性回歸中使用梯度下降)
其推導過程如下,分別對 J 求 關於theta0和theta1的偏導數:
得到下面應用於線性回歸的梯度下降算法:
通過對以上算法的不斷叠代,我們求得了最好的假設h(x),其中紅色“x”的軌跡,就是算法叠代的過程。
線性回歸(一)