特征工程的重要性
特征工程:决定了模型的精度上限。是数据挖掘的主要工作内容:数据清洗、数据预处理、数据转换。
特征工程在我们的模型建立之前,它的作用是把我们的数据集里面的数据进行一个有效的表征。当我们称字段的时候,这个字段往往指数据库存储的字段,它是一个原始的字段。这个原始的字段它能不能直接当作一个特征来参与模型的训练呢?这个是有待商榷的。字段和特征的一个关键的区别就是并不是说所有的字段都是可以成为一个特征。我们的特征工程是需要从我们的原始字段里面筛选出合理的字段,并进行一个相关的转化。
对于一个算法工程师,他60%的时间其实是在清洗和整理数据。而建立构建模型,定义算法的时间其实是占据比较少的。其实要做好特征工程,首先是要对原始字段进行一个深刻的理解。字段类型:数值类型、类别字段、日期字段、图像和文本等,不同的类型有不同的编码方法。
在上图中,对于数值类型字段和类别字段是存在差异的,比如说对数值类型和类别类型缺失值的填充就存在差异性。对于数值类型的缺失值,它往往都是一个中位数或者说重数或者说用差值的方法对它来进行填充,缺失值还可以对它进行最大最小的策划。然后得到一个可以参与训练的数值特征。对于类别类型,可以用出现次数最多的字段来进行填充,它的编码方法也与数值类型不一样。
然后需要进行数据(特征)处理、数据归一化、数据转换。
数据(特征)处理就是说把原始的字段,如果是多张表,我们需要对它进行多表的合并,然后对数据进行清洗,比如说有些字段存在噪音。
在上图中,比如说原始数据是一个数值类型的字段,我们只需要取值直接赋值到特征这边就行了。
类别特征:最常见的数据字段
我们常见的类别字段有无序的类别字段和有序的类别字段。无序的类别字段,它们都是相互平等的,比如说文具类别的钢笔、铅笔、橡皮擦,或者动物里面的奶牛、狗、猫。它们没有大小之分,相互平等。还有一类有序的类别,比如情感里面的非常好、好、不好;还有一个学历的信息:本科、硕士、博士。虽然说都是一个类别类型的字段,但是它的取值是存在这种大小关系的。我们在对具体的类别字段进行编码的时候也需要考虑它具体的含义以及它的取值是否存在这种大小的关系。
对于原始的类别字段都是一个字符串的形式,对于我们的机器学习模型,它只能接受数值类型的出入。对类别字段就需要进行编码。对类别字段进行编码的时候需要注意假如一个类别字段取值空间非常大的时候,比如说动物,这个取值空间就非常大,几千几万都有可能,我们就要非常非常谨慎。这种类型处理不好就很容易带来高基数离散的情况。