說句廢話,相信大多數人和我一樣,最開始學習機器學習遇到的第乙個模型便是線性回歸,而且是一元線性回歸,但就這個模型,其實包含了很多的知識點,矩陣計算,最小二乘、梯度下降等知識點。我認為非常的有趣。這裡只是乙個簡單的介紹。
1問題的引入
假設有乙個房屋銷售的資料如下:
面積銷售**
123250
150320
87160
102220……
我們可以做出乙個圖,x軸是房屋的面積。y軸是房屋的售價,如下:
如果來了乙個新的面積,假設在銷售價錢的記錄中沒有的,我門要對其進行**要怎麼辦?(當然,影響和**房價的因素肯定不只面積一點,這裡為了簡化模型和方便理解只採用了這一點)
我們可以用一條曲線去盡量準的擬合這些資料,然後如果有新的輸入過來,我們可以在將曲線上這個點對應的值返回。如果用一條直線去擬合,可能是下面的樣子:
綠色的點就是我們想要**的點。
首先給出一些概念和常用的符號。
房屋銷售記錄表:訓練集(training set)或者訓練資料(training data), 是我們流程中的輸入資料,一般稱為x
房屋銷售價錢:輸出資料,一般稱為y
擬合的函式(或者稱為假設或者模型):一般寫做 y = h(x)
訓練資料的條目數(#training set),:一條訓練資料是由一對輸入資料和輸出資料組成的輸入資料的維度n (特徵的個數,#features)
這個例子的特徵是兩維的,結果是一維的。然而回歸方法能夠解決特徵多維,結果是一維多離散值或一維連續值的問題。
2模型的構建
線性回歸假設特徵和結果滿足線性關係。其實線性關係的表達能力非常強大,每個特徵對結果的影響強弱可以由前面的引數體現,而且每個特徵變數可以首先對映到乙個函式,然後再參與線性計算。這樣就可以表達特徵與結果之間的非線性關係。
我們用x1,x2…xn 去描述feature裡面的分量,比如x1=房間的面積,x2=房間的朝向,等等,我們可以做出乙個估計函式:
我們程式也需要乙個機制去評估我們θ是否比較好,所以說需要對我們做出的h函式進行評估,一般這個函式稱為損失函式(loss function)或者錯誤函式(error function),描述h函式不好的程度,在下面,我們稱這個函式為j函式
在這兒我們可以認為錯誤函式如下:
這個錯誤估計函式是去對x(i)的估計值與真實值y(i)差的平方和作為錯誤估計函式,前面乘上的1/2是為了在求導的時候,使得係數消失。
至於為何選擇平方和作為錯誤估計函式,講義後面從概率分布的角度講解了該公式的**。
如何調整θ以使得j(θ)取得最小值有很多方法,比如有最小二乘法(min square),是一種完全是數學描述的方法,和梯度下降法(gradient descent)。
4最小二乘法
(計算方法裡似乎正在學)
將訓練特徵表示為x矩陣,結果表示成y向量,仍然是線性回歸模型,誤差函式不變。那麼θ可以直接由下面公式得出
但此方法要求x是列滿秩的,而且求矩陣的逆比較慢。
5梯度下降法
我的目標是找到θ
\theta
θ使得我的錯誤函式j(θ
)j(\theta)
j(θ)
變為最小值,是乙個求極小值的問題。
梯度下降法是按下面的流程進行的:
1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是乙個全零的向量。
2)改變θ的值,使得j(θ)按梯度下降的方向進行減少。
梯度方向由j(θ)對θ的偏導數確定,由於求的是極小值,因此梯度方向是偏導數的反方向。結果為
該演算法的缺點是,選擇有些初始向量可能會讓演算法陷入區域性最優解
多元線性回歸 ML
之前我們涉及過線性回歸,不過那個是單元的 乙個未知數x 這回我們來學習一下多元線性回歸 多個x 首先我們給一組房子資料 我們給出幾個關於多元線性回歸的概念 我們把 設為y,其他設為x 可以用向量的方式表示。比如x 2 多元線性回歸方程就為 還可以寫成 h x 0x0 1x1 2x2 3x3 nxn ...
ML9 線性回歸
from future import unicode literals import pickle import numpy as np import sklearn.linear model as lm import sklearn.metrics as sm import matplotlib....
ML 線性回歸系列(三) 嶺回歸
華電北風吹 日期 2015 11 25 本文主要對嶺回歸 ridge regression 進行總結。本系列的第一篇中線性回歸的轉化為如下的無約束優化問題 min m i 1 y i tx i 2 0 1 其中,x i r n 1 表示每個樣本都是n維向量,y i 表示樣本x i 對應的標籤,rn ...