機器學習入門 線性迴歸及梯度下降
阿新 • • 發佈:2018-11-09
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
本文會講到:(1)線性迴歸的定義
(2)單變數線性迴歸
(3) cost function:評價線性迴歸是否擬合訓練集的方法(6)多變數線性迴歸
Linear Regression 注意一句話:多變數線性迴歸之前必須要Feature Scaling!
方法:線性迴歸屬於監督學習,因此方法和監督學習應該是一樣的,先給定一個訓練集,根據這個訓練集學習出一個線性函式,然後測試這個函式訓練的好不好(即此函式是否足夠擬合訓練集資料),挑選出最好的函式(cost function最小)即可;
我們能夠給出單變數線性迴歸的模型: 我們常稱x為feature,h(x)為hypothesis;
從上面“方法”中,我們肯定有一個疑問,怎麼樣能夠看出線性函式擬合的好不好呢? 我們需要使用到Cost Function(代價函式),代價函式越小,說明線性迴歸地越好(和訓練集擬合地越好),當然最小就是0,即完全擬合;
舉個實際的例子: 我們想要根據房子的大小,預測房子的價格,給定如下資料集:
根據以上的資料集畫在圖上,如下圖所示: 我們需要根據這些點擬合出一條直線,使得cost Function最小; |
雖然我們現在還不知道Cost Function內部到底是什麼樣的,但是我們的目標是:給定輸入向量x,輸出向量y,theta向量,輸出Cost值;
以上我們對單變數線性迴歸的大致過程進行了描述;
Cost Function
Cost Function的用途:對假設的函式進行評價,cost function越小的函式,說明擬合訓練資料擬合的越好; 下圖詳細說明了當cost function為黑盒的時候,cost function 的作用;
但是我們肯定想知道cost Function的內部構造是什麼?因此我們下面給出公式: 其中: 表示向量x中的第i個元素; 表示向量y中的第i個元素; 表示已知的假設函式; m為訓練集的數量;
比如給定資料集(1,1)、(2,2)、(3,3) |
如果theta0 一直為 0, 則theta1與J的函式為: 如果有theta0與theta1都不固定,則theta0、theta1、J 的函式為:
當然我們也能夠用二維的圖來表示,即等高線圖;
注意:如果是線性迴歸,則costfunctionJ與的函式一定是碗狀的,即只有一個最小點;
以上我們講解了cost function 的定義、公式;
Gradient Descent(梯度下降)
但是又一個問題引出了,雖然給定一個函式,我們能夠根據cost function知道這個函式擬合的好不好,但是畢竟函式有這麼多,總不可能一個一個試吧? 因此我們引出了梯度下降:能夠找出cost function函式的最小值; 梯度下降原理:將函式比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;
當然解決問題的方法有很多,梯度下降只是其中一個,還有一種方法叫Normal Equation;
方法: (1)先確定向下一步的步伐大小,我們稱為Learning rate; (2)任意給定一個初始值: ; (3)確定一個向下的方向,並向下走預先規定的步伐,並更新 ; (4)當下降的高度小於某個定義的值,則停止下降;
演算法:
特點: (1)初始點不同,獲得的最小值也不同,因此梯度下降求得的只是區域性最小值; (2)越接近最小值時,下降速度越慢;
問題:如果初始值就在local minimum的位置,則會如何變化? 答:因為 已經在local minimum位置,所以derivative 肯定是0,因此 不會變化;
如果取到一個正確的值,則cost function應該越來越小; 問題:怎麼取 值? 答:隨時觀察 值,如果cost function變小了,則ok,反之,則再取一個更小的值;
下圖就詳細的說明了梯度下降的過程:
從上面的圖可以看出: 初始點不同,獲得的最小值也不同,因此梯度下降求得的只是區域性最小值;
注意:下降的步伐大小非常重要,因為如果太小,則找到函式最小值的速度就很慢,如果太大,則可能會出現overshoot the minimum的現象;
下圖就是overshoot minimum現象:
如果Learning rate取值後發現J function 增長了,則需要減小Learning rate的值;
Integrating with Gradient Descent & Linear Regression
梯度下降能夠求出一個函式的最小值; 線性迴歸需要求出,使得cost function的最小;
因此我們能夠對cost function運用梯度下降,即將梯度下降和線性迴歸進行整合,如下圖所示:
梯度下降是通過不停的迭代,而我們比較關注迭代的次數,因為這關係到梯度下降的執行速度,為了減少迭代次數,因此引入了Feature Scaling;
Feature Scaling
此種方法應用於梯度下降,為了 加快梯度下降的執行速度; 思想:將各個feature的值標準化,使得取值範圍 大致都在-1<=x<=1之間;
常用的方法是Mean Normalization,即 或者: [X-mean(X)]/std(X);
舉個實際的例子, 有兩個Feature: (1)size,取值範圍0~2000; (2)#bedroom,取值範圍0~5; 則通過feature scaling後, |
練習題
我們想要通過期中開始成績預測期末考試成績,我們希望得到的方程為:
給定以下訓練集:
midterm exam | (midterm exam) | final exam |
89 | 7921 | 96 |
72 | 5184 | 74 |
94 | 8836 | 87 |
69 | 4761 | 78 |
max = 8836,min=4761,mean=6675.5,則x=(4761-6675.5)/(8836-4761) = -0.47;
多變數線性迴歸
前面我們只介紹了單變數的線性迴歸,即只有一個輸入變數,現實世界不可能這麼簡單,因此此處我們要介紹多變數的線性迴歸;
舉個例子: 房價其實由很多因素決定,比如size、number of bedrooms、number of floors、age of home等,這裡我們假設房價由4個因素決定,如下圖所示:
我們前面定義過單變數線性迴歸的模型:
這裡我們可以定義出多變數線性迴歸的模型:
Cost function如下:
如果我們要用梯度下降解決多變數的線性迴歸,則我們還是可以用傳統的梯度下降演算法進行計算:
總練習題:
1.我們想要根據一個學生第一年的成績預測第二年的成績,x為第一年得到A的數量,y為第二年得到A的數量,給定以下資料集:
x | y |
3 | 4 |
2 | 1 |
4 | 3 |
0 | 1 |
我們也可以通過vectorization的方法快速算出J(0,1):