機器學習入門之旅(三)線性模型之線性回歸與最小二乘法
在前面感知器的介紹部分,我們採用的形式:
對於線性回歸的表達形式,只是將輸出從兩個離散的值變為了連續的值:
此時,如何從訓練數據集中學習呢?一種直觀的想法就是要求樣本點與的偏離越小越好。通常,我們採用均方誤差作為偏離程度的度量,因此定義損失函數,並且試圖使其最小化:
註:均方誤差有非常好的幾何意義,對應著歐幾里得距離。當然,也可以開發其他形式的損失函數,這裡只討論均方誤差。
2. 最小二乘法(LMS)
基於均方誤差最小化進行模型求解的方法,稱為「最小二乘法」(Least Square Method)。是關於w的凸函數,因此其最值的取值位置是其關於w的導數為零的位置。很多人不太習慣向量-矩陣化的表示方式,為了便於理解,我先用展開的形式來表示:
顯然,對於可以列出j個等式以求解最終的封閉解,只是形式可能會相當的複雜。下面只列出輸入屬性只有一個的情形,即一元線性回歸:
下面討論向量化的表達方式,首先對於訓練數據集
實際代表的是下面m個算式:
將輸入和輸出分別用矩陣和向量的形式來表示:
最終學得的線性回歸模型為:
這裡,我們最終求得了解析解。但是,我們回憶一下高中就學過的解方程組,如果變數的個數比方程的個數還多呢?對應我們的機器學習中的情況,就是特徵的數量超過樣本的數量,此時可解出多個解。具體選擇哪個解,由演算法的歸納偏好決定。此時,常見的做法就是引入正則化(regularization)。
(上式運算過程中需要對進行求逆運算。根據矩陣的性質,矩陣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)
推薦閱讀:
※支持向量機(SVM)——SMO演算法
※一種分散式環境下的協作機器學習模式
※Character人物之線條表現
※常見的深度學習模型--卷積神經網路概述
※人工智慧——狀態機