看板 DataScience 關於我們 聯絡資訊
想請問版上神人們,如果一個input data裡面有很多column 有些column屬於類別型(factor),有些column屬於數值型態 這種時候各位先進通常都會把類別資料怎麼處理呢? 有想過使用dummy variable和one hot encoding 可是使用dummy variable的話,一個column的類別(Level)愈多,會轉出太多的column,資料會變太龐大 如果用one hot encoding轉換,那麼這個類別型column的如果有N種類別,那麼這個column 的每一筆資料都會轉成一個N維的vector,那麼這個column的維度就會變得跟其他數值資料 型態的column不太一樣,這樣我就不知道要怎麼把這些column合在一起當作X變數了 想請問版上大大們都是怎麼處理這類的問題,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.53.208 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1521265814.A.043.html
goldflower: 我現在都用entity embedding吧 03/17 14:56
goldflower: 然後後面看不太懂 是說跟數值一起訓練感覺很怪嗎? 03/17 15:01
假如資料長這樣(假設都是X變數) ┌────────┐ │ Letter number│ │1 "A" 9 │ │2 "B" 4 │ │3 "C" 8 │ │4 "D" 7 │ └────────┘ 那如果把Letter這個column做one hot encoding應該會變成這樣 ┌──────────┐ │ Letter number │ │1 [1,0,0,0] 9 │ │2 [0,1,0,0] 4 │ │3 [0,0,1,0] 8 │ │4 [0,0,0,1] 7 │ └──────────┘ 這種每個column維度不一樣的資料怎麼輸入到model裡呢? 第一個col會是array,第二個 依然是int或numeric
goldflower: 這個情形你的letter就會拆成四個numerical惹 03/17 16:13
goldflower: 所以以這個例子你現在變成有5個feature 03/17 16:14
那這樣不就跟轉dummy variable一樣了嗎 ※ 編輯: HumuHumu (114.32.209.214), 03/17/2018 17:30:55
goldflower: 其實這兩個還真的是一樣的 差一個維度而已 03/17 17:48
goldflower: 之所以要差個維度是要避免什麼多重共線性的東西 03/17 17:50
goldflower: 但這個在ML的世界不是什麼問題 所以都用one-hot 03/17 17:51