一、存在问题
在机器学习算法中,特征并不总是连续值,常会遇到分类特征是离散的、无序的。例如:性别有男、女,城市有北京,上海,深圳等。
离散特征的编码分为两种情况:
- 离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码
- 离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}
性别特征:[“男”,“女”] = [ 0,1 ]
地区特征:[“北京”,"上海,“深圳”] = [ 0,1,2 ]
工作特征:[“演员”,“厨师”,“公务员”,“工程师”,“律师”] = [ 0,1,2,3,4 ]
比如,样本(女,北京,工程师)表示为[1,0,3],但是,这样的特征处理并不能直接放入机器学习算法中,因为,分类器通常默认数据是连续且有序。但是,按照我们上述的表示,数字并不是有序的,而是随机分配的。
解决这类问题,一种解决方法是采用独热编码(One-Hot Encoding)。
二、什么是独热编码?
独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
- 即,只有一位是1,其余都是零值。
下面结合具体例子对独热编码进行阐述:
- 对六个状态进行编码: N = 6
自然顺序码为:000,001,010,011,100,101
独热编码则是:000001,000010,000100,001000,010000,100000
回顾文章开头的例子:按照 N 位状态寄存器来对 N 个状态进行编码的原理,结果如下:
- 性别特征:[“男”,“女”](这里N=2)
- 男 = [ 1 0 ]
- 女 = [ 0 1 ]
- 地区特征:[“北京”,"上海,“深圳”](这里N=3):
- 北京 = [ 1 0 0 ]
- 上海 = [ 0 1 0 ]
- 深圳 = [ 0 0 1 ]
- 工作特征:[“演员”,“厨师”,“公务员”,“工程师”,“律师”](这里N=5):
- 演 员 = [ 1 0 0 0 0 ]
- 厨 师 = [ 0 1 0 0 0 ]
- 公务员 = [ 0 0 1 0 0 ]
- 工程师 = [ 0 0 0 1 0 ]
- 律 师 = [ 0 0 0 0 1 ]
因此,当某个样本的特征是 [“女”,“上海”,“律师”] 的时候,独热编码(One-Hot Encoding)的结果为:
[0,1,0,1,0,0,0,0,0,1]
换言之:
- 对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个

本文深入解析独热编码(One-Hot Encoding)在机器学习中的应用,包括其工作原理、实施步骤、优缺点以及如何解决特征稀疏问题。通过实例演示独热编码如何将离散特征转换为连续特征,提升算法性能。

2724

被折叠的 条评论
为什么被折叠?



