机器学习|什么是One-Hot Encoding()

2022.03.06:在机器学习中,有种数据预处理的方法叫做One-Hot Encoding,那么什么是One-Hot Encoding,这种方法进行数据预处理的好处是什么呢?
参考文章:https://www.jianshu.com/p/cb344e1c860a
首先One-Hot Encoding叫做独热编码。
为什么要使用独热编码?在很多的机器学习的任务中,特征并不总是连续值,有可能是分类值,比如性别分为“male”和“female”。对于这样的特征,在机器学习任务中通常我们需要对其进行特征数字化。如下面的例子:
有三个特征属性:
性别:[“male”,“female”]
地区:[“Europe”,“US”,“Asia”]
浏览器:[“Firefox”,“Chrome”,“Safari”,“Internet Explorer”]
对于某一个样本特征来讲,用数字来表示特征,效率会高很多,如[“male”,“US”,“Internet Explorer”],将这个分类值的特征数字化,最直接的方法,按照每个特征在各自特征分类里的顺序来数字化,像“male”在性别分类里在第一个位置即0,其他同理,我们就能得到这种序列化方法后的结果为[0,1,3]。但是这样的特征处理不能直接用在我们的分类器中,因为分类器往往默认数据是连续且有序的。而上述表示的数字并不有序,并且是随机分配的。
上述问题的一种解决方法就是独热编码,也称一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且只有一位有效。可以理解为,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征,并且这些特征互斥,每次只有一个特征激活。因此,数据经过独热编码后的结果会变得稀疏。
独热编码怎样处理?像上述样本[“male”,“US”,“Internet Explorer”],“male”在性别分类里在第一个位置,则“male”所在位置为1,其他特征所在的位置为0,那么“male”经过独热编码后对应结果为[1,0]。同理“US”在地区分类里在第二个位置则第二个位置为1,其他特征的位置为0,那么独热编码后的结果为[0,1,0]。同理“Internet Explorer”对应着[0,0,0,1]。则完整的特征数字化的结果为[1,0,0,1,0,0,0,0,1],即将样本中每个特征经过独热编码后的结果按照原来样本的中顺序拼接在一起,这样导致的一个结果就是数据会变得非常稀疏。
但是这样做的好处是解决了分类器不好处理这种有分类属性数据的问题,同时在一定程度上也起到了扩充特征的作用。
举一个简单的例子:
机器学习|什么是One-Hot Encoding()
文章图片


在例子中有共有四个特征,这里要注意每列是一个特征。
则第一个特征为[0,1,2,1],其中去掉重复的,即有三类特征值[0,1,2],因此独热编码可以将[0,1,2]表示为[100,010,001]。拿其中一个具体来说,如果样本中在第一个特征中取的是2这个特征值,那么2在特征值的第三个位置上则第三个位置为1,其他特征的位置为0,所以特征值2经过独热编码后的结果为[0,0,1]。
同理第二列特征值只有两类[2,3],分别可以表示为[10,01]。
第三个特征的特征值有四类[1,2,4,5],分别表示为[1000,0100,0010,0001]。
第四个特征将两类特征值[3,12]表示为[10,01]。
【机器学习|什么是One-Hot Encoding()】最后将样本[2,3,5,3]中每个特征值经过独热编码后的结果拼接在一起,即可将[2,3,5,3]表示为[0,0,1,0,1,0,0,0,1,1,0]。

    推荐阅读