【机器学习】One-Hot编码

定义

One-Hot编码,也叫做一位有效编码

  1. 采用N个寄存器对N个状态进行编码
  2. 每一个状态都有其独立的寄存器位
  3. 并在在任意一个时刻,只有一个位的值有效。即只有一位是1,其他位都是0

例子

国家 = [‘中国’, ‘美国’, ‘俄罗斯’],此时N=3,即有3个状态.
中国 = [1 0 0]
美国 = [0 1 0]
俄罗斯 = [0 0 1]

若还想要同时表示其他属性,例如加上:性别 = [‘男’, ‘女’],此时:
男 = [1 0]
女 = [0 1]

则表示[‘男’, ‘中国’],则为:[1 0 1 0 0 ]

为什么使用One-Hot编码

若不采用的话,例如三个特征的取值为:x1 = 1, x2 = 2, x3 = 3

则计算不同特征之间的距离,此时结果为:
(x1, x2) = 1
(x1, x3) = 2
(x2, x3) = 1
会显示x1和x3之间的距离更远,但实际三者距离应该是相同的

若采用One-Hot编码,此时结果为:
(x1, x2) = 2 \sqrt2 2
(x1, x3) = 2 \sqrt2 2
(x2, x3) = 2 \sqrt2 2
三者距离一样,更合理

因此,采用One-Hot编码,可以将离散的特征扩展到欧式空间,在计算距离/相似度时会更加合理。

不使用One-Hot编码的情况

One-Hot编码的作用是防止离散型数据在计算距离的时候出现不合理的情况,但是若离散数据本身就能表示出合理的距离的话,那么就没必要采用One-Hot编码

参考

机器学习:数据预处理之独热编码(One-Hot)

你可能感兴趣的:(机器学习)