logo
Loading...

Day 06 -- One Hot Encoding 為什麼是用 1/0 而不是 True/False? - Cupoy

我看了作業區要求閱讀的連結,裡面有提到使用 One Hot Encoding 而不是用 Label ...

booling,one hot,label,encoding

Day 06 -- One Hot Encoding 為什麼是用 1/0 而不是 True/False?

2020/09/10 上午 00:20
機器學習共學討論版
蔣淳斌
觀看數:107
回答數:2
收藏數:0
booling
one hot
label
encoding

我看了作業區要求閱讀的連結,裡面有提到使用 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)