【NLP学习笔记】One-hot encoding:独热编码

本文深入解析独热编码(One-Hot Encoding)在机器学习中的应用,包括其工作原理、实施步骤、优缺点以及如何解决特征稀疏问题。通过实例演示独热编码如何将离散特征转换为连续特征,提升算法性能。

一、存在问题

在机器学习算法中,特征并不总是连续值,常会遇到分类特征是离散的、无序的。例如:性别有男、女,城市有北京,上海,深圳等。

离散特征的编码分为两种情况:

  • 离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码
  • 离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}

性别特征:[“男”,“女”] = [ 0,1 ]
地区特征:[“北京”,"上海,“深圳”] = [ 0,1,2 ]
工作特征:[“演员”,“厨师”,“公务员”,“工程师”,“律师”] = [ 0,1,2,3,4 ]

比如,样本(女,北京,工程师)表示为[1,0,3],但是,这样的特征处理并不能直接放入机器学习算法中,因为,分类器通常默认数据是连续且有序。但是,按照我们上述的表示,数字并不是有序的,而是随机分配的。

解决这类问题,一种解决方法是采用独热编码(One-Hot Encoding)。

二、什么是独热编码?

独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

  • 即,只有一位是1,其余都是零值。

下面结合具体例子对独热编码进行阐述:

  • 对六个状态进行编码: N = 6

自然顺序码为:000,001,010,011,100,101
独热编码则是:000001,000010,000100,001000,010000,100000

回顾文章开头的例子:按照 N 位状态寄存器来对 N 个状态进行编码的原理,结果如下:

  • 性别特征:[“男”,“女”](这里N=2
  • 男 = [ 1 0 ]
  • 女 = [ 0 1 ]
  • 地区特征:[“北京”,"上海,“深圳”](这里N=3):
  • 北京 = [ 1 0 0 ]
  • 上海 = [ 0 1 0 ]
  • 深圳 = [ 0 0 1 ]
  • 工作特征:[“演员”,“厨师”,“公务员”,“工程师”,“律师”](这里N=5):
  • 演 员 = [ 1 0 0 0 0 ]
  • 厨 师 = [ 0 1 0 0 0 ]
  • 公务员 = [ 0 0 1 0 0 ]
  • 工程师 = [ 0 0 0 1 0 ]
  • 律 师 = [ 0 0 0 0 1 ]

因此,当某个样本的特征是 [“女”,“上海”,“律师”] 的时候,独热编码(One-Hot Encoding)的结果为:

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

换言之

  • 对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值