Machine-Learning

具有高基數的分類變量的編碼

  • June 6, 2019

對於信用卡數據的無監督異常檢測/欺詐分析(我沒有標記欺詐案例),有很多變量需要考慮。數據是混合類型的,包含連續/數值變量(例如花費的美元金額)以及分類變量(例如帳號)。

包含具有大量唯一類的分類變量的最合適方法是什麼?到目前為止我的想法:

  • 標籤編碼scikit-learn):即將整數映射到類。雖然它返回了一個很好的單個編碼特徵列,但它強加了一種錯誤的序數關係感(例如 135 > 72)。
  • 一種熱/虛擬編碼scikit-learn):即將分類特徵擴展為許多取值在 {0,1} 中的虛擬列。這對於具有例如 >10,000 個唯一值的分類特徵是不可行的。我知道模型會在稀疏和大數據方面遇到困難。

還有哪些**其他(更高級?)**合適的方法可以包含大型分類特徵列?是否仍然可以通過一些技巧使用 One Hot Encoding?儘管我沒有找到任何與入侵檢測/欺詐分析相關的應用程序,但我閱讀了有關 bin 計數的信息(Microsoft 博客)。

PS:在我看來,在處理無監督入侵檢測時,這個問題似乎與編碼 IP 地址特徵列非常相似。

這個鏈接提供了一個很好的總結,應該會有所幫助。正如您所提到的,標籤編碼不應用於名義變量,因為它引入了人為的序數。散列是一種潛在的替代方案,特別適用於具有高基數的特徵。

您還可以使用在深度學習社區中非常流行的分佈式表示。分佈式表示最常見的例子是 NLP 中的詞嵌入。這並不是說您不能在編碼其他分類特徵時使用它們。是一個例子。

最後,帳號不是一個明智的輸入,因為它更像是一個唯一的標識符,而不是一個通用的(帳戶)特徵。

引用自:https://stats.stackexchange.com/questions/411767

comments powered by Disqus