特征工程

特征工程是什么

数据和特征决定机器学习上限,而模型和算法只是逼近这个上限
特征工程目的:最大限度地从原始数据中提取特征以供算法和模型使用


数据清洗

数据清洗的结果直接关系到模型效果以及最终的结论。在实际的工作中,数据清洗通常占开发过程的 50%-80% 的时间。

在数据预处理过程主要考虑两个方面,如下:

  • 选择数据处理工具:关系型数据库戒者Python
  • 查看数据的元数据以及数据特征:一是查看元数据,包括字段解释、数据来源等一切可以描述数据的信息;另外是抽取一部分数据,通过人工查看的方式,对数据本身做一个比较直观的了解,并且初步发现一些问题,为之后的数据处理做准备。

缺省值清洗

缺省值是数据中最常见的一个问题,处理缺省值有很多方式,主要包括以下四个步骤进行缺省值处理:

  • 确定缺省值范围
  • 去除不需要的字段
  • 填充缺省值内容
  • 重新获取数据

注意:最重要的是 缺省值内容填充。

特征选择

待整理,需要合并指”特征工程文档中”。。。

机器学习中,有哪些特征选择的工程方法

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

  • 计算每一个特征与响应变量的相关性
    工程上常用的手段有计算皮尔逊系数互信息系数皮尔逊系数只能衡量线性相关性,而**互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;

  • 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征;

  • 通过L1正则项来选择特征
    L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;

  • 训练能够对特征打分的预选模型
    RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;

  • 通过特征组合后再来选择特征
    如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型。

  • 通过深度学习来进行特征选择
    目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。