在我们数据分析、建模的时候,首先要处理的就是各种数据,数据的类型也不仅仅局限于连续型数值。比如,性别、城市名等等此类的指标也是很多的。这种类型, 它是不具备序列性、也不能比较大小的,如果这个时候简单的用数字来替换,那么就给这种赋予了大小的属性,这就会影响权重矩阵的计算。这个时候,就可以用One-Hot编码(也有人称独热编码)这种特殊的编码方式了。
举例解释下为什么直接转变为数值型数据会有问题:对于分类型数据,如果种类较多,转变为分类1,2,3,4等来表示,带入到模型中,就被认为连续变量,并且如果同样的数据,一个分类被1代表,另一个分类被1000代表,1000和1对模型的影响明显不同,会影响统一特征在样本中的权重。
One-Hot编码是用N位状态寄存器来对N个状态进行编码。一个变量,共有3个分类值(ABC),那么N为3,对应的One-Hot编码可以表示为100,010,001。
对于连续型数据,有时候我们也需要做特征转换,比如说人的年龄,这个分布可能会从0一直到100,但其实他们的分布可能集中在10-40之间,那么我们可以将这种连续型的数据处理为分类变量。比如:0-18:1;19-30:2;30-40:3,40-60:4,60+:5,这样做的好处是提高模型运算的效率。比如用LR算法做模型,在数据处理过程中,可以先对连续变量进行离散化处理,然后对离散化后数据进行One-Hot编码,最后放入LR模型中。这样可以增强模型的非线性能力。
优缺点
(1)通过One-