為解決無法用「線性函數」做區別的資料,除了前一篇所言,還可以使用「Crossing One-Hot Vectors」。
(也許可以說「一個熱鍵」?)
One-Hot Vectors,可以參考這篇文章裡面說得還滿仔細。
In this case, a one-hot encoding can be applied to the integer representation. This is where the integer encoded variable is removed and a new binary variable is added for each unique integer value.
簡單來說,就是把變數變得更單純,只把我們要的變數值設為「1」,其他變數值設為「0」,就行了!聽起來很濛懂,來看看例子。假設有三種語言:中文、英文、德文,結合人是否會說該語言做交叉資料,如果每個人會的就設「1」,其他為「0」,現在有4個人,他們分別會說:中、中、英、德,所以就會變從:
會說的語言 |
---|
中文 |
中文 |
英文 |
德文 |
變成
中文 | 英文 | 德文 |
---|---|---|
1 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
從原本的數據是「語言種類」,也就是多中文、英文、德文等多種不同變數,把這個部分拉出來變成新的數據陣列變成「1、0」,也就是bit格式,這樣資料在使用的時候可以更容易給機器進行學習。
所以google提出一個例子:
他用這兩者交叉比對。「動作」這個行為在該時間點有「1」、「0」,也就是動與不動;同樣的「回來(在家)」,也是有分在與不在。所以製作圖表後,可以看得出來,狗的動作與在主人有沒有在家,是否有關連。
可參考簡易說明的文章:One-Hot Encoding : The Standard Approach for Categorical Data