[問題] One-Hot Encoding能否合併使用
問題類別:數據預處理
使用工具: python pytorch scikit-learn
問題內容: 各位大大好,最近在研究對於資料處理的部分,
在面對無序特徵(nominal feature時),
我們通常習慣使用one-hot encoding的技巧來處理我們的數據。
將一個特徵(例如顏色)拆成n個特徵(紅,橙,黃...),
再藉由二元的0跟1來表示。
那想請教的是,如果做處理類似的特徵時,
可以將one-hot encoding所產生的稀疏矩陣合併使用嗎?
或是換句話說,可以對一個屬於多類別的list進行one-hot encoding
以下舉個簡單的例子 先以常見的顏色問題舉例,假設我們在描述衣服的顏色特徵,
我們會將以下特徵:
顏色
紅
黃
藍
轉換成
顏色紅 顏色黃 顏色藍
[1 0 0]
[0 1 0]
[0 0 1]
那我想請教的是,如果今天衣服有多個顏色呢?
例如:
顏色
紅藍相間
紅黃相間
黃藍相間
我的腦海中主要出現三種方法 想請教大大們是否可行或是有哪些優缺?
方法1: 區分成顏色1 顏色2 這樣使用one-hot encoding就會變成
顏色1紅 顏色1黃 顏色1藍 顏色2紅 顏色2黃 顏色2藍
[1 0 0 0 0 1]
.
.
.
思考:這種方法應該是可行,只是如果遇到顏色很多時,
可能會產生參數過大的問題,且產生的矩陣會太稀疏。
方法2:
既然都是在描寫顏色特徵,能否直接在同一個one-hot encoding的矩陣中描述。
顏色紅 顏色黃 顏色藍
[1 0 1]
.
.
.
思考:這樣可以避免掉方法1可能產生的問題,
只是不知道能不能將one-hot encoding這樣子使用?
我目前的想法是覺得應該可行,因為1跟0是代表是與否而已(?
想請問這樣的數據處理是否會產生問題?
方法3:
基本上混合了方法1與方法2,
在同一個one-hot encoding中表示,
但是是形成一個多維的矩陣來表示
顏色紅 顏色黃 顏色藍
[1 0 0
0 0 1]
思考:如上所示,用一個二維矩陣來表示衣服的全部顏色,
一列表示了一個顏色,這是我在網路上看到有人嘗試過的方法,
但比較疑惑的是,如果衣服的顏色很多,會使列數增加,
是否又會導致問題一的問題,加上其他的特徵如果都是一維的(例如衣服的價錢,尺碼)
這樣是否會導致輸入參數的維度不一致?
以上是我目前能想到的三個方法
不知道各位大大有什麼想法
目前傾向於使用方法2
因為我想要研究的題目
資料數量會很龐大 怕使用方法1與3會使得資料過於龐大
不知道方法2是否可行呢?
或是各位大大有沒有什麼其他的處理方法呢?
在此先感謝資料科學版的各位大大
祝大家新年快樂
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.106.40
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1549459747.A.BB5.html
※ 編輯: karco (118.233.179.85), 02/06/2019 23:16:28
推
02/07 10:06,
5年前
, 1F
02/07 10:06, 1F
→
02/07 10:06,
5年前
, 2F
02/07 10:06, 2F
→
02/07 10:06,
5年前
, 3F
02/07 10:06, 3F
→
02/07 10:06,
5年前
, 4F
02/07 10:06, 4F
推
02/07 16:47,
5年前
, 5F
02/07 16:47, 5F
感謝兩位大大回覆
關於p大的留言 目前想實作的應用是原子的id
想藉由one-hot encoding來表示原子間的鄰居關係
所以應該可以避免掉類似漸層色的問題
當然還是一邊搜集更多原始資料中
另外針對y大的回覆,所以特徵也適用multilabel的方法囉?
一開始以為只能應用在label的處理上 感謝解答
※ 編輯: karco (118.233.179.85), 02/07/2019 23:45:04
→
02/14 15:26,
5年前
, 6F
02/14 15:26, 6F
→
02/14 15:27,
5年前
, 7F
02/14 15:27, 7F
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章