目录
特征挖掘
简介
特征挖掘是从原始数据构造特征的过程。以在风控业务中产生的订单数据为例,订单存储时并未做客户维度的汇总,故将其视作原始数据。我们从订单数据中抽取一些有用的信息,比如订单的申请时间、申请金额、每笔订单的逾期天数等,然后对这些信息做客户维度的统计汇总,得到“客户近30天申请贷款金额的平均值”或者“客户历史所有订单最大逾期天数”这些特征,这个过程就是特征挖掘。
特征是数据和模型之间的“纽带”。“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”,说明特征挖掘在机器学习中是至关重要的。而在实际工程实践中,特征挖掘工作在整个机器学习任务中通常占用大部分时间。
特征挖掘的完整流程包括原始数据分析,数据清洗,中间数据集构建;特征的设计和生成,特征评估,以及特征的上线、监控、维护和下线。在实际项目中,特征挖掘不一定是严格线性的,某些环节可能存在反复多次进行的情形。
原始数据
业务中的数据类型繁多,不同的数据类型需要采用不同的方法进行挖掘。原始数据分析是为了提取原始数据中有用的信息而对其加以分析的过程。原始数据分析的目的是对数据价值进行初步判断,避免错误使用数据,为后续的数据清洗与处理提供依据,最大化利用原始数据。原始数据分析可以从数据流转分析、数据质量分析和数据时效性分析方面进行。
数据流转分析
数据流转分析是指对数据来源、中间处理和最终存储环节的数据进行分析。通过数据流转分析,我们可以了解数据在业务流程中的演变过程,从而全面认识数据,发现潜在问题。数据流转分析可以从业务逻辑角度和实际数据角度分别进行。
业务逻辑角度
从业务逻辑角度进行数据流转分析是基于业务梳理出数据的产生、中间处理、最终存储,以及数据的更新机制。业务逻辑分析主要是为了整体把控底层数据的完整生命周期变化情况,帮助我们分析可以挖掘的特征;也是为了补充单纯通过数据层面分析无法获知的信息。通常,可以采用与相关业务人员沟通和阅读各类业务文档两种方式开展这项工作。
以确认客户端埋点数据的业务逻辑为例。通过与产品经理沟通和阅读埋点需求文档,可以确认客户在填写基本信息、进行身份认证等多处均会触发埋点,所有埋点数据会在所在页面的最后动作结束时触发上传,服务端对数据做基本校验后存储在数据库前端埋点表中,生产环境(或称线上环境)系统中实时更新埋点信息,离线系统按天批量更新前一天所有埋点数据。基于这些信息,我们可以考虑捕捉客户填写习惯中的风险因素,判断得到埋点可以认满足实时计算特征的需求。
实际数据角度
从实际数据角度进行数据流转分析是指利用业务中产生的实际数据与我们理解的业务逻辑进行交叉对比,并且对其变化进行详细分析。这样可以发现实际数据与业务逻辑不一致的方面并加以确认和修正,同时可以初步发现数据源的稳定性问题、计算问题和存储问题等异常情况,以保证数据的准确性和完整性。在操作上,可以针对目标场景,提取一些典型例子,将每一个业务环节产生的数据变化与业务逻辑进行对照和分析;或者基于批量数据进行统计,判断是否符合业务理解。
以对客户历史订单数据进行数据流转分析为例,通过提取典型例子,将客户在借款申请、获取额度、支用、审批、放款、结清各环节的订单状态与业务逻辑进行对照分析,发现某些客户短时间的订单中有多次申请状态,经与业务方确认,这些是申请被拒绝之后屡次重新申请的客户;同时,发现除业务逻辑中列出的状态以外,数据中还存在一些未知状态码,经与业务方确认,这些状态码标志订单为废弃状态。基于这些信息,我们可以利用客户多次重复申请的行为构建风险特征,并剔除其中废弃状态的订单数据。
数据质量分析
数据质量分析可以从数据的覆盖率、规范性和准确性方面进行。
覆盖率是指数据中非空记录的占比。覆盖率分析可以从以下两个方面进行:
- 第一,覆盖案是否符合业务判断,如必填信息覆盖率很低,需要确认是字段已调整为非必填字段还是发生了其他异常;
- 第二,不同产品或时间段上数据覆盖率的变化是否符合业务情况,如产品未发生调整的情况下原始数据覆盖率下降明显,可能是数据采集、中间处理或存储环节出现了数据丢失。
规范性是指数据取值是否符合一定的规范。在分析日期字段的规范性时,需要查看日期是存储为UNIX时间戳还是字符串,如果是字符串,那么格式是否统一,如是否一些字段取值是2020-01-01,而另一些字段取值是2020/01/01。数据规范性主要受数据采集、存储时是否有校验和校验的完备性影响。如果遇到可疑数据,那么可以通过与业务方、中间处理相关人员一起确认数据流转过程中的处理逻辑,然后使用数据实际取值来验证这些逻辑是否正确实现。
准确性是指数据接近真实值的程度。准确性可以从数据是否有校验和校验的完备性上来判断,并且需要结合业务经验与字段实际分布来综合分析。另外,可以利用相关数据交叉校验的方式来判断准确性。对于数值型数据,可以利用统计指标来统计数据分布,从而对数据的准确性做进一步判断。
数据时效性分析
数据时效性分为采集时效性和获取时效性两个方面。
采集时效性是指数据从产生到采集的时间间隔,
获取时效性是指从数据产生到风控生产系统中实际获取的时间间隔。获取时效性不但受采集时效性影响,而且受数据传输、中间处理和存储方面的影响。时效性分析主要是为了得出数据和特征可能的使用方式,因此,时效性分析的结果会包含关于数据后续使用方式的结论。
例如,某个外部数据源在请求之后,极端情况下,需要10分钟才能返回结果,生产环境中对这个数据相关特征的使用就可能有3种不同方式:第一种方式,在授信流程中,待数据返回之后,再实时计算特征,继续授信流程;第二种方式可以触发预计算逻辑,提前发出数据请求,数据返回之后计算特征并缓存,生产环境中使用预计算好的特征;第三种方式是在测试之后取一个合理的时间阈值,超过时间阈值则不再等待数据返回和特征计算,如90%的客户会在2秒内返回,业务评估10%的数据缺失可以接受,则设置成超过2秒不再等待。
通过上面对数据流转、数据质量和数据时效性的分析,我们对数据的整体情况有了一定的认知。本阶段的产出通常是原始数据的基本情况调研结果,可以用分析报告的形式展示。一份内容翔实的分析报告可以为后续的数据清洗、特征设计和开发打下基础。
print('要每天开心啊')