Day 06 -- One Hot Encoding 為什麼是用 1/0 而不是 True/False?
我看了作業區要求閱讀的連結,裡面有提到使用 One Hot Encoding 而不是用 Label Encoding,是為了避免在機器學習中讓模型誤以為數字的大小/階層有其意義。但是轉成 One Hot,將標籤拆成多行的 1/0 資訊時,就算很多時候我們會用 1/0 代替 True/False,但它依然是數字,仍然符合 1 > 0、1 - 0 = 1 等等的數學意義,這樣貌似沒辦法完全擺脫數字間的大小關係,那這點不會成為影響系統判斷的要素嗎?
回答列表
-
2020/09/10 上午 01:52陳在民 (TSAI-MIN CHEN)贊同數:0不贊同數:0留言數:0
同學您好,你說的沒錯這邊藉由One Hot Encoding只是要讓系統判斷時忽略"是數字大小/階層的關係",但仍保留該類別的"存在與否的關係(0代表不存在,1則代表存在)"。
-
2020/09/10 上午 02:53張維元 (WeiYuan)贊同數:2不贊同數:0留言數:5
嗨,淳斌你好
先說結論:
- 原始資料是有序離散值的話 => Label Encoding
- 原始資料是無序離散值的話 => One Hot Encoding (Dummies)
以下分為兩點說明:
為什麼要將離散轉數值?
=> 因為大部分的模型都是基於數學運算,所以字串資料是無法運算的
為什麼要將無序轉 One-Hot?
=> 所謂數學運算一般泛指用距離代表相似(幾何觀點),意思是會用轉換後的兩個值的差距作為其相似程度。
舉個例子:
* 如果將性別欄位的男/女轉換成 0, 1 ,二元的沒問題。
* 如果講水果這個無序欄位中的頻果、香蕉、西瓜,Label 成 0, 1, 2 會隱含著「香蕉跟蘋果」比「西瓜跟蘋果」還要相似的意義,但這樣是錯誤的。
* 如果是年齡這個有序欄位的老年、中年、少年,Label 成 0, 1, 2 就很恰當,到如果硬轉成 One-Hot 反而將這個差距關係給拿掉。
最後講一下你的問題:「但是轉成 One Hot,將標籤拆成多行的 1/0 資訊時,就算很多時候我們會用 1/0 代替 True/False,但它依然是數字,仍然符合 1 > 0、1 - 0 = 1 等等的數學意義,這樣貌似沒辦法完全擺脫數字間的大小關係,那這點不會成為影響系統判斷的要素嗎?」
=> 編碼並非要擺脫數學,恰好相反,編碼正式需要讓原本的資料有運算的性質,但又需要保有資料的原始特性。
如果這個回答對你有幫助請主動點選「有幫助」或「最佳解答」的按鈕,也可以追蹤我的GITHUB 帳號。若還有問題的話,也歡迎再開一個新的問題繼續發問,或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃另外我目前有舉辦一個課程:【資料科學家的 12 堂心法課】,歡迎一起來玩玩!(By the way,我並不是主辦單位的人員,所以如果覺得我回答得不好,不要找他們抱怨/客訴XD)