almost 3 years ago

前面一篇是使用數值的梯度下降法求解,但是如同之前所說。針對線性問題,使用最小平方法時(Least Mean Square)必定保有解析解。成本函數的極值發生在其微分為零之處。可觀察式(3)形式,得到 兩邊同乘以 可得到

$$
\vec \theta = \left( \tilde x^T \tilde x \right)^{-1}\tilde{x}^T \vec y \tag{1}
$$

上式(1)即為線性迴歸模型的解析解。


實例:

簡單線性迴歸單元中,我們已經知道上網時間和交友平台上的好友數,有正相關性$$\theta_1 = 0.9038, \theta_0 = 22.9475$$ 而相關係數為$$r = 0.57$$。但是研究團隊發現,除了好友數,似乎還有其他的因子影響上網時間,像是一個人一天的工作時間(work hours,)和是否有博士學位(PhD,)都有可能。假設我們蒐集了使用者這些相關資料。利用式(1)可以很快計算得到
$$\left[ \theta_0, \theta_1, \theta_2, \theta_3 \right] = \left[ 30.57901812, 0.97250518, -1.86503639, 0.9232007 \right] $$

python中可以利用numpy下的linalg.inv方法實現反矩陣計算

def LinearRegression(self):
        '''
        analytic solution:  
        theta = (X.transpose * X)^-1 *X.transpose * Y
        '''
        self.theta = np.dot(np.dot(np.linalg.inv(np.dot(self.x.T,self.x)),self.x.T),self.y)

(note:上述計算結果和直接使用sklearn下的linear_model.LinearRegression()一致!)

相關係數,從有顯著提昇。也可以發現上網時間,會隨著工作時間增加而減少。那博士學歷呢?

仔細分析這個問題,雖然我們已經求得各個線性迴歸的係數。但是卻無從確認每一個係數的正確性。意思是

  • 當資料小幅變動時,是否會隨著資料改變而有巨幅改變?
  • 當選擇的變數之間,有高度的相關性時(例如,收入與繳稅金額)
  • 到底那些才是「真正」影響結果的變數()而哪些不是?

為了回答以上問題,才有所謂的Ridge regression/ Lasso regression的出現。這部份等下一單元再來講解~

← 多變數線性迴歸(一)-數值篇 多變數線性迴歸(三)Ridge Regression →
 
comments powered by Disqus