特征工程——categorical特征 和 continuous特征
看到有些介紹,“特征分為categorical特征 和 continuous特征“不解,查資料得
單個原始特征(或稱為變量)通常屬于以下幾類之一:
- 連續(continuous)特征;
- 無序類別(categorical)特征;
- 有序類別(ordinal)特征。
##連續特征 除了歸一化(去中心,方差歸一),不用做太多特殊處理,可以直接把連續特征扔到模型里使用。
##無序特征 可以使用One-hot(也叫One-of-k)的方法把每個無序特征轉化為一個數值向量。比如一個無序特征color有三種取值:red,green,blue。那么可以用一個長度為3的向量來表示它,向量中的各個值分別對應于red,green,blue。如:
| red | (1, 0, 0) |
| green | (0, 1, 0) |
| blue | (0, 0, 1) |
當然有些問題里有序可能會很重要,這時候就不應該把其中的順序關系丟掉。一般的表達方式如下:
| bad | (1, 0, 0) |
| normal | (1, 1, 0) |
| good | (1, 1, 1) |
上面這種表達方式很巧妙地利用遞進表達了值之間的順序關系。
——————————————————————
以線性分類器Linear Regression (LinearReg)為例,它是通過特征的線性加權來預測因變量yy:
y=wTx但大部分實際情況下,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維的向量。下面是一些例子的離散結果:
| 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的向量
方法二:函數變換
函數變換直接把原來的特征通過非線性函數做變換,然后把原來的特征,以及變換后的特征一起加入模型進行訓練。常用的變換函數見下表,不過其實你可以嘗試任何函數。
| xαxα;?α∈(?∞,+∞)α∈(?∞,+∞) | (?∞,+∞)(?∞,+∞) |
| log(x)log?(x) | (0,+∞)(0,+∞) |
| log(x1?x)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(?∥xi?xj∥222h2)??。K(xi,xj)=exp?(?‖xi?xj‖222h2)??。如果我們把上面模型里的{K(x,xi)}ni=1{K(x,xi)}i=1n看成特征,而θθ看成模型參數的話,上面的模型仍舊是個線性模型。所以可以認為核方法只是特征函數變換的一種方式。
當然,如果把核函數K(xi,xj)K(xi,xj)看成一種相似度的話,那上面的模型就是kNN模型了,或者叫做加權平均模型也可以。
總結
以上是生活随笔為你收集整理的特征工程——categorical特征 和 continuous特征的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kaggle入门-Bike Sharin
- 下一篇: pandas使用笔记大全