獨(dú)熱編碼(One-Hot Encoding),也叫一位有效編碼,是用來(lái)表示離散變量(categorical data)的一種方法。在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中經(jīng)常會(huì)使用獨(dú)熱編碼來(lái)將離散變量轉(zhuǎn)換為多維向量,以便于算法處理。
1.什么是獨(dú)熱編碼
獨(dú)熱編碼是指將離散型的特征數(shù)據(jù)映射到一個(gè)高維空間中,每個(gè)可能的取值都對(duì)應(yīng)于高維空間的一個(gè)點(diǎn),在這些點(diǎn)上取值為1,其余均為0,因此獨(dú)熱編碼也被稱(chēng)為“一位有效編碼”或“One-of-K encoding”。
2.獨(dú)熱編碼原理
獨(dú)熱編碼原理可以用以下例子來(lái)解釋?zhuān)杭僭O(shè)我們有一組汽車(chē)品牌數(shù)據(jù),包含三種品牌:Benz、BMW、Audi。使用獨(dú)熱編碼對(duì)這組數(shù)據(jù)進(jìn)行編碼后,可以得到以下結(jié)果:
汽車(chē)品牌 | 獨(dú)熱編碼 |
---|---|
Benz | [1, 0, 0] |
BMW | [0, 1, 0] |
Audi | [0, 0, 1] |
可以看到,原本三種汽車(chē)品牌的離散數(shù)據(jù)被編碼為了一組由3個(gè)元素組成的向量,每個(gè)元素的取值要么是0,要么是1。
3.獨(dú)熱編碼的優(yōu)缺點(diǎn)
獨(dú)熱編碼的優(yōu)點(diǎn)在于:
- 適用于大多數(shù)算法;
- 避免了特征之間的大小關(guān)系干擾模型的訓(xùn)練;
- 能夠很好地處理分類(lèi)變量。
獨(dú)熱編碼的缺點(diǎn)在于:
- 當(dāng)類(lèi)別數(shù)量較多時(shí),會(huì)導(dǎo)致稀疏矩陣問(wèn)題;
- 在某些應(yīng)用中,可能并不需要將所有分類(lèi)都作為分開(kāi)的一個(gè)特征,此時(shí)獨(dú)熱編碼可能不是最優(yōu)選擇。