机器学习预处理 -- encoding 特征编码

机器学习 – 特征编码[encoding]

一、离散数据类型编码

  由于机器学习模型的输入必须是数字类型的数据,所以有必要在数据预处理的过程中,完成对非数字类型的数据或者说离散而又无序的数据进行特征编码。在数据的预处理的过程中,需要对类别特征进行编码。因为类别特征的表示,可能是非数字的特殊符号,比如说中文。

1. 独热编码 [one-hot encoding]

  独热编码one-hot encoding ),又叫一位有效编码,用二进制向量表示。对于某一个特征的编码,在任一时刻只有一位有效(有效位取值为1,其他位取值都为0)。类别特征的维度决定了二进制向量的长度,类别的取值,决定了向量中的哪一位为取值为1(有效位)。

  当需要编码一个对象的多个离散、无序属性的时候,分别对某个属性进行编码,生成 one-hot 二进制向量,之后将各个属性的编码进行首尾拼接,组成表示该对象的完整编码。

  独热编码的好处:在计算特征之间的距离(向量之间的相似度)的时候,都是在欧式空间进行的(例如,余弦相似度、欧氏距离等)。通过将离散的特征经过独热编码映射成欧氏空间中的一个点,可以使特征之间的距离计算更加合理。

2. 哑编码 [dummy encoding]

   哑编码(dummy encoding) 省略了one-hot属性编码的一个取值,将编码向量的长度缩短1位,default属性取值的编码用全零表示。

3. one-hot VS dummy

对于同一个有四种离散取值的属性,两种编码方式的不同:

one-hot 编码示意:
机 – [1,0,0,0]
器 – [0,1,0,0]
学 – [0,0,1,0]
习 – [0,0,0,1]

dummy 编码示意:
机 – [1,0,0]
器 – [0,1,0]
学 – [0,0,1]
习 – [0,0,0]

模型使用时的区别:
   one-hot和dummy编码在使用时,使用one-hot 的编码的模型,一般不加bias项,或者加了bias项,用L2正则化手段去约束参数,否则模型不稳定;而使用dummy编码的模型必须加bias项,否则会导致固有属性的丢失。

[特征编码在NLP中的应用]
  在NLP自然语言处理中,第一步的操作就是将语料库中的内容进行分词,之后对每一个词进行一个初步的编码,这一步中将词语进行编码生成一个稀疏的向量,这样就可以用于区分不同的词,这一步中用到的就是离散数据类型的编码方式(词常用的编码方式:one-hot encoding)。

  当然这样简单的词与词之间的可区分性编码,不能通过向量之间距离来表示词义的相似性。如果需要词向量具有更多的信息,还需要embedding等操作,将简单、稀疏的高维二值向量映射成包含有词义信息的低维稠密向量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值