noHup - 特征工程
type: channel
link: http://chris.nohup.cc/tag/特征工程/
items: 互联网金融模型经验总结（一）

互联网金融模型经验总结（一）
type: item
date: 2020-03-18T09:22:00+00:00
description: Overview1. 特征挖掘2. 特征处理2.1 样本不均衡问题2.2 空值问题2.3 类别特征处理2.4 归一化和标准化2.5 特征选择和降维2.6 特征评估3. 模型构建3.1 数据集准备3.2 机器学习算法选择3.3 过拟合与欠拟合3.3.1 过拟合3.3.2 欠拟合3.4 XGBoost调参训练demo3.5 模型预测3.6 多模型融合3.6.1 不同类型的样本产生的多个模型进行融合3.6.2 不同类型的机器学习算法产生的多个模型进行融合 Overview 互联网金融行业主要涉及以下方面：保险、理财、基金、信贷、虚拟信用卡、催收等，主要用到以下类型的模型： 营销模型、召回模型、排序模型（支付宝蚂蚁财富基金推荐红包发放等） 新用户反欺诈模型 新老用户信用额度模型（蚂蚁借呗，腾讯微粒贷，京东金条，微博钱包，美团借钱，各类小贷等） 虚拟信用卡贷中风控模型（蚂蚁花呗，京东白条等） 贷后催收模型 我在互联网金融行业已经工作两年了，也积累了不少信贷数据特征挖掘和信贷模型开发经验。现在将这些经验记录一下，算是对两年时间的一个总结。总体上，这个领域和其他领域在机器学习模型构建的流程上区别不大，主要精力都是在特征挖掘和模型构建上。 1. 特征挖掘 显而易见，这个领域，用户的资产和负债数据是最有效的数据，但是除了银行或者蚂蚁金服和京东金融等大金融平台之外，我们一般情况下很难拿到用户的资产数据，我们最多能拿到用户的第三方征信数据，即用户负债数据（国内常见为同盾，百融，百行征信等），结合用户授权我们爬取的用户的通讯录，APP安装列表，淘宝京东APP订单数据等，以及用户在本公司的借贷历史行为记录和用户登录APP的埋点数据，我们可以做出很多特征，三方多头征信特征是最有效的，其次对于老用户，用户的借贷历史行为也很有效。其中，时间序列数据是特征工程的重头戏，对于和时间相关的订单类，行为类等数据，我们可以用类似的方法开发出一大批时间序列特征，其形式均为“某时间段内 + 某种行为发生的次数/金额/比例/时长间隔/持续时间 + 最值/q1/q2/q3/均值/众数/中位数”，例如"三个月内用户在本平台贷款金额序列的均值"。这部分特征由三部分组成： 时间长度 行为类型 统计量 另外，用户授权我们拿到他们的通讯录之后，我们可以通过他的一二度人脉在本公司的表现，来做关系图特征。我们取得用户的APP安装列表之后，可以将APP按照风险等级给分为3或者4类：714高炮类，小贷类，普通消费金融与正常金融类，学习以及其他正向类。另外，如果是贷后催收模型，还需要加入用户的催收表现特征。 2. 特征处理 2.1 样本不均衡问题 我们在业务上遇到的很多数据，几乎都是正负样本不平衡的，一般情况下是好样本数量远大于坏样本，用户客群质量越高，样本差异越大。小贷平台好坏样本比例一般在3:1到20:1之间，大平台差异更大，这样设计一个课题：样本不均衡问题。 样本不均衡时，我们有以下这些处理方式（通用方式，不只信贷领域），但基本思想就是"再缩放（rescaling）"： 较多类欠采样 较少类过采样 预测时阈值移动 合成数据或无label样本学习 权重缩放或惩罚权重 异常检测的方式（如果好坏样本数量悬殊，例如欺诈检测） 组合/集成学习 个人以为，我们在信贷工作当中，业务样本真实性还是很重要的，因此，不建议用SMOTE等方法进行插值产生坏样本。当然像图像，语音，文本等具象的数据，人可以轻松判断正负样本的领域除外。 2.2 空值问题 我们的特征中是有不少空值的，我们可以进行零值填充、均值填充或者众数填充，不过我们一般不会对这些空值进行填充，因为填充大概率会引入误差。另外，某些机器学习算法，其思想是计算距离来划分类别，例如SVM和KNN，对于这些算法，有空值的情况是不适合的，填充空值也是不适合的，因为填充不同的数据会对结果产生较大影响。而且，我们业务上特征维度是非常高的，即便进行了特征选择和降维，因此有很多算法效率是很低的，不推荐使用，这是后话。 因此，我们原则上，保留空值不处理。 2.3 类别特征处理 类别特征大家一般都是做one-hot处理，因为大部分算法是只支持数字型特征的。但是有少部分算法是支持类别型特征，而不用做独热编码的，例如LightGBM。 2.4 归一化和标准化 归一化和标准化都属于无量纲化，其主要目的就是为了避免数值问题和加快模型收敛速度。有些模型最好要进行无量纲化，例如线性回归，SVM，kNN，逻辑回归，k-Means，神经网络等；而XGBoost，lightGBM，朴素贝叶斯，决策树和随机森林等算法通常是不需要无量纲化的。 归一化和标准化之前的文章数据挖掘之数据标准化(Normalization)写过，这里就不赘述了。 2.5 特征选择和降维 特征选择的主要作用是去掉冗余的…