題:
使用SVM或神經網絡時如何將分類變量重新編碼為數值變量
user68589
2015-02-25 08:37:01 UTC
view on stackexchange narkive permalink

要使用SVM或神經網絡,它需要將分類變量轉換(編碼)為數字變量,這種情況下的常規方法是使用0-1二進制值,將第k個分類值轉換為(0,0 ,...,1,0,... 0)(1在第k個位置上)。還有其他方法可以做到這一點,尤其是當存在大量分類值(例如10000),使得0-1表示將在神經網絡中引入大量其他維度(輸入單位)時,這似乎不是很理想,或者預期?

我在問一般策略。

您是在問一般策略還是某些特定問題?
五 答案:
Alleo
2015-02-27 18:19:07 UTC
view on stackexchange narkive permalink

“標準”方法是:一鍵編碼(您在問題中提到的方法)。如果可能的類別過多,但需要0-1編碼,則可以使用哈希技巧

另一種常用的方法是按類別平均回答:在 kaggle中查看評論圖片。

bayerj
2015-03-10 19:20:03 UTC
view on stackexchange narkive permalink

在NLP中,單詞通常被編碼為k中的1-of,最近出現了單詞嵌入的使用。 維基百科頁面及其參考文獻是一個好的開始。

總體思路是為每個單詞$學習一個矢量表示$ x_i \ in \ mathbb {R} ^ n $ i $,在該空間中語義相似的單詞接近。因此,輸入的大小為$ n $,而不是詞彙表的大小。

也許您可以將該想法轉移到您的設置中。

Karan Gulati
2016-06-02 14:31:07 UTC
view on stackexchange narkive permalink

您可以從 caret 包中在R中使用 dummyVars 。它將根據級別數自動創建不同的列。之後,您可以使用 cbind 並將其附加到原始數據。其他選項包括 model.matrix sparse.model.matrix

eafpres
2018-06-19 14:02:42 UTC
view on stackexchange narkive permalink

您可以嘗試更緊湊的二進制編碼,有時甚至勝過一鍵式。例如,您可以在Keras中實現分類嵌入。

Sycorax
2019-11-05 03:53:38 UTC
view on stackexchange narkive permalink

您可以使用實體編碼,這是一種更為複雜的網絡結構。它在分類輸入和第一個完全連接層之間添加了1到 $ k-1 $ span>隱藏的線性神經元。這背後有一些很好的經驗結果。

“分類變量的實體嵌入”,程果,費利克斯·伯克哈恩

我們將函數逼近問題中的分類變量映射到歐幾里得空間中,這是分類變量的實體嵌入。在標準的監督訓練過程中,神經網絡學習了映射。與單點編碼相比,實體嵌入不僅減少了內存使用並加快了神經網絡的速度,更重要的是,通過在嵌入空間中映射彼此接近的相似值,它揭示了分類變量的內在屬性。我們在最近的Kaggle競賽中成功應用了該軟件,並以相對簡單的功能將其排名第三。我們在本文中進一步證明,當數據稀疏且統計信息未知時,實體嵌入可幫助神經網絡更好地泛化。因此,它對於具有許多高基數特徵的數據集特別有用,而其他方法往往會過度擬合。我們還證明,從訓練有素的神經網絡獲得的嵌入在用作輸入功能時,可大大提高所有經過測試的機器學習方法的性能。實體嵌入為分類變量定義距離度量時,可用於可視化分類數據和數據聚類。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...