一、什么是one-hot編碼漂坏?
One-Hot編碼,又稱為一位有效編碼媒至,主要是采用N位狀態(tài)寄存器來對(duì)N個(gè)狀態(tài)進(jìn)行編碼顶别,每個(gè)狀態(tài)都由他獨(dú)立的寄存器位,并且在任意時(shí)候只有一位有效拒啰。
One-Hot編碼是分類變量作為二進(jìn)制向量的表示驯绎。這首先要求將分類值映射到整數(shù)值。然后谋旦,每個(gè)整數(shù)值被表示為二進(jìn)制向量剩失,除了整數(shù)的索引之外屈尼,它都是零值,它被標(biāo)記為1拴孤。
二脾歧、one-hot編碼過程詳解
比如我們要對(duì) “hello world” 進(jìn)行one-hot編碼,怎么做呢演熟?
1.確定要編碼的對(duì)象--hello world鞭执,
2.確定分類變量--h? e? l? l? o? 空格? w? o? r? l? d,共27種類別(26個(gè)小寫字母 + 空格芒粹,)蚕冬;
3.以上問題就相當(dāng)于,有11個(gè)樣本是辕,每個(gè)樣本有27個(gè)特征,將其轉(zhuǎn)化為二進(jìn)制向量表示猎提,
這里有一個(gè)前提获三,特征排列的順序不同,對(duì)應(yīng)的二進(jìn)制向量亦不同(比如我把空格放在第一列和a放第一列锨苏,one-hot編碼結(jié)果肯定是不同的)
因此我們必須要事先約定特征排列的順序:
1.疙教、27種特征首先進(jìn)行整數(shù)編碼:a--0,b--1伞租,c--2贞谓,......,z--25葵诈,空格--26
2裸弦、27種特征按照整數(shù)編碼的大小從前往后排列
得到的one-hot編碼如下:
再比如:我們要對(duì)["中國(guó)", "美國(guó)", "日本"]進(jìn)行one-hot編碼,
怎么做呢作喘?
1.確定要編碼的對(duì)象--["中國(guó)", "美國(guó)", "日本", "美國(guó)"]理疙,
2.確定分類變量--中國(guó)? ? 美國(guó)? ? 日本,共3種類別泞坦;
3.以上問題就相當(dāng)于窖贤,有3個(gè)樣本,每個(gè)樣本有3個(gè)特征贰锁,將其轉(zhuǎn)化為二進(jìn)制向量表示赃梧,
我們首先進(jìn)行特征的整數(shù)編碼:中國(guó)--0,美國(guó)--1豌熄,日本--2授嘀,并將特征按照從小到大排列
得到one-hot編碼如下:
["中國(guó)", "美國(guó)", "日本", "美國(guó)"]? --->? [[1,0,0], [0,1,0], [0,0,1], [0,1,0]]
三、為什么需要one-hot編碼锣险?
one hot編碼是將類別變量轉(zhuǎn)換為機(jī)器學(xué)習(xí)算法易于利用的一種形式的過程粤攒。
上面的 hello world 相當(dāng)于多分類的問題(27分類)所森,每個(gè)樣本只對(duì)應(yīng)于一個(gè)類別(即只在對(duì)應(yīng)的特征處值為1,其余地方值為0)夯接,而我們的分類結(jié)果焕济,得到的往往是隸屬于某個(gè)類別的概率,這樣在進(jìn)行損失函數(shù)(例如交叉熵?fù)p失)或準(zhǔn)確率計(jì)算時(shí)盔几,變得非常方便
四晴弃、one-hot編碼的缺陷
one-hot編碼要求每個(gè)類別之間相互獨(dú)立,如果之間存在某種連續(xù)型的關(guān)系逊拍,或許使用distributed respresentation(分布式)更加合適上鞠。