特徵工程——categorical特徵 和 continuous特徵

看到有些介紹,“特徵分爲categorical特徵 和 continuous特徵“不解,查資料得

單個原始特徵(或稱爲變量)通常屬於以下幾類之一:

  • 連續(continuous)特徵;
  • 無序類別(categorical)特徵;
  • 有序類別(ordinal)特徵。

##連續特徵 除了歸一化(去中心,方差歸一),不用做太多特殊處理,可以直接把連續特徵扔到模型裏使用。

##無序特徵 可以使用One-hot(也叫One-of-k)的方法把每個無序特徵轉化爲一個數值向量。比如一個無序特徵color有三種取值:redgreenblue。那麼可以用一個長度爲3的向量來表示它,向量中的各個值分別對應於redgreenblue。如:

color取值 向量表示
red (1, 0, 0)
green (0, 1, 0)
blue (0, 0, 1)
##有序特徵 有些特徵雖然也像無序特徵那樣只取限定的幾個值,但是這些值之間有順序的含義。例如一個人的狀態status有三種取值:badnormalgood,顯然bad < normal < good

當然有些問題裏有序可能會很重要,這時候就不應該把其中的順序關係丟掉。一般的表達方式如下:

status取值 向量表示
bad (1, 0, 0)
normal (1, 1, 0)
good (1, 1, 1)

上面這種表達方式很巧妙地利用遞進表達了值之間的順序關係。

——————————————————————

以線性分類器Linear Regression (LinearReg)爲例,它是通過特徵的線性加權來預測因變量yy

y=wTx

但大部分實際情況下,yyxx都不會是這麼簡單的線性關係,甚至連單調關係都不會有。那麼直接把xx扔進LinearReg模型是怎麼也得不到好結果的。很多人會想着既然線性分類器搞不定,那就直接找個非線性的好了,比如高斯核的SVM。我們確實可以通過這種簡單換算法的方式解決這個簡單的問題。但對於很多實際問題(如廣告點擊率預測),往往特徵非常多,這時候時間約束通常不允許我們使用很複雜的非線性分類器。這也是爲什麼算法發展這麼多年,廣告點擊率預測最常用的方法還是Logistic Regression (LogisticReg)

【上述問題的解決辦法】——就是對原始特徵xx做轉化,把原來的非線性關係轉化爲線性關係

方法一:離散化 

最常用的轉化方式是對xx離散化(discretization),也就是把原來的值分段,轉化成一個取值爲0或1的向量。原始值落在某個段裏,向量中此段對應的元素就爲1,否則爲0。

離散化的目標是yy與轉化後向量裏的每個元素都保持比較好的線性關係。

  比如取離散點{0.5,1.5,2.5},通過判斷

xx屬於(−∞,0.5),[0.5,1.5)[1.5,2.5)[2.5,+∞)中哪段來把它離散化爲4維的向量。下面是一些例子的離散結果:

原始值xx 離散化後的值
0.1 (1, 0, 0, 0)
1.3 (0, 1, 0, 0)
3.2 (0, 0, 0, 1)
5.8 (0, 0, 0, 1)

離散化方法的關鍵是怎麼確定分段中的離散點。下面是常用的選取離散點的方法:

【1】等距離離散:顧名思義,就是離散點選取等距點。我們上面對xx取離散點{0.5,1.5,2.5}就是一種等距離散

【2】等樣本點離散:選取的離散點保證落在每段裏的樣本點數量大致相同

【3】畫圖觀察趨勢:以xx爲橫座標,yy爲縱座標,畫圖,看曲線的趨勢和拐點。通過觀察下面的圖我們發現可以利用3條直線(紅色直線)來逐段近似原來的曲線。把離散點設爲兩條直線相交的各個點,我們就可以把xx離散化爲長度爲3的向量

方法二:函數變換

函數變換直接把原來的特徵通過非線性函數做變換,然後把原來的特徵,以及變換後的特徵一起加入模型進行訓練。常用的變換函數見下表,不過其實你可以嘗試任何函數。

常用非線性函數f(x)f(x) xx的取值範圍
xαα(,+)α∈(−∞,+∞) (,+)(−∞,+∞)
log(x)log⁡(x) (0,+)(0,+∞)
log(x1x)log⁡(x1−x) (0,1)(0,1)

這個方法操作起來很簡單,但記得對新加入的特徵做歸一化。

方法三:決策樹離散法

大白話說決策樹模型就是一大堆的if else。它天生就可以對連續特徵分段,所以把它用於離散化連續特徵合情合理。我稱這種方法爲決策樹離散化方法。例如Gmail在對信件做重要性排序時就使用了決策樹離散化方法2

決策樹離散化方法通常也是每次離散化一個連續特徵,做法如下:

單獨用此特徵和目標值yy訓練一個決策樹模型,然後把訓練獲得的模型內的特徵分割點作爲離散化的離散點。

這種方法當然也可以同時離散化多個連續特徵,但是操作起來就更復雜了,實際用的不多。

方法四:核方法

核方法經常作爲線性模型的一種推廣出現。以線性迴歸模型爲例,它對應的核方法如下:

fθ(x)=i=1nθiK(x,xi)  fθ(x)=∑i=1nθiK(x,xi)  ,

其中{xi}ni=1{xi}i=1n爲訓練樣本點,K(xi,xj)K(xi,xj)爲核函數,比如常用的高斯核函數爲:

K(xi,xj)=exp(xixj222h2)  K(xi,xj)=exp⁡(−‖xi−xj‖222h2)  。

如果我們把上面模型裏的{K(x,xi)}ni=1{K(x,xi)}i=1n看成特徵,而θθ看成模型參數的話,上面的模型仍舊是個線性模型。所以可以認爲核方法只是特徵函數變換的一種方式。

當然,如果把核函數K(xi,xj)K(xi,xj)看成一種相似度的話,那上面的模型就是kNN模型了,或者叫做加權平均模型也可以。




參考博文:http://breezedeus.github.io/2014/11/15/breezedeus-feature-processing.html

發佈了27 篇原創文章 · 獲贊 13 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章