機器學習入門之旅(三)線性模型之線性回歸與最小二乘法

1. 線性回歸模型

在前面感知器的介紹部分,我們採用的形式:

對於線性回歸的表達形式,只是將輸出從兩個離散的值yin left{ -1,+1 
ight} 變為了連續的值yin R:

此時,如何從訓練數據集中學習w= (omega_{0},omega_{1},...,omega_{n})呢?一種直觀的想法就是要求樣本點(x^{(i)},y^{(i)})h(x)的偏離越小越好。通常,我們採用均方誤差作為偏離程度的度量,因此定義損失函數,並且試圖使其最小化:

註:均方誤差有非常好的幾何意義,對應著歐幾里得距離。當然,也可以開發其他形式的損失函數,這裡只討論均方誤差。

2. 最小二乘法(LMS)

基於均方誤差最小化進行模型求解的方法,稱為「最小二乘法」(Least Square Method)。J(w)是關於w的凸函數,因此其最值的取值位置是其關於w的導數為零的位置。很多人不太習慣向量-矩陣化的表示方式,為了便於理解,我先用展開的形式來表示:

顯然,對於omega_{0}, omega_{1}, ...,omega_{j}可以列出j個等式以求解最終的封閉解,只是形式可能會相當的複雜。下面只列出輸入屬性只有一個的情形,即一元線性回歸:

下面討論向量化的表達方式,首先對於訓練數據集

實際代表的是下面m個算式:

將輸入和輸出分別用矩陣和向量的形式來表示:

最終學得的線性回歸模型為:

這裡,我們最終求得了解析解。但是,我們回憶一下高中就學過的解方程組,如果變數的個數比方程的個數還多呢?對應我們的機器學習中的情況,就是特徵的數量超過樣本的數量,此時可解出多個解。具體選擇哪個解,由演算法的歸納偏好決定。此時,常見的做法就是引入正則化(regularization)。

(上式運算過程中需要對進行求逆運算。根據矩陣的性質,矩陣A可逆等效於|A|
e 0(非奇異矩陣),並且A^{-1} =A^*/|A|  A^{*} 為A的伴隨矩陣。奇異矩陣在R語言中求逆時,會報錯:system is computationally singular : reciprocal condition number = *)。

3. 實例

從鏈家網上抓取了上海某小區二手房掛牌價與面積的數據(25組),如下表:

在可能的情況下,我們盡量現將數據以圖表的形式表示出來,有助於更直觀地了解數據,發現規律。

好,現在我們該如何去預測該小區其他房子的價格呢?

library(RODBC)library(xlsx)house_price <- read.xlsx("E:\R語言資料\House price.xlsx", 1)plot(house_price)attach(house_price)plot(面積, 掛牌價)lm.pri <- lm(掛牌價~面積)summary(lm.pri)abline(lm.pri)title("房價VS面積")detach(house_price)

最終的結果為: 掛牌價 = 面積*7.3148 – 25.8483。好吧,7萬多的單價,果然很魔都,努力賺錢吧。
推薦閱讀:

支持向量機(SVM)——SMO演算法
一種分散式環境下的協作機器學習模式
Character人物之線條表現
常見的深度學習模型--卷積神經網路概述
人工智慧——狀態機

TAG:機器學習 | 線性回歸 | 人工智慧演算法 |