看到有些介紹,“特徵分爲categorical特徵 和 continuous特徵“不解,查資料得
單個原始特徵(或稱爲變量)通常屬於以下幾類之一:
- 連續(continuous)特徵;
- 無序類別(categorical)特徵;
- 有序類別(ordinal)特徵。
##連續特徵 除了歸一化(去中心,方差歸一),不用做太多特殊處理,可以直接把連續特徵扔到模型裏使用。
##無序特徵 可以使用One-hot(也叫One-of-k)的方法把每個無序特徵轉化爲一個數值向量。比如一個無序特徵color
有三種取值:red
,green
,blue
。那麼可以用一個長度爲3的向量來表示它,向量中的各個值分別對應於red
,green
,blue
。如:
color取值 | 向量表示 |
---|---|
red | (1, 0, 0) |
green | (0, 1, 0) |
blue |
(0, 0, 1) |
status
有三種取值:bad
, normal
, good
,顯然bad
< normal
< good
。
當然有些問題裏有序可能會很重要,這時候就不應該把其中的順序關係丟掉。一般的表達方式如下:
status取值 | 向量表示 |
---|---|
bad | (1, 0, 0) |
normal | (1, 1, 0) |
good | (1, 1, 1) |
上面這種表達方式很巧妙地利用遞進表達了值之間的順序關係。
——————————————————————
以線性分類器Linear Regression (LinearReg)爲例,它是通過特徵的線性加權來預測因變量yy:
但大部分實際情況下,yy與xx都不會是這麼簡單的線性關係,甚至連單調關係都不會有。那麼直接把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αxα; α∈(−∞,+∞)α∈(−∞,+∞) | (−∞,+∞)(−∞,+∞) |
log(x)log(x) | (0,+∞)(0,+∞) |
log(x1−x)log(x1−x) | (0,1)(0,1) |
這個方法操作起來很簡單,但記得對新加入的特徵做歸一化。
方法三:決策樹離散法
大白話說決策樹模型就是一大堆的if else
。它天生就可以對連續特徵分段,所以把它用於離散化連續特徵合情合理。我稱這種方法爲決策樹離散化方法。例如Gmail在對信件做重要性排序時就使用了決策樹離散化方法2。
決策樹離散化方法通常也是每次離散化一個連續特徵,做法如下:
單獨用此特徵和目標值yy訓練一個決策樹模型,然後把訓練獲得的模型內的特徵分割點作爲離散化的離散點。
這種方法當然也可以同時離散化多個連續特徵,但是操作起來就更復雜了,實際用的不多。
方法四:核方法
核方法經常作爲線性模型的一種推廣出現。以線性迴歸模型爲例,它對應的核方法如下:
其中{xi}ni=1{xi}i=1n爲訓練樣本點,K(xi,xj)K(xi,xj)爲核函數,比如常用的高斯核函數爲:
如果我們把上面模型裏的{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