概述
特征挖掘是从原始数据构造特征的过程。
特征是数据和模型之间的纽带,数据和特征决定机器学习的上限,而模型和算法只是无限逼近这个上限。
特征挖掘的完整流程包含原始数据分析、数据清洗、中间数据集构建、特征设计和生成、特征评估和特征的上线、监控、维护和下线。
在实际运行中,特征挖掘不一定是严格线性的,某些环节可能存在反复多次进行的情形。
挖掘方法论
业务中的数据类型繁多,不同的数据类型需要采用不同的方法进行挖掘,下面是通用的特征挖掘方法。
原始数据分析
原始数据分析是为了提取原始数据中有用的信息而对其加以分析的过程。原始数据分析的目的是对数据价值进行初步判断,避免错误使用数据,为后续的数据清洗与处理提供依据,最大化利用原始数据。
原始数据分析可以利用从数据流转分析、数据质量分析和数据时效性分析方面进行。
数据流转分析
数据流转分析是指对数据来源、中间处理和最终存储环节的数据进行分析。通过数据流转分析,可以了解数据在业务流程中的演变过程,从而全面认识数据并发现潜在问题。数据流转分析可以从业务逻辑角度和实际数据角度分别进行:- 业务逻辑角度
从业务逻辑角度分析是基于业务梳理出数据的产生、中间处理、最终存储和数据的更新机制。业务逻辑分析主要是为了整体把控底层数据的完整生命周期变化情况,也是为了补充数据层面分析无法获知的信息。 - 实际数据角度
从实际数据角度分析是指利用业务中产生的实际数据与理解的业务逻辑进行交叉比对,并且对其变化进行详细分析。这样就可以发现实际数据和业务逻辑中不一致的地方并加以确认和纠正,同时可以发现数据源的稳定性问题、计算问题和存储问题等异常,以此来保证数据的准确性和完整性。
- 业务逻辑角度
数据质量分析
数据质量分析可以从数据的覆盖率、规范性和准确性方面进行。- 覆盖率是指数据中非空记录的占比。
- 规范性是指数据取值是否符合一定的规范。
- 准确性是指数据接近真实值的程度。
数据时效性分析
数据时效性分为采集时效性和获取时效性两个方面。获取时效性不仅受采集时效性影响,而且数据传输、中间处理和存储都会影响。- 采集时效性是指数据从产生到采集的时间间隔。
- 获取时效性是指从数据产生到风控生产系统中实际获取的时间间隔。
数据清洗
数据清洗一般包含重复数据处理、缺失数据处理、异常值处理和时间数据处理。数据清洗是为了数据质量达到特征挖掘使用的标准,避免因数据质量问题而导致特征挖掘阶段,甚至建模阶段的返工。
重复数据处理
业务流程中产生的数据一般都需要完整保存,在维持数据完整性的同时,可能会引入重复数据,至此需要判断重复数据是否有业务含义,如果有业务含义则需要挖掘与业务含义相关的特征;若没有业务意义则需要冗余处理。
冗余数据处理包括直接过滤和整合应用:直接过滤是指随机选取一条数据,丢弃其他;整合应用则是将多条数据整合或校准之后形成完整和可靠的记录,之后记录并使用。缺失数据处理
在特征挖掘阶段根据数据确实情况,尽早发现隐藏的数据问题,有很多的机会采取措施以降低甚至消除数据缺失的影响,产出稳定的特征。
缺失数据处理需要先判断数据是否未正常缺失,再根据判断结果采取合适的处理方式,如填充缺失值、修复数据和丢弃数据等。异常值处理
异常值即数据中存在的不合理的值,同时异常值也称为离群点。对于发现的异常值,一方面可以及时研究数据是否可以修复;另一方面在特征开发阶段,可以增加对应处理逻辑,降低特征异常值出现的概率。
异常值的处理方式通常如下:- 删除含有异常值的记录。
- 将异常值视为缺失,使用缺失值填充的方式来处理。
- 用特定值(如平均值、中位数或固定值等)来填充。
时间数据处理
特征挖掘通常使用时间窗口来切分数据,而时间切分错误就会导致整个模块绝大部分特征无法使用。
时间数据处理主要包含两个方面:对时间格式做统一的规范化处理;对数据进行时间维度上的过滤。
时间格式的规范化需要注意以下三个方面:- 统一时区。
- 统一时间格式。
- 选择合适的时间跨度。
数据在时间维度上的过滤主要从两个方面进行:
- 避免引入未来数据。
- 避免时间未对齐问题。
中间数据集构建
中间数据集构建是将清洗完成的原始数据初步处理成结构化的数据或者适用于某些特定算法的数据格式。
结构化数据是高度组织、格式整齐的数据,通常是可以用统一的结构(二维表)来表达的数据。结构化数据一般使用关系型数据库且以行为单位表示,与之对应的是非结构化数据,非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表达的数据,通常存储在非关系型数据库中。
结构化数据
结构化数据本身是适合特征计算的,但是需要注意数据本身的粒度。风控业务中的原始数据按照粒度从大到小依次为渠道、客户、借款、还款等,另外在不同的场景下特征挖掘需要不同的数据粒度。
结构化数据应用时一般会遇到两种情况:一种情况是假设数据是合适的粒度,那就可以直接作为特征在模型或规则中应用;另一种情况则是数据需要经过聚合汇总才能转换成建模可用的粒度。- 客户行为埋点数据
同一个客户存在多条埋点数据,并且客户每次登录的操作序列可能不同,业务通常以客户每次登录的维度来生成客户行为埋点数据,以客户ID
作为本次登录的所有埋点行为数据的唯一标识。 - 客户历史订单数据
业务一般以订单维度保存订单数据,每个客户可能存在多个订单数据。将历史订单数据整理成包含客户ID
的中间数据集,后续挖掘特征时可以基于中间数据集进行对比、分组、聚合等。 - 客户账单数据
挖掘贷后特征应用于贷后C
卡模型需要订单粒度的特征,中间数据集为账单粒度的数据。
- 客户行为埋点数据
文本数据
文本数据就是用文本形式表示的数据。文本数据的特征挖掘方法常用的有以下三种:- 提取关键字并将文本数据转化为结构化数据,再进行特征挖掘。
具体做法是构建关键字集合,再根据关键字在每条文本中出现的次数构建中间数据集。关键字集合的构建一般是基于业务经验,并结合原始数据的分析。 - 基于机器学习或深度学习算法从文本中提取特征。
首先对每条文本做清洗和预处理,包括过滤标点符号、特殊字符、删除停用词;然后做分词形成文本序列;最后合并一个客户的多条文本序列并作为输入。 - 使用文本分类算法训练文本模型,然后将模型输出的概率值作为特征使用。
- 提取关键字并将文本数据转化为结构化数据,再进行特征挖掘。
关系网络数据
关系网络数据通常是指用来描述实体之间关系的数据。关系网络数据中的实体可能存在多种类型,实体之间也可能存在多种关系。处理关系网络数据通常分为以下两步:- 从复杂的现实关系网络中抽取有价值的实体和关系并将其表达为图结构。
- 构建中间数据集,转化为结构化数据或者构建适用于图算法的中间数据。
在将关系网络数据用于传统特征挖掘时,构建中间数据集通常需要三步:计算所有节点的特征,可以使用结构化数据特征挖掘的办法;针对每个节点抽取子图结构,基于计算效率的考虑,抽取子图结构目前只针对一度和二度邻居节点进行;将所有节点的特征按照子图中心节点来整理,形成中间数据集。
- 从复杂的现实关系网络中抽取有价值的实体和关系并将其表达为图结构。
特征设计与生成
在特征的设计与生成阶段会完成从原始数据到特征的转化,对于那些取自规范、含义清晰、汇总力度符合需求的字段可以直接当作特征输出,其他的需要进行汇总计算以产生新特征。
在风控业务中特征设计最重要的点在于客户风险的区分度上,而特征设计通过采用不同的方法:基于业务逻辑生成特征;半自动化方法生成特征;基于智能算法生成特征。
特征评估
特征评估是指选取特定的数据集对特征进行综合评估,以决定对特征模块的下一步处理方式。特征评估一般包括覆盖率、离散度、时间相关性、稳定性和效果等方面。
特征覆盖率
特征覆盖率检查首先可以检查出覆盖率较低的特征,避免输出;其次可以发现覆盖率异常的特征,进而反推出检查原始数据字段是否有之前的问题。
特征覆盖率检查的实现一般是比较简单的,直接计算样本集中非空特征占比即可。特征离散度
特征离散度是指特征值分布的离散程度。
计算特征离散程度时通常使用变异系数,与极差、方差和标准差相比,变异系数不受数据量纲的影响,但是只在平均值不为0
时才有意义。特征时间相关性
特征时间相关性衡量特征值与时间的相关性。特征时间相关性检查能发现一些与时间强相关当无意义的特征。
实际中Pearson
相关系数大于0.8
,表明特征与时间存在强相关性,应当谨慎使用。特征稳定性
特征稳定性主要使用PSI
(Population Stability Index
,群体稳定性指标)来表示。
在实际风控业务中,对于PSI > 0.1
的特征需要关注并分析原因,然后根据原因是否可接受来决定特征是否继续使用。
在样本量很小的时候,PSI
的波动情况可能会因为随机情况导致不能表示真实的业务情况。PSI
范围稳定性 表现/建议 0
~0.1
好 特征基本稳定 0.1
~0.25
略不稳定 持续监控后续变化 大于 0.25
不稳定 剧烈变化,分析原因,找到应对方案 特征效果
特征效果通常使用IV
值来衡量。
在评价特征区分度时,为了消除样本数据本身差异的影响,可以预先选择基准特征作为参考。基准特征有两种选择方式:- 选择效果已知的特征,在同一个数据集上对比两个特征的效果。
- 在特征子模型中引入随机变量,查看随机变量的重要性排序,方便评估特征模块的整体效果。
重要性排在随机变量之后的特征可以被视为无区分度而不输出。
特征上下线
特征开发完成并评估有效后会部署上线,在上线运行期间需要持续监控,当数据源不可用或者特征版本更新时,就会涉及到特征下线操作。
特征上线
特征上线一般分为两种方式:- 实时计算部署,即接受计算请求后在线获得原始数据并实时计算特征。实时计算的特征需要同时在线上系统和离线回溯系统中部署。
- 离线批量计算方式部署,即离线计算好所有客户的特征,并推送到线上等待调用。为此需要保证特征更新机制正常运行,上线前需要进行充分的测试。
特征上线之后通常需要先空跑,而不先应用于模型或规则。在线上积累足够多的样本之后,此时需要进行线上验证。上线验证通常包含三个方面:
- 数据源接入验证
首先确认特征依赖的数据源是否已上线或同时上线;其次检查所有数据是否已正常接入且数据格式正确;接下来确认数据调用位置是否正确;最后确认数据源的更新频率是否符合预期。 - 特征统计分析
主要包含三个方面:特征线上维度、覆盖率、缺失值填充方式和分布是否符合预期;特征监控配置是否正确;特征离线回溯是否正常运行。 - 特征稳定性验证
取近期的线下样本计算特征,然后与线上样本特征计算PSI
。
特征下线
特征下线通常发生在数据不可用或特征升级后新版本特征已经覆盖旧版本时,及时下线特征可以节省线上资源。
特征的下线需要注意以下几点:- 无策略或特征引用此特征。
- 不影响原始数据落表。
- 若后续评估特征效果,则需要判断是否积累足够的样本。
挖掘特征
特征衍生
在现有特征的基础之上,可以使用 GBDT
、神经网络等算法构建模型,而模型的中间产出或输出结果作为新的特征。
树模型算法
使用已有特征训练GBDT
模型,再利用模型中的树的叶子节点构造新特征,此思路源于Facebook
发表的Practical Lessons from Predicting CLicks on Ads at Facebook
论文。
按照这种思路构造的新特征向量取值是0
或1
,向量中的每个元素对应GBDT
模型中的树的叶子节点,特征长度等于集成模型中所有树的叶子节点之和。当一个样本点通过某棵树最终落在其一个叶子节点上时,新特征向量中的这个叶子节点对应的元素取值为1
,而这棵树的其他叶子节点对应的元素取值为0
。聚类算法
聚类算法在特征挖掘中的主要应用是基于已有特征进行样本聚类,并将聚类结果作为新特征。
算法原理:聚类算法是一种无监督算法。K-means
是典型的聚类算法,原理如下:- 初始时,随机选择
k
个质心。 - 把每个观测划分到离他最近的质心,并与质心形成新的类。
- 重新计算每个类的质心。
- 重复第二、三步骤。迭代停止条件为质心不变或达到最大迭代次数。
- 初始时,随机选择
聚类完成之后,可以针对最终生成的 N
个聚类算法,输出样本 是否属于聚类 X
特征或样本 与聚类质心得距离 特征。
文本特征挖掘
文本特征挖掘是指把文本数据转换为特征。文本数据加工成特征的方法包括常规的提取关键词和直接使用文本挖掘类算法将文本转换为向量。
文本特征提取方法
词袋(bag of words
)模型是最初的将文本表示成向量的方法。
词袋模型将文本看作一系列单词的集合,即把一段文本当作一个 袋子,里面装的是 单词。词袋模型一般需要收集一些文本,并将它们作为模型建立的基础,而这些文本被称为语料(corpus
),经过筛选、加工和标注等处理后,大批语料构成的数据库称为 语料库。
词袋模型的基本原理是先构建词典,再根据文本中的单词在词典中出现的频率生成文本的向量,生成的向量与单词在原文本中出现的次序没有关系。生成向量主要有两种方法:基于词频统计的方法和基于TF_IDF
(Term Frequency - Inverse Document Frequency
)算法的方法。前者简单统计文本中的单词出现的次数,后者综合 考虑 单词出现的频率和在整个语料库中的 稀有程度。TF_IDF
等于TF
和IDF
的乘积,其中TF
表示单词出现的频率,即某个单词在当前文本中出现的次数;IDF
是逆文档频率,DF
表示语料库中包含某个单词的文档的数目,IDF
即反映某个单词在整个语料库中的重要性。文本分类算法
再除了将文本表达为向量方式外,还有一些直接基于文本进行分类的算法,算法会输出一个概率,这个概率可以在后续的模型中使用。- 朴素贝叶斯算法
fastText
算法
图特征挖掘
之前介绍了使用邻接矩阵表示图结构,当邻接矩阵通常是 高维且稀疏 的,为了利用图的优势并构建有效的机器学习模型,需要得到高效的关系网络数据表示方法,这正是图表示学习的范畴。
表示学习是指机器学习模型自动学习数据中隐含的有效特征。
图表示学习也称图嵌入(graph embedding
),其主要目标是将图转换为 低维且稠密 的向量,并近可能保持图原有的拓扑关系。图表示学习生成的图特征向量可以作为图任务学习的输入。
图表示学习主要包含三种方法:
- 基于矩阵分解的方法
通过对邻接矩阵进行矩阵分解,将节点转换到低维向量空间,同时保留图结构。 - 基于随机游走的方法
借鉴词向量的表示方法将图的节点看作词,将在图中随机游走而产生的序列看作句子,然后借助Word2Vec
算法学习得到图节点的表示,该方法使用的典型算法有DeepWalk
和Node2Vec
。 - 基于深度学习的方法
基于图神经网络的图表示学习,可以用于图表示学习的图神经网络算法有图卷积神经网络、图自编码器和图注意力网络。
基于随机游走的方法
基于随机游走(random walk
)的方法将在图中随机游走而产生的序列看作句子,之后借助Word2Vec
算法学习得到图节点的表示。在随机游走序列的生成方面,共有两种不同的思路:DeepWalk
算法。Node2Vec
算法。
图卷积神经网络
图卷积神经网络是图神经网络(Graph Neural Network, GNN
)的一种,是将卷积神经网络应用于图表示学习而得到的。
卷积神经网络处理的图像数据是整齐的矩阵格式,转换成关系网络结构来看其节点的邻居数量是固定的;而图网络属于非欧几里得空间结构,节点的邻居数量不固定。因此在欧几里得空间内,不能直接将用固定大小的卷积核抽象图像像素特征的操作迁移到图结构,其本质是找到适用于图的可学习卷积核;而图卷积神经网络则是以图卷积层为主体,堆叠多层的神经网络模型。
特征画像体系
风控特征画像是从多个角度描述客户风险的工具。为了描述客户风险需要对客户有全面准确的认识,其中风控特征画像可以从多个维度尽量全面地描述客户在多个维度的风险属性,其中维度的细分更加有助于准确地刻画每个具体维度的差异,从而达到准确认识客户的目的。
营销阶段
在营销特征数据中,对于历史存量客户,包含有客户基本信息、历史申请信息和多头借贷信息;对于新客户,数据较少,当包含有浏览行为数据、客户的基本部分信息和第三方数据。
客户基本信息主要是客户在历史申请时自填的信息,通常包含客户本人的学历、年龄、性别、从事行业和居住地等;对于多头借贷信息,通常包含从第三方数据中的客户在多个机构的申请、放款和预期情况;历史申请记录是指客户在本机构的历史申请情况。
贷前阶段
贷前特征画像主要应用在反欺诈、信用风险评估和风险定价阶段,主要考虑的目标是客户的还款能力、守约概率等。
贷中阶段
在数据维度上,贷中特征画像可以使用贷前特征画像的所有数据,另外还能使用当前未完结(或已完结)订单的数据、贷中行为埋点数据、审批结果和还款提醒数据等。
贷后阶段
贷后特征画像主要反映客户在贷后的违约风险(主要体现客户还款的意愿和能力),可以将其应用于贷后风险模型或规则中。
监控和异常处理
特征监控是指监控特征的准确性、有效性、稳定性和一致性,以及特征依赖的原始字段的分布情况。通过特征监控能够及时发现原始字段或特征分布的偏移,以便分析原因并采取合理的方式来处理,避免特征异常带来的损失。
监控
一致性
特征的一致性监控是指监测特征离线回溯与线上调用是否一致,以及线上不同时间点的调用是否一致,其通常包括特征的线上与线下一致性,以及特征的前后一致性。- 特征的线上与线下不一致是指对同一个客户,基于相同业务时间,离线回溯计算的特征值和线上调用特征计算的结果不一致。
- 特征前后不一致是指对于同一个客户,基于相同业务时间点,在不同时间点回溯计算特征时会得到不同结果。
- 特征的一致性监控方法通常定期采样一定比例的客户离线回溯特征,并将其与线上调用特征进行对比。
特征监控以小时、天、周或月为周期,监控结果可采用邮件方式反馈和可视化报表方式展示。
原始字段分布
原始字段分布监控是指监测原始字段分布的变化情况。原始字段的分布变化通常会带来相关特征取值分布的变化,对原始字段监控可以进行监控可以直接、迅速地发现潜在的数据问题。
原始字段分布监控包含覆盖度监控和取值分布监控。覆盖度监控即将最近一段时间的客户按天汇总,监控空值占比的变化。
原始字段的覆盖率可以用偏差率r
来表示:1
r = |x - base| / base
x
为监控时段覆盖度,base
为基准覆盖度。通常设置r > 0.1
时触发预警。
异常处理
特征异常处理是指在发现特征异常时,需要快速分析原因并给出解决方案,尽量减少异常对线上业务的影响。
特征不一致
特征不一致的原因通常包含三种:- 在线数据和离线数据不一致。
- 在线特征和离线特征的处理逻辑不同。
- 数据状态曾发生变化。
原始字段异常
原始字段的覆盖率及取值分布出现异常的原因会有多种,通常数据采集、处理、存储和应用环节都有可能出现上述异常,业务团队需要和技术团队配合,具体问题具体分析。
术语介绍
原始数据
原始数据是业务中产生的各类数据,通常是为了业务目的而组织和保存的底层数据,相对于建模使用的特征,原始数据一般是未经汇总处理的数据。特征工程
特征工程是在给定数据、模型和任务的额情况下设计合适特征的过程。特征工程包含特征挖掘、特征筛选、特征组合应用等。IV
值IV
即信息价值(Information Value
)也可称为信息量。IV
值是用来衡量变量的预测能力,IV值越大,表示该变量的预测能力越强。IV
范围描述 iv < 0.02 无预测能力,需放弃 0.02 <= iv < 0.1 较弱的预测能力 0.1 <= iv < 0.3 预测能力一般 0.3 <= iv < 0.5 预测能力较强 iv > 0.5 预测能力极强,需检查 WOE
值WOE
即证据权重(Weight of Evidence
),WOE
是对原始自变量的一种编码形式。要对一个变量进行WOE
编码,需要首先把这个变量进行分组处理(也叫离散化、分箱),分组后,对于第i
组WOE
的计算公式如下:1
WOEi = ln((Yi/Yt) / (Ni/Nt)) = ln(Pyi/Pni)
Pyi
是该组中响应客户在该组中的比例。Pni
是该组中未响应客户在该组中的比例。Yi
是该组中响应客户数据量。Ni
是该组中该组中未响应客户数据量。Yt
是该组中响应客户总数据量。Nt
是该组中未响应客户总数据量。响应客户指正样本,未响应客户指负样本。PSI
值
特征稳定性主要使用PSI
(Population Stability Index
,群体稳定性指标)来表示。
在实际风控业务中,对于PSI > 0.1
的特征需要关注并分析原因,然后根据原因是否可接受来决定特征是否继续使用。
在样本量很小的时候,PSI
的波动情况可能会因为随机情况导致不能表示真实的业务情况。PSI
范围稳定性 表现/建议 0
~0.1
好 特征基本稳定 0.1
~0.25
略不稳定 持续监控后续变化 大于 0.25
不稳定 剧烈变化,分析原因,找到应对方案
引用
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!