实际上特征工程是一个面向十分广的概念,只要是在处理数据就可以认为是在做特征工程。个人理解中,真正意义上的特征工程还是数据降维和数据升维的过程。
而前期对数据的处理过程:
1、需要哪些数据?
2、数据如何存储?
3、数据如何清洗?
这三步个人将其归纳到数据准备的过程。
1、需要哪些数据?
根据领导提出的一个分析要求,我们需要构思自己需要哪些数据,这个时候我们要和企业中的运维人员进行沟通,看看运维人员能够提供哪些数据。
2、数据如何存储?
一般如果不是那种需要一个人顶十个人的超级创业公司,像数据存储的工作一般不会交给我们去完成。
3、数据如何清洗?
对我们来说,数据准备过程中最关键的第一步操作是如何对数据进行清洗。比如数据库中存的是作者和文章所在的url地址。我们可以对作者进行哑编码的操作,对url地址返回的文章进行词袋法的处理,等等。
4、数据特征工程
数据特征工程和数据清洗有时候概念的边界比较模糊。有些在数据清理过程中也会遇到特征选择的问题,但很多时候数据本身特征就少,你再做个特征选择就更加欠拟合了。总的来说实际情况实际分析。
一、需要哪些数据?
在进行机器学习之前,收集数据的过程中,我们主要按照以下规则找出我们所需要的数据:
1、业务的实现需要哪些数据?
• 基于对业务规则的理解,尽可能多的找出对因变量有影响的所有自变量数据。
2、数据可用性评估
• 在获取数据的过程中,首先需要考虑的是这个数据获取的成本;
• 获取得到的数据,在使用之前,需要考虑一下这个数据是否覆盖了所有情况以及这个数据的可信度情况。
3、一般公司内部做机器学习的数据源:
• 用户行为日志数据:记录的用户在系统上所有操作所留下来的日志行为数据...
• 业务数据:商品/物品的信息、用户/会员的信息...
• 第三方数据:爬虫数据、购买的数据、合作方的数据...
PS:入职第一周可能就是让你拿数据,熟悉数据来源,这样后续工作也好上手。
二、数据如何存储?
一般情况下,用于后期模型创建的数据都是存在在本地磁盘、关系型数据库或者一些相关的分布式数据存储平台的。
1、本地磁盘
2、MySQL
3、Oracle
4、HBase
5、HDFS
6、Hive
三、数据清洗
数据清洗(data cleaning)是在机器学习过程中一个不可缺少的环节,其数据的清洗结果直接关系到模型效果以及最终的结论。在实际的工作中,数据清洗通常占开发过程的30%-50%左右的时间。
数据清洗过程:
1、数据清洗--预处理
在数据预处理过程主要考虑两个方面,如下:
1、选择数据处理工具:关系型数据库或者Python;
2、查看数据的元数据以及数据特征:一是查看元数据,包括、等一切可以描述数据的信息;另外是,通过人工查看的方式,对数据本身做一个比较直观的了解,并且初步发现一些问题,为之后的数据处理做准备。
再用data.describe()
抽取一部分数据通过人工查看,进一步分析。
作为研究者,我们不能为了完成任务而完成任务,至少在数据层面上必须要严谨,做出来的模型必须要起到作用。很多时候,客户要求模型的准确率达到98%,不过也许我们能给出的模型一般在91%~92%,但是必须保证我们分析的数据是绝对有用的,有解释意义的。这样的模型也许在指标上没有完成客户的需求,但模型也是有价值的。
反之有些分析师为了获得更好的模型评分,强行加入一些没有意义的奇怪数据,这样一来在当前的数据集中能够跑出很好的评分,到了实际运用中结果会很差。这就是过拟合。
2、数据清洗--格式内容错误数据
一般情况下,数据是由用户/访客产生的,也就有很大的可能性存在格式和内容上不一致的情况,所以在进行模型构建之前需要先进行数据的格式内容清洗操作。格式内容问题主要有以下几类:
1、时间、日期、数值、半全角等显示格式不一致:直接将数据转换为一类格式即可,该问题一般出现在多个数据源整合的情况下。
2、内容中有不该存在的字符:最典型的就是在头部、中间、尾部的空格等问题,这种情况下,需要以半自动校验加半人工方式来找出问题,并去除不需要的字符。
3、内容与该字段应有的内容不符:比如姓名写成了性别、身份证号写成手机号等问题。
3、数据清洗--逻辑错误清洗
主要是通过简单的逻辑推理发现数据中的问题数据,防止分析结果走偏,主要包含以下几个步骤:
1、数据去重。
2、去除/替换不合理的值。
3、去除/重构不可靠的字段值(修改矛盾的内容)
4、数据清洗--去除不需要的数据
一般情况下,我们会尽可能多的收集数据,但是不是所有的字段数据都是可以应用到模型构建过程的,也不是说将所有的字段属性都放到构建模型中,最终模型的效果就一定会好,实际上来讲,字段属性越多,模型的构建就会越慢,所以有时候可以考虑将不要的字段进行删除操作。在进行该过程的时候,要注意备份原始数据。
5、数据清洗--关联性
如果数据有多个来源,那么有必要进行关联性验证,该过程常应用到多数据源合并的过程中,通过验证数据之间的关联性来选择比较正确的特征属性。
比如:汽车的线下购买信息和电话客服问卷信息,两者之间可以通过姓名和手机号进行关联操作,匹配两者之间的车辆信息是否是同一辆,如果不是,那么就需要进行数据调整。