這是機器學習知識體系中的線性回歸內容,完整的知識體系可以查看這里。
機器學習
什么是機器學習?業界有如下定義:
• ArthurSamuel(1959).MachineLearning:Fieldof study that gives computers the ability to learn without being explicitly programmed.
• TomMitchell(1998)Well-posed Learning Problem: 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 experience E.
通常情況下,人類進行編程讓機器完成一項工作,需要事先定義好一系列程序邏輯,機器然后根據編寫的代碼來執行,這種方式其實人類定義的規則,機器僅僅是運算執行而已。機器學習強調的是“without explicitly programmed”,通過機器根據某些經驗數據,自我歸納總結算法,從而對一些新的數據進行准確的預測推導。
常見的應用場景包括:
1. 數據挖掘
2. 手寫識別、自然語言處理(NLP)、計算機視覺
3. 產品推薦系統
4. ...
監督學習和無監督學習
機器學習方式大體上分為兩種類別:監督學習和非監督學習。
監督學習指的是人類給機器一大堆標示(label)過的數據,通常指機器通過學習一系列(,
)數據,X代表輸入數據(特征Feature),Y代表輸出數據,然后自我推導到X -> Y的公式,用於未來其他數據的預測判斷使用。監督學習根據輸出數據又分為回歸問題(Regression)和分類問題(Classfication)。回歸問題通常輸出是一個連續的數值,分類問題的輸出是幾個特定的數值。
舉例如下:
(a) 回歸問題 - 給定一張人臉照片,估計出這個人的年齡(年齡輸出是一個連續的數值)
(b) 分類問題 - 假定一個人患有腫瘤,判斷是為惡性還是良性(惡性和良性的輸出是幾個特定的數值)
回歸問題 - 房價預測
分類問題 - 腫瘤惡性/良性判斷
無監督學習所學習的數據沒有屬性或標簽這一概念 也就是說所有的數據都是一樣的沒有區別,通常給的數據是一系列(),並不存在Y的輸出數據。所以在無監督學習中,我們只有一個數據集,沒人告訴我們該怎么做,我們也不知道每個數據點究竟是什么意思,相反它只告訴我們現在有一個數據集,你能在其中找到某種結構嗎?對於給定的數據集,無監督學習算法可能判定,該數據集包含不同的聚類,並且能夠歸納出哪些數據是一個聚類。
模型表達
在建立數學模型之前,先約定好一些表達形式:
- 代表輸入數據 (features)
- 代表輸出數據(target)
- 代表一組訓練數據(training example)
m - 代表訓練數據的個數
n - 代表特征數量
監督學習目標就是,假定給一組訓練數據,可以學習到一個函數方法h,可以使得h(x) -> y。這個函數方法h被稱為假設(hypothesis)。整體流程如下:
代價函數
對於線性回歸而言,函數h的表達式如下:
我們通常指定:
如果使用線性代數來表達的話
,
, 其中
是
矩陣的轉置(Transpose)。
那么對於一系列訓練數據,如何獲得最優的成為解決問題的核心。直觀上而言,我們希望獲取一組
值,使得h(x)越接近y越好。於是定義這個衡量標准為代價函數(Cost Function)如下:
這個函數又稱為Squared Error Function。
我們看下兩個參數的Cost Function圖像通常如下:
它是一個弓形的圖像,這個弓形的最低點就是的最優解。
梯度下降算法
對於線性回歸問題,我們需要解決的事情往往如下:
定義出Cost Function -
希望能夠找到一組,能夠最小化
,即
梯度下降算法步驟如下:
1. 隨機選擇一組
2. 不斷的變化,讓
變小
j=0,1,...n,是所有n+1個值同時進行變化。α 是代表學習速率。
是Cost Function對
的偏導數。
3. 直到尋找到最小值
偏導求解如下:
因此最終的梯度下降算法表達如下:
從Cost Function的圖上,我們可以看到選擇最優解的過程
尋找到局部最優解1
尋找到局部最優解2
從上面兩個圖可以看出,尋找最優解的過程很想是在下山,沿着下山的路下來,並最終到達一個局部的底部保持不變。
正規方程Normal Equation
梯度下降算法給出了一種方法可以最小化Cost Function。正規方程(Normal Equation)是另外一種方法,它使用非常直接的方式而不需要進行迭代的算法。在這個方法中,我們通過對J取對應的的偏導數,然后將偏導數設置為0。通過推導,正規方程如下:
梯度下降算法和正規方程對比如下:
梯度下降算法 | 正規方程 |
需要選擇學習速率參數 | 不需要學習速率參數 |
需要很多次迭代 | 不需要迭代 |
![]() |
![]() |
n如果很大依舊還能工作 | n如果很大,速度會非常慢 |
因此兩種方法能否工作取決於n(特征x的數量)的大小,如果n很大(> 10000),那么使用梯度下降算法是比較明智的選擇。
=================華麗的分割線===========================
有興趣同學可以關注微信公眾號奶爸碼農,不定期分享投資理財、IT相關內容:
