机器学习入门教学——独热编码One-hot

1、前言

  • 在机器学习过程中,我们经常需要对特征进行分类,例如:性别有男、女,国籍有中国、英国、美国等,种族有黄、白、黑。 但是分类器并不能直接对数据进行分类,所以我们需要先对数据进行处理。
  • 如果要作为机器学习算法的输入,通常我们需要对特征进行数字化处理,例如:
    • 性别:["男", "女"] => 0, 1
    • 国籍:["中国", "英国", "美国"] => 0, 1, 2
    • 种族:["黄", "白", "黑"] => 0, 1, 2
    • 此时,某个样本的特征为["女", "美国", "白"],就可以用[1, 2, 1]来表示。
  • 但这种特征处理方法并不能直接放入机器学习算法中,因为类别之间是无序的,所以需要进一步采用独热编码使其转化成有序且连续的数据。

2、定义

  • 独热编码(One-Hot Encoding),又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。即只有一位是1,其余都是零值。
  • 独热编码是利用0和1来表示一些参数,使用N位状态寄存器来对N个状态进行编码。
  • 例如:
    • 性别:["男", "女"]
      • 男 => 10
      • 女 => 01
    • 国籍:["中国", "英国", "美国"]
      • 中国 => 100
      • 英国 => 010
      • 美国 => 001
    • 种族:["黄", "白", "黑"]
      • 黄 => 100
      • 白 => 010
      • 黑 => 001
    • 此时,某个样本的特征为["女", "美国", "白"],转换的结果就为:[0, 1, 0, 0, 1, 0, 1, 0]
  • 也就是说,将所有的特征排列在一起,有该特征即为1,没有该特征即为0。

3、作用

  • One-hot编码是用于编码分类变量的技术,可以用于神经网络。对数据进行预处理去偏时,通常要确定2个相似个体特定特征之间的度量距离,One-hot编码能更加合理的计算特征之间的距离,从而达到去偏的效果。
  • 也就是把特征之间距离的问题,转换为了计算向量之间距离的问题。
  • 例如:
    • 性别:["男", "女"]
      • 男 => 10
      • 女 => 01
    • 国籍:["中国", "英国", "美国"]
      • 中国 => 100
      • 英国 => 010
      • 美国 => 001
    • 计算样本1:["女", "美国"]=[0, 1, 0, 0, 1],样本2:["男", "中国"]=[1, 0, 1, 0, 0]之间的距离。
    • 机器学习入门教学——独热编码One-hot_第1张图片
    • 距离=

你可能感兴趣的:(机器学习,深度学习,人工智能)