文章目录 1. 定性特征变量1.1 定类变量处理1.2 定序变量处理 2. 定量特征变量3. 总结
牢记一句话:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。
机器学习的根本目标,就是用数据的特征变量去对目标变量进行预测。那么我们所遇到的特征变量有哪些种类呢?各个种类又该如何处理呢?
总体而言,所有的特征变量可以归为两大类:定性特征和定量特征,我们依次看一下。
定性特征变量,泛指 分类变量/属性变量(qualitative, categorical or attribute variable),比如种族(满汉蒙回…),性别(男和女),年级(小学、初中、高中)。
对定性特征变量细分,又可以分两种:定类变量(Norminal Data)和定序变量(Ordinal Data),区别在于定类变量间没有大小、先后等关系(比如性别),而定序变量有对应关系(比如年级)。
变量的不同取值仅仅代表了不同类的事物,这样的变量叫定类变量。问卷的人口特征中最常使用的问题,而调查被访对象的“性别”,就是 定类变量。对于定类变量,加减乘除等运算是没有实际意义的。
在机器学习的数据预处理中,对于定类变量通常可以使用one-hot编码进行处理,本质上就是将定类变量的类别转换为两两正交的向量,保证类别之间的独立性。由于编码成的向量长度为类别的数目,所以one-hot编码可能导致特征空间变得非常大,导致维度灾难,这个时候可以考虑降维处理,即one-hot encoding + PCA的方式。
如下示例代码:
其中,可以看到特征空间维度从3变成了6。
1.2 定序变量处理 变量的值不仅能够代表事物的分类,还能代表事物按某种特性的排序,这样的变量叫定序变量。问卷的人口特征中最常使用的问题“教育程度“,定序变量的值之间可以比较大小,或者有强弱顺序,但两个值的差一般没有什么实际意义。
定序变量一般使用OrdinalEncoder或者LabelEncoder来进行处理,这两者本质上作用是一样的,区别在于接受的参数不同。参见 Difference between OrdinalEncoder and LabelEncoder。
示例代码如下:
定量特征变量泛指数值变量(quantitative or numeric variable),比如温度,年龄,收入,这些都可以用数值表示的。
对定量特征变量细分,可以分为两种:定距变量(Interval Data)和 定比变量(Ratio Data),两者一般不做特别区分,仅有的区别在于“定距变量取值为“0”时,不表示“没有”,仅仅是取值为0;定比变量取值为“0”时,则表示“没有””。
在定量特征变量中,有的变量只能取到特定的数值,叫做离散变量,比如火车数量只能是整数;有的变量可以取到任意连续值,叫做连续变量,比如质量。
对于离散的变量,我们往往可以直接灌入到模型当中;但是对于连续变量由于取值无限多,对很多机器学习算法不友好,因此需要进行离散化处理。
下面将单独总结一篇文章,讲《连续特征的离散化》。
一表总结各种特征变量区别。