Linear Regression


一、什麼是 Linear Regression

Linear Regression(線性迴歸)是一個非常簡單的Error Base ML演算法。
Regression function 是一個用來預測數值的函數,而Linear Regression就是以線性函數做預測。
常見應用在像是股市的預測、房價預估等問題。


二、Regression function的設計
我們需要三個步驟來定義這個問題
  1. 設計model
  2. function的優化
  3. 找出最優的function

第一步:設計model。

所謂的model就是很多個數學式的集合,透過這個數學式的集合我們可以順利的預測的我們要的值。

這些式子一般最基礎版本就是wx+b(其實就是一元一次方程式啦),不過我們必須要根據情況更換成別的function,例如資料分布看起來像二次方程式,我們最好得把function替換成二次方程式;有N個特徵值(feature)就將它換成N元一次方程式等等。

第二步:對function進行優化。

在設計好model之後我們就要來優化它啦!

在談論優化問題前我們要先來談談什麼是監督式學習。
所謂的監督式學習就是我們得出題目(資料與model)考電腦,而電腦必須學習(調整model參數)以得到好的成績(高正確率),不過如果題目出錯(不論是資料或是model)就不會有正確答案。

機器學習的優化方法就是設計一個 loss function 計算每一筆資料的誤差值,而計算方式有許多種,而最常見的是最小平方法。
我們可以假定每筆資料都是一個座標(X , Y),X就是我們輸入的feature,Y就是他的值。至於為何最小平方法可以找到最小的loss呢?我們可以參考這一篇文章

第三步:選擇最優的參數

在尋找最小的loss的過程中,我們可以用暴力法去把每一個w和b算出來,透過暴力法也許我們可以找到一個Global minimun (最佳解),但是因為w跟b有無限多個,也許等到天荒地老我們也沒辦法找到它,因此我們將會採用一個方法叫做Gradient Descent
Gradient Descent的方法就是一開始先將loss function的參數隨機設定成W0,接著我們對參數w做偏微分便可得到當前loss function的斜率,若斜率為負,我們增加W0;若為正,就減少W0;斜率的絕對值越大,那麼更新的速度就會越快,Gradent Descent會一直重複上述動作做直到微分值為0。

將上述的中文敘述寫成數學式就會變成這張投影片,而Learning rate備標註為常數miu,miu會決定每一次更新要讓function走多長的距離。

我們把loss function的分布圖畫成一個二維的圖就會長的像上面這樣,紅色的線就是做Gradient Descent後的得到向量(Gradient),Gradient就是loss的法線向量,當我們一直重複做Gradient Descent就會前往最中間的點也就是local minima。
如果看不懂可以看莫凡的影片,看完之後對Gradeint Descent的運作就會有比較好的了解。

如何評估結果?
我們可以透過模型在訓練資料(Training data)以及測試資料(Testing Data)上的表現來判斷一個模型的好壞
如果在訓練資料的表現很差,則代表Under fitting,此時就要回到第一步重新設計模型
如果再訓練資料良好,而在測試資料的表現很差,則代表Over fitting,此時就要透過其他方式來改善(詳見Error base第三章)