独热编码与标签编码

最近在看机器学习,遇到了两种编码形式,OneHotEncoder(独热编码)和LabelEncoder(标签编码),感觉既然都是为了给离散型变量编码,为什么要有两种,既然有两种,那平时该用哪一种。

先说结论:OneHotEncoder更常用,LabelEncoder目前应用场景不多

以下是解释:

用OneHotEncoder是因为:目前大部分算法都是基于向量空间(欧式空间)中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到圆点是等距的。将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用独热编码,会让特征之间的距离计算更加合理。离散特征进行编码后,每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1。

OneHotEncoder中,不同特征之间的欧氏距离是相等的,这种特性经常运用到特征相似度的计算中,它可以让离散型变量的特征连续化,同时,OneHotEncoder加上PCA(主成分分析)是目前很常用的方法。

而LabelEncoder,在某些情况下很有用,但是场景限制很多。比如有[dog,cat,dog,mouse,cat],我们把其转换为[1,2,1,3,2]。这里就产生了一个奇怪的现象:dog和mouse的平均值是cat。所以目前还没有发现标签编码的广泛使用。




你可能感兴趣的:(独热编码与标签编码)