1. 程式人生 > 其它 >特徵工程系列:(五)特徵構造

特徵工程系列:(五)特徵構造

本文總結了常用的特徵構造方法。

有的時候,已有的特徵可能並沒有有效的表徵特徵,尤其是針對特殊的業務的時候,極有可能需要對已有的特徵進行變換,從而讓特徵更加能夠表徵特有的業務。這裡介紹幾種常用的特徵構造方法。

(1) 統計量構造

  • 使用常用的統計量構造特徵,常用的統計量有:

    四分位數、中位數、平均值、標準差、偏差、偏度、偏鋒、離散系統

  • 通過加大時間週期構造

    例如周和月,統計更長週期例如周和月的資料作為特徵。

  • 權重

    通過時間衰減組合新特徵。(越靠近觀測權重值高)

(2) 週期特徵

  • 前n個週期/天/月/年的週期值,如過去5天分位數、平均值等

  • 同比/環比

(3) 特徵組合

可以將幾個不同的特徵進行組合,新的特徵也許能夠更好的表徵資料,優先考慮強特徵維度,有大概一下幾種組合方式:

  • 離散+離散:笛卡爾積

  • 離散+連續:連續特徵分桶後進行笛卡爾積或基於類別特徵 group by,類似於聚類特徵構造

  • 連續+連續:加減乘除,二階差分等

(4)數學變換

  • 基礎數學變換
## 兩個特徵相除
autos["stroke_ratio"] = autos.stroke / autos.bore

autos[["stroke", "bore", "stroke_ratio"]].head()


## 幾個特徵進行復雜數學運算
autos["displacement"] = (
    np.pi * ((0.5 * autos.bore) ** 2) * autos.stroke * autos.num_of_cylinders
) 
 
  • 對數變換

    對於具有重尾分佈的正數值的處理,對數變換是一個非常強大的工具。(與高斯分佈相比,重尾分佈的概率質量更多地位於尾部。)它壓縮了分佈高階的長尾,使之成為較短的尾部,並將低端擴充套件為更長的頭部。

  • 指數變換

    指數變換是個變換族,對數變換隻是它的一個特例。用統計學術語來說,它們都是方差穩定化變換。

  • Box-Cox 變換

    平方根變換和對數變換都可以簡單推廣為Box-Cox變換

\[\hat x=\left\{ \begin{aligned} & \frac{x^\lambda-1}{\lambda} &(\lambda \neq0) \\ & ln(x) & (\lambda = 0) \\ \end{aligned} \right. \]

(5) 特徵拆解

對於一些字串,可以通過分解,得到一些特徵

  • ID numbers: '123-45-6789'

  • Phone numbers: '(999) 555-0123'

  • Street addresses: '8241 Kaggle Ln., Goose City, NV'

  • Internet addresses: 'http://www.kaggle.com

  • Product codes: '0 36000 29145 2'

  • Dates and times: 'Mon Sep 30 07:06:05 2013'

customer["Policy"]           # from the Policy feature
.str                         # through the string accessor
.split(" ", expand=True)     # by splitting on " "
                             # and expanding the result into separate columns

customer[["Policy", "Type", "Level"]].head(10)

(6) 降維

降維也是一種常用的特徵構造的方法,降維的方法可以檢視筆者的sklearn機器學習系列,裡面有詳細的介紹。

(7) 新特徵發現

有時候,可以通過已有的資料,發現一些新的特徵,這個特徵可以更加明確的幫助進行分類,想要發現新的特徵,需要做到如下:

  • 理解特徵

  • 去了解一些關於資料的領域知識,這些知識可以幫你更好的瞭解特徵

  • 研究前人的工作,幫助開闊思路

  • 使用資料視覺化,可以幫助直觀的觀察資料

(8) 自動構建發現

基於python 和sklearn,有一個稱為gplearn的庫,可以遺傳演算法和符號迴歸,自動的去探索各種可能的特徵組合,從而發現更好的特徵。具體使用方式可以檢視官方文件。

https://gplearn.readthedocs.io/en/stable/

參考

《特徵工程入門與實踐》
《精通特徵工程》