Kaggle知識點:列表的7種特征編碼

在結構化數據中經常遇到列表或交易等非結構化列,比較典型的案例如下,此時一個(ge) 列表列會(hui) 包含字符串 或 一個(ge) 列表:

ID列     Tag列 用戶A    tag1, tag2, tag3 用戶B    tag3, tag5, tag6, tag10 用戶C    tag3, tag5, tag6, tag10

如何對此類列進行編碼和提取特征呢?本文將給出一些基礎和進階的解決(jue) 方法。

方法1:進行基礎統計

在進行編碼時,最基礎的想法是可以統計個(ge) 數,個(ge) 數的多少可以直觀反應這列包含的信息的多少。

df['Tag列'].apply(len)

當然可以直接進行統計列表長度,也可以先計算每個(ge) tag的頻次,然後進行相應的統計。

  • 優點:實現簡單,並沒有增加維度;
  • 缺點:信息丟失較多

方法2:提取TFIDF

在進行編碼的過程中,可以使用onehot對單個(ge) 某個(ge) tag進行編碼,又或者使用直接使用TFIDF進行編碼。

  • CounterVecoter:計算TF
  • TFIDFVector:計算TF + IDF

from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfVectorizer

  • 優(you) 點:可以對tag進行有效索引;
  • 缺點:增加特征維度;

方法3:TFIDF + LDA/SVD

進行次數編碼容易造成維度爆炸,一種代替的方法是先進行TFIDF編碼,然後進行降維:LDA、SVD或者t-SNE降維。

from sklearn.decomposition import PCA from sklearn.decomposition import LatentDirichletAllocation from sklearn.decomposition import TruncatedSVD

  • 優(you) 點:維度更低,特征更加有區分性。
  • 缺點:降維需要額外的訓練時間;

方法4:句子嵌入

詞向量是一種非常有效的單詞編碼方法,可以對單詞進行映射。我們(men) 可以參考無監督句子編碼的方法,對tag進行嵌入,然後對多個(ge) tag進行聚合。

如果一個(ge) tag編碼為(wei) 100維度,則我們(men) 需要將任意多個(ge) tag都編碼為(wei) 100維度。這裏的聚合方法包括:

  • Mean-pooling
  • Max-pooling
  • TFIDF-pooling
  • SIF Embedding

上述實現過程需要額外訓練詞向量,如果使用深度學習(xi) 框架實現會(hui) 更加快速。

  • 優點:維度更加可控,語義更加完整。
  • 缺點:不適用tag亂序的情況

方法5:頻繁項聚類

對於(yu) tag列可以作為(wei) 集合進行處理,可以參考頻繁項挖掘的方法進行聚類操作。頻繁項集聚類提供了一個(ge) 減少維度,聚類之後的聚類類別可以單獨當做類別變量。

相應簇由包含頻繁項集,當然也可以使用文本聚類的方法,比如層次聚類。

  • 優點:可解釋性強,維度低;
  • 缺點:需要額外編碼,聚類更新困難

方法6:PageRank

在多個(ge) tag進行編碼的過程,可以單獨計算每個(ge) tag的IDF,也就是權重。當然我們(men) 也可以將多個(ge) tag組合在一起視為(wei) 一個(ge) 圖。

比如tag1, tag2, tag3可以構建為(wei) 一個(ge) 三個(ge) 節點的有向圖,構建完成之後然後計算每個(ge) 節點的權重。

通過PageRank可以計算得到每個(ge) tag的權重,也可以得到所有tag得到的圖的核心節點。

  • 優點:tag權重有意義,可解釋。
  • 缺點:適用於tag間存有向的情況。

方法7:minihash或者LSH

如果將tag列表當做集合看待,我們(men) 可以使用minihash進行對集合進行編碼,然後使用LSH進行編碼。LSH包含多次哈希,最終可以將包含相同tag的列表哈希得到相同的桶中。

  • 優點:適用於大規模和分布式數據集
  • 缺點:需要手動設計哈希函數

【競賽報名/項目谘詢+微信:mollywei007】

上一篇

夏校和夏令營有什麽區別?參加夏校有意義嗎?

下一篇

Math Prize For Girls麻省理工學院女生數學競賽介紹

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部