独热编码

在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等。
这些特征值并不是连续的,而是离散的,无序的。通常我们需要对其进行特征数字化。

那什么是特征数字化呢?例子如下:

性别特征:["男","女"]----[0,1]
祖国特征:["中国","美国,"法国"]----[0,1,2]
运动特征:["足球","篮球","羽毛球","乒乓球"]----[0,1,2,3]

现在有'某人'={
            "男"
            "中国"
            "乒乓球"
            }

那么这个人数字化特征就是[0,0,4]来表示,但是这样的特征处理并不能直接放入机器学习算法中。因为类别之间是无序的(运动数据就是任意排序的),也就是算法识别的0无序,所以无法的值特征是哪一个?如此执意训练,造成负训练效果

独热编码又称为一位有效编码

—————————————————————————————————————————————————
性别:

男 => 10
女 => 01

祖国特征:["中国","美国,"法国"](这里N=3):

中国 => 100
美国 => 010
法国 => 001

运动特征:["足球","篮球","羽毛球","乒乓球"](这里N=4):

足球 => 1000
篮球 => 0100
羽毛球 => 0010
乒乓球 => 0001

所以,当一个样本为["男","中国","乒乓球"]的时候,完整的特征数字化的结果为:

[1,0,1,0,0,0,0,0,1]

为什么使用one-hot编码来处理离散型特征?

—————————————————————————————————————————————
将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。

比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是

x_1 = (1)
x_2 = (2)
x_3 = (3)

两个工作之间的距离是:

d(x_1, x_2) = 1
d(x_2, x_3) = 1
d(x_1, x_3) = 2

那么x_1和x_3工作之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理。那如果使用one-hot编码,则得到:

x_1 = (1, 0, 0)
x_2 = (0, 1, 0)
x_3 = (0, 0, 1)

那么两个工作之间的距离就都是sqrt(2).即每两个工作之间的距离是一样的,显得更合理

posted @ 2020-05-17 22:25  盐亭的森林  阅读(504)  评论(0编辑  收藏  举报