独热编码(one-hot encoding)

1、定义

维基百科上的定义如下:https://en.wikipedia.org/wiki/One-hot

one-hot is a group of bits among which the legal combinations of values are only those with a single high (1) bit and all the others low (0)[1].A similar implementation in which all bits are '1' except one '0' is sometimes called one-cold.

独热码是一组数,其中只有一个值为1,其余都是0。同样的,一组数中只有一个0,而其余都为1则称为独冷码

2、举例

如四类音乐,其特征标签分别为1,2,3,4。

采用独热编码,则将一个标签就对应一个编码:

1:[0 0 0 1]

2:[0 0 1 0]

3:[0 1 0 0]

4:[1 0 0 0]

3、为什么要用独热码

1).使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。

2).将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

3).将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。两个工作之间的距离是,(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).即每两个工作之间的距离是一样的,显得更合理。

4).对离散型特征进行one-hot编码是为了让距离的计算显得更加合理。

5).将离散型特征进行one-hot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one-hot编码就可以很合理的计算出距离,那么就没必要进行one-hot编码,比如,该离散特征共有1000个取值,我们分成两组,分别是400和600,两个小组之间的距离有合适的定义,组内的距离也有合适的定义,那就没必要用one-hot 编码
 
离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1

第三部分主要参考以下博主,链接如下:

https://blog.csdn.net/dulingtingzi/article/details/51374487

https://www.jqr.com/article/000243

你可能感兴趣的:(神经网络初学)