1. 程式人生 > >迴歸問題和核函式

迴歸問題和核函式

轉自:https://blog.csdn.net/vshuang/article/details/5512853

迴歸問題:

1.    問題描述:

給定多個自變數、一個因變數以及代表它們之間關係的一些訓練樣本,如何來確定它們的關係?

2.    數學描述

建模:目的就是求這個因變數關於這多個自變數的函式。而這個函式能夠比較精確的表示這個因變數和這多個自變數之間的關係。

3.    問題深入

舉個例子我們有代表兩個自變數x1,x2和一個因變數y之間的關係的一些訓練樣本(比如(x1=0,x2=1,y=0)等)。現在我們來求y關於x1、x2的函式就可能會出現各種各樣的情況。

比如 y = a*x1+b*x2;  y =a*Sqrt(x1)+b*Sqrt(x2);  y = a*exp(x1)+b*exp(-x2);  y=x1*x2;各種各樣的情況都很可能。

但是我們現在只有這些訓練樣本,我們怎麼來確定它們的模型呢和各自模型相應的引數呢。很難判斷。

從這裡可以看出其實線性迴歸的侷限性很大。它只是簡單的建立一個y=a*x1+b*x2的關係的一個模型,然後來擬合求得a、b的值。就試圖來表示y和x1、x2之間的所有關係,顯然不是很準確的。如果當前y=x1*x2的話,實際中,無論你怎樣去擬合,也很難達到一個理想的效果。

我們該怎麼辦?

1、  線性迴歸:如果我們要採用線性迴歸方法,首先我們得證明這個問題確實是線性問題。或者是說y確實等於a*x1+b*x2。我們要先試著去做一些相關的線性分析。證明y與x1、x2的線性相關非常高。或者我們也可以先計算出來結果,然後拿部分訓練樣本值對放到模型裡去測試,如果誤差超出一定值,我們也可以說明這個模型是不適合的。否則,我們就可以通過採用線性迴歸方法來求得相應的模型。

2、  線性模型不適合的話,我們要採用其它方式的建模(非線性模型):比如y=a*Sqrt(x1)+b*sqrt(x2),然後求出a、b,然後又拿部分訓練樣本值去測試,看這個模型合不合適。重複這個過程。如果你能堅持下去很多很多年,總會找到一個合適的模型的。

3、  即使找到了相應的模型,也是一個非線性迴歸模型:(當然除了像2說的那樣不斷嘗試,通過理解所研究物件的物理背景或散點圖可幫助我們選擇適當的非線性迴歸方程)(非線性迴歸函式模型有雙曲線、拋物線、冪函式、指數函式等等)

4、  儘管如此,非線性迴歸方程絕大多數時候還是非常難求,尤其是自變數多,維度比較高的情況下。兩種方法:1降維;2非線性空間化為線性空間。

5、  降維(可以解決維度高的問題,但是解決不了非線性的問題):主成分分析(PCA),獨立成分分析(ICA)可以得到最相關的幾個自變數。(如果用核函式此步驟可以省略),這樣可以將自變數的個數減少到最重要的幾個。

6、  非線性空間轉換到線性空間:

線性空間對應的函式模型為 ,式子中的 是一個一個的權值(在嚴格的證明過程中,這些α被稱為拉格朗日乘子),而xi是樣本點,因而是向量,n就是總樣本點的個數。為了方便描述,以下開始嚴格區別數字與向量的乘積和向量間的乘積,我會用α1x1表示數字和向量的乘積,而用<x1,x2>表示向量x1,x2的內積(也叫點積,注意與向量叉積的區別)。因此g(x)的表示式嚴格的形式應該是:

g(x)=<w,x>+b。而 (這裡的 是一個單位向量如(1,0000))

所以 ,其中 表示的即為內積空間

非線性轉化,主要通過改變內積空間替換成另外一個核函式空間而從而轉化到另外一個線性空間。(想起來好像不存在,可是萬幸這樣的核函式還是存在的,雖然有點難理解)

加入核函式之後上述函式式變成 ,在這個空間里居然是線性的 和 之間居然變成了近似線性的。這樣這個問題也可以用線性迴歸來解決。

7、  支援向量迴歸:

殊途同歸的另外一種解釋方式(從支援向量說起的)

核函式+迴歸(但這裡的迴歸利用了支援向量)

4.    總結

線性迴歸只是用來完成針對多個自變數、一個因變數之間的關係的一個線性建模的解決方法。

