特徵工程中常用的技術

原文:https://mp.weixin.qq.com/s?__biz=MjM5MTQzNzU2NA==&mid=2651643693&idx=1&sn=e386759cc1cd3d1f690f57f1a0250689

複雜的模型不易解釋,難以調整。簡單的算法配合更好的特徵或者更多的數據,比脆弱的假設配合複雜的算法會得到更好的結果。

◆ ◆ ◆
什麼是好?

好的特徵代表了靈活性、更簡單的模型和更好的結果,不相關的特徵則會影響模型的泛化性。因此特徵選擇和特徵工程並非是互相排斥的,而是相輔相成的。有效的特徵工程能夠幫助我們提煉數據的代表。接着問題就來了,什麼纔是好的代表?

代表的好壞取決於裏面所包含信息的好壞。

  • 熵(Entropy,熵值越高,數據中所包含的信息越多)
  • 方差(Variance,方差越大,數據中所包含的信息越多)
  • 更好的分離映射(Projection for better separation,最高的方差所對應的映射包含更多得信息)
  • 特徵對類別的關聯(feature to class association),等。所有這些都解釋了數據中所包含的信息。

特徵工程是建模過程中很重要的一個步驟,但也很難實現自動化。它需要專業知識和很多數據的探索性分析。

◆ ◆ ◆
常見做法

  1. 單一變量的基礎轉換:x, x^2,sqrt x ,log x, 縮放
  2. 如果變量的分佈是長尾的,應用Box-Cox轉換(用log轉換雖然快但不一定是一個好的選擇)
  3. 你也可以檢查殘差(Residuals)或是log-odds(針對線性模型),分析是否是強非線性。
  4. 對於基數比較大的數據,對於分類變量,創造一個表示每種類別發生頻率的特徵是很有用的。當然,也可以用佔總量的比率或是百分比來表示這些類別。
  5. 對變量的每一個可能取值,估計目標變量的平均數,用結果當做創造的特徵。
  6. 創造一個有目標變量比率的特徵。
  7. 選出最重要的兩個變量,並計算他們相互之間、以及與其它變量之間的二階交叉作用並放入模型中,比較由此產生的模型結果與最初的線性模型的結果。
  8. 如果你想要的解決方案更平滑,你可以應用徑向基函數核(Kadial Basis function kernel) 。這就相當應用一個平滑轉換。
  9. 如果你覺得你需要協變量(Covariates ),你可以應用多項式核,或者明確添加它們的協變量。
    10.高基數特徵:在預處理階段,通過out-of-fold平均轉換成數值變量。

◆ ◆ ◆
兩個變量組合而成的特徵轉換

以下爲一些常見的由兩個變量組合而成的特徵轉換:
11.加法轉換
12. 相對於基數的差值
13. 乘法轉換:交互效果
14. 除法轉換:縮放/歸一化
15. 對數值型特徵設定閾值以獲取其布爾值
16. 笛卡兒積變換
17. 特徵向量積:所有特徵的向量積

試想一個特徵A,它有兩個可能的值:{ A1,A2 } 。假設B是一個具有兩種可能性{ B1,B2 }的另一特徵。那麼, A和B之間的向量積(我們稱之爲AB)將採取以下值之一: { (A1 , B1),(A1 , B2),(A2 , B1),(A2 , B2) } 。你基本上可以賦予這些”組合”你喜歡的任何名稱。但要記住,每個組合都表示一個由A和B的相應值包含的信息之間的協同作用。

  1. 歸一化/數據標準化變換
    在機器學習算法中提出的隱含假設(對樸素貝葉斯而言,在某種程度上是顯性假設)之一是:該特徵服從正態分佈。不過,有時我們可能會發現該特徵不遵循正態分佈,而是對數正態分佈。那麼在這種情況下常見的手段之一是取特徵值的對數(即表現出對數正態分佈的那些特徵值),使得它展現出正態分佈。如果在使用中的算法做出了正態分佈的隱含/顯性假設的話,則這種轉化,即將一個服從對數正態分佈的特徵轉化爲正態分佈,可以幫助改善該算法的性能。
  2. 分位數分級轉換 (Quantile Binning Transformation)
  3. 白化數據 (Whitening the Data)
  4. 窗體壓縮化 (Windowing)
    •如果所有的點都分佈在時間軸上,那麼在同一個窗口裏的先前的點往往包含豐富的信息。
  5. 最小-最大歸一化:不一定保留順序
  6. S型/正切/對數轉換 (Sigmoid / Tanh / Log Transformations)
  7. 用特殊方法處理0:對於計數特徵有可能很重要
  8. 去相關性/轉換變量
  9. 重構數量
  10. 將不頻繁的分類變量劃分到新的/獨立的類別中。
  11. 按順序應用一系列轉換。
  12. 獨特的編碼方式
  13. 靶值率編碼 (Target rate encoding)
  14. 哈希技巧 (Hash Trick)

◆ ◆ ◆
常見的多個變量的特徵轉換

以下爲一些常見的多個變量的特徵轉換:
32. 主成分分析 (PCA)
33. 模型集成
34. 壓縮感知 (Compressed Sensing)
35. “猜平均值”或是“猜通過變量X分段後的平均值”
36. 處理映射(hack projection):
執行聚類(clustering)並使用點和聚類中心的距離作爲一個特徵
主成分分析/奇異值分解 (PCA/SVD)
這是用來分析變量之間的相互關係和在信息損失最小的情況下執行降維的有效技術。
*找到透過數據中,擁有最大方差的軸。
*在下一個正交軸上重複該步驟,直到你用完了數據或維度。每個軸都代表着一個新特徵。

  1. 稀疏編碼(sparse coding)
    選擇基元:基於你能如何用一個基元來重建輸入值和它有多稀疏來評估該基元;採取一些梯度步驟,以改進該評估。
    有效的稀疏編碼算法
    深度自編碼
  2. 隨機森林:訓練一部分決策樹:使用每個葉子作爲一個特徵
    原文:https://www.linkedin.com/pulse/feature-engineering-data-scientists-secret-sauce-ashish-kumar
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章