1. 程式人生 > >小 樓 一 夜 聽 春 雨

小 樓 一 夜 聽 春 雨

http://www.cnblogs.com/pinard/p/5976811.html

最小二乘法是用來做函式擬合或者求函式極值的方法。在機器學習,尤其是迴歸模型中,經常可以看到最小二乘法的身影,這裡就對我對最小二乘法的認知做一個小結。

1.最小二乘法的原理與要解決的問題 

    最小二乘法是由勒讓德在19世紀發現的,原理的一般形式很簡單,當然發現的過程是非常艱難的。形式如下式:

      目標函式 = Σ(觀測值-理論值)2

    觀測值就是我們的多組樣本,理論值就是我們的假設擬合函式。目標函式也就是在機器學習中常說的損失函式,我們的目標是得到使目標函式最小化時候的擬合函式的模型。舉一個最簡單的線性迴歸的簡單例子,比如我們有m個只有一個特徵的樣本:

    (x(1),y(1)),(x(2),y(2),...(x(m),y(m))

    樣本採用下面的擬合函式:

    hθ(x)=θ0+θ1x

    這樣我們的樣本有一個特徵x,對應的擬合函式有兩個引數θ0θ1

需要求出。

    我們的目標函式為:

    J(θ0,θ1)=i=1m(y(i)hθ(x(i))2=i=1m(y(i)θ0θ1x(i))2

    用最小二乘法做什麼呢,使J(θ0,θ1)

最小,求出使J(θ0,θ1)最小時的θ0θ1

,這樣擬合函式就得出了。

    那麼,最小二乘法怎麼才能使J(θ0,θ1)

最小呢?

2.最小二乘法的代數法解法

    上面提到要使J(θ0,θ1)

最小,方法就是對θ0θ1分別來求偏導數,令偏導數為0,得到一個關於θ0θ1的二元方程組。求解這個二元方程組,就可以得到θ0θ1

的值。下面我們具體看看過程。

    J(θ0,θ1)θ0

求導,得到如下方程:

    i=1m(y(i)θ0θ1x(i))=0

                                 ①

    J(θ0,θ1)θ1

求導,得到如下方程:

    i=1m(y(i)θ0θ1x(i))x(i)=0

         ②

    ①和②組成一個二元一次方程組,容易求出θ0θ1

的值:

    

θ0=i=1m(x(i))2i=1my(i)i=1mx(i)i=1mx(i)y(i)/mi=1m(x(i))2(i=1mx(i))2

    θ1=mi=1mx(i)y(i)i=1mx(i)i=1my(i)/mi=1m(x(i))2(i=1mx(i))2

    這個方法很容易推廣到多個樣本特徵的線性擬合。

    擬合函式表示為 hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn

, 其中θi (i = 0,1,2... n)為模型引數,xi (i = 0,1,2... n)為每個樣本的n個特徵值。這個表示可以簡化,我們增加一個特徵x0=1

,這樣擬合函式表示為:

    hθ(x0,x1,...xn)=i=0nθixi

    損失函式表示