對於維數多(維數多的情況下,有多重共線性的影響,同時大多數時候也是非線性問題)、非線性問題,線性迴歸往往無能為力。

核函式是對向量內積空間的一個擴充套件,使得非線性迴歸的問題,在經過核函式的轉換後可以變成一個近似線性迴歸的問題。

所以絕大部分非線性迴歸問題是可以通過核函式+線性迴歸的思路來完成的。但在核函式的選擇上面可能需要花一點時間,但是由於核函式的通用性,用了核函式,一般效果都還行。

如果覺得需要降維的話,可以考慮採用PCA、ICA。

(1核函式發展歷史
早在1964年Aizermann等在勢函式方法的研究中就將該技術引入到機器學習領域,但是直到1992年Vapnik等利用該技術成功地將線性SVMs推廣到非線性SVMs時其潛力才得以充分挖掘。而核函式的理論則更為古老,Mercer定理可以追溯到1909年,再生核希爾伯特空間(ReproducingKernel Hilbert Space, RKHS)研究是在20世紀40年代開始的。

(2核函式方法原理
    根據模式識別理論,低維空間線性不可分的模式通過非線性對映到高維特徵空間則可能實現線性可分,但是如果直接採用這種技術在高維空間進行分類或迴歸,則存在確定非線性對映函式的形式和引數、特徵空間維數等問題,而最大的障礙則是在高維特徵空間運算時存在的“維數災難”。採用核函式技術可以有效地解決這樣問題。
    設x,z∈X,X屬於R(n)空間,非線性函式Φ實現輸入間X到特徵空間F的對映,其中F屬於R(m),n<<m。根據核函式技術有:

       K(x,z) =<Φ(x),Φ(z) >                (1)
    其中:<, >為內積,K(x,z)為核函式。從式(1)可以看出,核函式將m維高維空間的內積運算轉化為n維低維輸入空間核函式計算,從而巧妙地解決了在高維特徵空間中計算的“維數災難”等問題,從而為在高維特徵空間解決複雜的分類或迴歸問題奠定了理論基礎。

(3核函式特點

    核函式方法的廣泛應用,與其特點是分不開的:

    1)核函式的引入避免了“維數災難”,大大減小了計算量。而輸入空間的維數n對核函式矩陣無影響,因此,核函式方法可以有效處理高維輸入。

    2)無需知道非線性變換函式Φ的形式和引數.

    3)核函式的形式和引數的變化會隱式地改變從輸入空間到特徵空間的對映,進而對特徵空間的性質產生影響,最終改變各種核函式方法的效能。

    4)核函式方法可以和不同的演算法相結合,形成多種不同的基於核函式技術的方法,且這兩部分的設計可以單獨進行,並可以為不同的應用選擇不同的核函式和演算法。

(4)常見核函式

    核函式的確定並不困難,滿足Mercer定理的函式都可以作為核函式。常用的核函式可分為兩類,即內積核函式和平移不變核函式,如:
 1)高斯核函式K(x,xi) =exp(-||x-xi||2/2σ2
  2)多項式核函式K(x,xi)=(x·xi+1)^d, d=1,2,…,N; 
  3)感知器核函式K(x,xi) =tanh(βxi+b);
  4)樣條核函式K(x,xi) = B2n+1(x-xi)。

(5核函式方法實施步驟

    核函式方法是一種模組化(Modularity)方法,它可分為核函式設計和演算法設計兩個部分,具體為:

    1)收集和整理樣本,並進行標準化;
    2)選擇或構造核函式
    3)用核函式將樣本變換成為核函式矩陣,這一步相當於將輸入資料通過非線性函式對映到高維
特徵空間

    4)在特徵空間核函式矩陣實施各種線性演算法;

    5)得到輸入空間中的非線性模型。

    顯然,將樣本資料核化成核函式矩陣是核函式方法中的關鍵。注意到核函式矩陣是l×l的對稱矩陣,其中l為樣本數。

(6核函式在模式識別中的應用
    1)新方法。主要用在基於結構風險最小化(Structural Risk Minimization,SRM)的SVM中。

2)傳統方法改造。如核主元分析(kernel PCA)、核主元迴歸(kernel PCR)、核部分最小二乘法(kernel PLS)、核Fisher判別分析(Kernel Fisher Discriminator, KFD)、核獨立主元分析(Kernel Independent Component Analysis,KICA)等,這些方法在模式識別等不同領域的應用中都表現了很好的效能。