特征的非線性變換(Feature Non-linear Transformation)


有時候特征x和目標y不呈線性關系,線性模型y=wx+b不能很好地反映事物的規律或者無法對事物進行有效分類,因此此時我們需要使用非線性模型。

(x=([x1,x2,...,xn])T,w=([w1,w2,...,wn])T

 

比如說下圖的分類問題,顯然無論用什么樣的直線都很難把圈圈和叉叉很好地分隔開來,但是用一個大圓圈卻能很好地進行分隔。

 

這個大圓圈就是使用了非線性模型擬合的結果,以往線性模型中的分類超平面(這里是直線)變成了圓:−x12​−x22​+0.6=0。

 

可以看到,此時假設函數的特征不是線性模型的(x1,x2),而是變成了(x1^2,x2^2)。我們通過映射關系z=x2,就可以把特征變為(z1,z2)。此時就相當於把x域中的二次式轉換為z域中的一次式,得到線性組合

 

我們把xn​→zn​這個轉換過程稱之為特征變換(Feature Transform)(這里是非線性變換)。通過特征的非線性變換,可以將非線性模型轉換為另一個域中的線性模型來求解。具體過程如下:把原始x值通過映射關系轉換成z值,數據由(xn​,yn)變為(zn​,yn);在z域中用線性算法對轉換后的數據進行訓練,得到最佳w值;訓練好線性模型之后,再將z替換為x的映射關系。

 

需要注意的是:特征變換只是得到新特征的一種方式,可以和任何線性模型結合使用。將線性模型變為非線性模型,並不需要改變模型本身,只需要改變特征輸入即可。比如原本線性模型有一個特征x1,其有兩個輸入值:

[[2]
 [3]]

變換為二次模型(quadratic model)后,新的特征輸入就變為:

[[4]
 [9]]

 

上面的例子是將原始特征x轉變為二次式x2,也可以將x轉變為其他形式,例如:可以將特征x變為log(x),exp(x),x0.5,sin(x),cos(x),等等。

 

下面再來說一下結構化的變換方式:多項式變換(Polynomial Transformation)

 

如果原本的特征x是2維的,即有2個特征:(x1,x2),那么它的二次多項式為:(x1,x2,x1^2,x1x2,x2^2,1),一共有6項。

 

如果原本的特征x是d維的,即有d個特征:(x1x2xd),那么做一個完全的二次變換(其包含所有的二次項、一次項和常數項,此時得到非線性組合:C*d^1+C*d^2+1)后得到的特征維度是:d(d+3)​/2+1。

 

如果變換的階數更高呢?推廣上面的結論,假設階數為Q,那么對於d維的特征x,將其變換為Q次多項式后,對應的z域的特征維度大約為:

 

 

 

由上圖可以看到,將特征x進行多項式變換后,計算和儲存新特征的時間復雜度和空間復雜度是O(Qd)---Q的d次方。隨着Q和d的增大,計算量和儲存量都會變得很大。這就是線性模型變為多項式非線性模型所要付出的代價。

 

另一個所要付出的代價則更嚴重,那就是模型復雜度會變高(假設空間的VC維近似等於特征的個數)。我們知道,模型復雜度越高,我們所需要的訓練數據也就越多,否則將很容易發生過擬合現象。因此,應先從階數低的變換開始做起,以防止過擬合問題的發生。

 

附注:如果特征輸入值很小,那么應變換為勒讓德多項式(Legendre polynomials)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM