目录
中间数据集构建
中间数据集构建是将清洗完成的原始数据初步处理成结构化的数据或者适用于某些特定算法的数据格式,以方便后续特征挖掘。不同类型的原始数据需要使用不同方法来处理成中间数据集。接下来,我们将分别给出结构化数据、文本数据和关系网络数据的中间数据集构建过程。
结构化数据是高度组织、格式整齐的数据,通常是可以用统一的结构(如二维表)来表达的数据。结构化数据一般使用关系型数据库且以行为单位表示。与之对应的是非结构化数据,非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表达的数据,通常存储在非关系型数据库中。风控场景中的非结构化数据有文本数据、关系网络数据等。
结构化数据
结构化数据本身是适合特征计算的,我们需要注意的是数据本身的粒度。风控业务中的原始数据粒度从大到小依次为渠道、客户、借款、还款等。不同场景下的特征挖掘需要不同的数据粒度。结构化数据应用时会遇到两种情况:
一种情况,如果已经是合适的粒度,就可以直接作为特征在模型或规则中应用;
另一种情况是需要经过聚合汇总才能转换成建模可用的粒度。原始数据最终是否需要汇总取决于特征挖掘的应用场景,如针对贷前模型,客户的年龄、学历、月收入等已经是建模可用的粒度,将直接作为特征使用;客户历史订单、历史行为埋点数据则需要经过聚合汇总为客户粒度之后再挖掘特征。
文本数据
文本数据就是用文本形式表示的数据。文本数据的特征挖掘方法有3种:
- 一是提取关键字并将文本数据转化为结构化数据,再进行特征挖掘;
- 二是基于机器学习或深度学习算法从文本中提取特征;
- 三是使用文本分类算法训文本分类模型,然后将模型输出的概率值作为特征使用。
转化为结构化数据
基于关键字提取特征是将文本数据转化为结构化数据的常用方法。具体做法是先构建关键字集合,再根据关键字在每条文本中出现的次数构建中间数据集。关键字集合的构建一般是基于业务经验,并结合原始数据的分析。另外,可以通过TextRank算法提取关键字。TextRank 是一种基于图的算法,是PageRank在文本上的应用。
构建适用于文本算法的数据集
应用机器学习或深度学习算法挖掘文本特征,或者使用文本分类模型,其文本数据的处理方法是类似的。这些算法的输入是文本序列化之后的词,首先需要对每条文本做清洗和预处理,包括过滤标点符号、特殊字符、删除停用词;然后做分词,形成文本序列;最后合并一个客户的多条文本序列并作为输入。
文本清洗
我们的文本中经常包含对特征挖掘没有太大价值的内容,如大部分的标点符号、HTML标签等,这些符号通常会给文本增加额外噪声。HTML标签可以借助BeautfulSoup库来处理。文本中标点符号等特殊字符的清洗可以使用正则表达式。过滤标点符号之后可以得到文本。
文本预处理
清洗之后的文本可以做分词、停用词过滤,以及对时间数据的提取。停用词主要是基于停用词表来过滤,网络上的常用停用词表有很多。GitHub上的常用停用词表项目中包含哈工大停用词表、百度停用词表和四川大学机器智能实验室停用词表。英文文本天然有空格作为分隔,而中文基于通用语料库分词,如jieba分词、哈工大的pyltp等
关系网络数据
关系网络数据通常是指用来描述实体之间关系的数据。关系网络数据中的实体可能存在多种类型,实体之间也可能存在多种关系。处理关系网络数据通常分为以下两步。
- (1)从复杂的现实关系网络中抽取有价值的实体和关系并将其表达为图结构。
- (2)构建中间数据集,转化为结构化数据或者构建适用于图算法的中间数据。
在处理关系网络数据时,需要注意对超级节点的处理。超级节点是指关联的边非常多的节点。例如,在使用客户IP数据搭建关系网络时,学校或公司公共使用的节点很容易成为超级节点。超级节点关联的节点众多,相关的增加、删除、修改和查询操作比较耗时。有些超级节点并不重要,经过分析,可以删除。在某些情况下,超级节点本身可能与风险有关,此时应仔细辨别。
在将关系网络数据用于传统的特征挖掘时,构建中间数据集通常包含3步:
- 第1步,计算所有节点的特征,可以使用结构化数据特征挖掘的方法;
- 第2步,针对每个节点抽取子图结构,基于计算效率的考虑,抽取子图结构通常只会针对节点的一度和二度邻居节点进行;
- 第3步,将所有节点的特征按照子图中心节点来整理,形成中间数据集。
特征挖掘的过程实际是通过将子图节点的特征做聚合转换等操作来生成中心节点的特征。
print('要天天开心啊')