风控领域特征工程

在金融行业,风险控制(风控)是核心环节,它关乎资产安全、合规性以及机构的长期稳健发展。随着大数据时代的到来,金融机构面临着前所未有的数据量和复杂性。在这样的背景下,风控领域特征工程应运而生,成为连接原始数据与精准风险评估的桥梁。

特征工程,简而言之,是对数据的一种深度加工,它通过一系列技术手段,将原始数据转化为对风险预测有用的信息。这一过程不仅要求对数据进行清洗和转换,更要求深入理解业务逻辑,发掘数据背后的风险信号。

在风控领域,特征工程的核心目标是构建出能够准确反映个体或实体风险水平的特征集。这些特征集将作为风险评估模型的输入,帮助模型捕捉到细微的风险差异,从而实现对信贷违约、欺诈行为、市场波动等风险因素的精准预测。

有效的特征工程不仅能够提升模型的预测性能,还能够增强模型的泛化能力,使其在面对未知风险时仍能保持稳定的判断力。此外,良好的特征工程实践还能促进模型的解释性,为风控决策提供更加透明的依据。

随着技术的发展,特征工程的方法也在不断创新。从传统的统计方法到现代的机器学习技术,再到深度学习的应用,特征工程正变得越来越智能化、自动化。在这一过程中,我们不断探索如何更好地从数据中提取风险信息,如何更高效地构建特征,以及如何更精准地评估风险。

特征工程的意义

特征工程在风控领域至关重要,它涉及将原始数据转化为模型可用的格式,以及提升模型的预测能力。

  • 适配模型算法: 确保特征输入格式与所选算法兼容,进行必要的转换处理。

  • 适配分析维度:统一数据存储与分析所需的维度,如将交易级数据聚合至客户级。

  • 改善模型性能: 精选特征以增强模型对数据规律的捕捉能力,从而提升模型的准确性和泛化性。

特征挖掘流程

特征挖掘流程是一系列有序的步骤,旨在从原始数据中提取有价值的信息。

  • 1.样本选择和分析目标定义

    • 正向标签(优质用户)
    • 负向标签(高风险用户)
  • 2.确定检验样本

    • OOT(Out-of-Time测试)
    • OOS(Out-of-Sample测试)
  • 3.前期处理

    • 缺失值填充
    • 类别变量转换
    • 日期类型转换
  • 4.特征衍生

    • 领域知识衍生
    • 机器学习衍生
    • 暴力衍生
  • 5.特征效果评估

    • 区分能力评估
    • 稳定性评估
    • 解释性评估
  • 6.报告编写

    • 编制特征列表和效果说明材料,为模型开发和决策提供支持。

特征类型

类型举例处理方式注意点
连续型年龄、收入、额度、交易额数学变换: 对数、指数、平方根等
离散化分箱: 决策树、等频、等距
离群点干扰、分母为0的情况
类别型性别、学历、工作地独热编码(one hot encoder)
标签编码(labelencoder)
目标编码(target encoder)
概率平滑目标编码(ProbSmoothing target encoder)
归类后编码
类别型的变量不要当做连续
变量处理,例如身份证地区码
日期型出生年月、交易日期最近一次交易与当日时间差日期变量不可直接入模
序列型交易流水、埋点日志、文本、股票窗口计算:最近3个交易日的股价平均值,
序列编码:TextCnn、Rnn、word2vec、tfidf
注意穿越
图数据关系网络一度、二度关系,例如通讯录里面互存
图神经网络GNN
算力要求高
多模态视频、语音3D卷积神经网络(C3D)
时空注意力网络(STAN)
算力要求高

特征衍生方法

特征衍生是特征工程中的核心环节,它通过不同的方法从原始数据中生成有助于风险评估的新特征。

业务经验衍生

这种方法依赖于领域专家的知识和经验来识别与风险相关的特征。

  • 示例特征:
    • 额度使用率
    • 通讯录中手机号靓号数量
    • 最近一个月内半夜电话通话
  • 优点:
    • 具有强烈的解释性,因为这些特征直接关联业务逻辑。
    • 通常具有不错的稳定性,因为它们基于长期观察到的模式。
  • 缺点:
    • 受限于特征开发人员对业务的理解和知识。
    • 相比自动化方法,开发效率较低。

暴力计算衍生

这种方法通过算法自动生成大量可能的特征,不考虑业务逻辑。

  • 技术手段
    • 多项式生成(Polynomial Features)
    • 特征两两交叉(决策树)
  • 优点:
    • 能够广泛覆盖数据的不同方面。
    • 生成特征的效率高。
  • 缺点:
    • 可能导致维度灾难,需要进行特征筛选来降低维度。
    • 计算量大,对算力有一定要求。

算法衍生

这种方法使用机器学习算法来发现数据中的潜在模式,并据此生成特征。

  • 应用算法
    • 神经网络(如word2vec、CNN、RNN、BERT)
    • 聚类(如k-means)
    • 异常检测(如Isolation Forest)
  • 优点:
    • 能够捕捉数据中的潜在规律,提高模型的预测能力。
    • 生成特征的效率高,尤其适合处理大规模数据集。
  • 缺点:
    • 相比于基于业务经验的特征,算法衍生特征的解释性较弱。
    • 需要一定数量的样本来训练模型,以达到较好的效果。
    • 对计算资源的要求较高,特别是在使用深度学习算法时。

通过综合运用这些特征衍生方法,风控领域的特征工程能够更全面地挖掘数据潜力,为风险评估提供多维度的视角。

RFM处理:客户行为分析的关键

RFM(Recency, Frequency, Monetary)是一种广泛应用于营销和客户关系管理中的方法,用于分析客户行为并评估客户价值。RFM模型基于以下三个关键指标:

  • Recency (最近一次交易时间):客户最近一次交易距离当前时间的间隔,反映了客户的活跃度。
  • Frequency (交易频率):客户在特定时间窗口内的交易次数,体现了客户的交易频繁程度。
  • Monetary (交易金额):客户在特定时间窗口内的总交易金额,衡量了客户的交易规模。

以下是一个使用Python进行RFM分析的示例代码:

# 创建示例数据集
data = pd.DataFrame({"CustomerID": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],"LastPurchaseDate": ['2023-01-01', '2023-02-15', '2023-03-20', '2023-04-10', '2023-05-05', '2023-06-12', '2023-07-08', '2023-08-22', '2023-09-30', '2023-10-15'],'Frequency': [2, 5, 1, 3, 2, 4, 1, 6, 3, 5],'Monetary': [100, 250, 50, 150, 120, 200, 40, 300, 180, 220]
})# 转换日期列为日期类型
data['LastPurchaseDate'] = pd.to_datetime(data['LastPurchaseDate'])# 计算Recency,即最近一次购买距今的天数
data['Recency'] = (dt.datetime.now() - data['LastPurchaseDate']).dt.days# 展示RFM特征结果
print(data[['CustomerID', 'Recency', 'Frequency', 'Monetary']])

在这里插入图片描述

RFM模型是一种强大的工具,它可以帮助企业识别不同价值的客户群体,从而制定更加精准的营销策略和客户维护计划。

类别变量处理:哑变量化与标签编码

在机器学习中,类别变量通常需要转换成数值型数据以供模型处理。这可以通过哑变量化(One-Hot Encoding)或标签编码(Label Encoding)实现。

哑变量化(One-Hot Encoding)

哑变量化是一种将类别变量转换为一组二进制列的方法,其中一个列对应一个类别。

import pandas as pd
from sklearn.preprocessing import OneHotEncoder# 示例数据
train_all_df = pd.DataFrame({"cust_gender": ["男", "男", "女", "女", "男"]
})# 转换前的数据查看
print("转换前:", train_all_df["cust_gender"].head())# 应用One-Hot编码
encoder = OneHotEncoder(sparse=False)
encoded_features = encoder.fit_transform(train_all_df[['cust_gender']])# 将编码后的数据转换为DataFrame,并指定列的数据类型为整数
train_all_df2 = pd.DataFrame(encoded_features, columns=encoder.get_feature_names_out())
train_all_df2 = train_all_df2.astype(int)# 转换后的数据查看
print("转换后:\n", train_all_df2.head())

在这里插入图片描述

标签编码(Label Encoder)

import pandas as pd
from sklearn.preprocessing import LabelEncoder# 示例数据
train_all_df = pd.DataFrame({"cust_gender": ["男", "男", "女", "女", "男"]
})# 转换前的数据查看
print("转换前:", train_all_df["cust_gender"].head())# 初始化标签编码器并转换数据
label_encoder = LabelEncoder()
train_all_df['cust_gender_encoded'] = label_encoder.fit_transform(train_all_df['cust_gender'])# 转换后的数据查看
print("转换后:", train_all_df[['cust_gender', 'cust_gender_encoded']].head())

在这里插入图片描述

模型衍生特征

聚类算法衍生特征

聚类算法可以将数据点分组,形成特征,这些特征可以揭示数据的内在结构。

from sklearn.cluster import KMeans
import pandas as pd# 创建示例数据集
data = pd.DataFrame({'ID': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],"Feature1": [1, 2, 3, 8, 9, 10, 15, 16, 17],"Feature2": [5, 6, 7, 12, 13, 14, 1, 2, 3]
})# 选择用于聚类的特征列
features = ['Feature1', 'Feature2']# 使用K均值聚类算法
# 这里假设知道数据应该被分为3个聚类
kmeans = KMeans(n_clusters=3, random_state=42)# 仅对特征列进行聚类,不包括 'ID' 列
data['Cluster'] = kmeans.fit_predict(data[features])# 打印结果
print(data)

在这里插入图片描述

异常值衍生特征

异常值检测可以帮助识别数据中的异常模式,这些模式可能表明欺诈或错误。

from sklearn.ensemble import IsolationForest
import pandas as pd# 创建示例数据集
data = pd.DataFrame({"Feature1": [1, 2, 3, 8, 9, 10, 15, 16, 17, 100],"Feature2": [5, 6, 7, 12, 13, 14, 1, 2, 3, 200]
})# 使用 Isolation Forest 算法进行异常值检测
isolation_forest = IsolationForest(contamination=0.01, random_state=42)# 训练模型
isolation_forest.fit(data)# 预测数据点是否为异常值,-1 表示异常值,1 表示正常值
outlier_scores = isolation_forest.predict(data)# 将预测结果添加到数据框中
data['Outlier_Score'] = outlier_scores# 打印结果
print(data)

在这里插入图片描述

通过聚类算法和异常值检测,可以从数据中衍生出新的特征,这些特征对于理解数据的分布、识别模式和异常行为非常有用。这些衍生特征可以增强机器学习模型的特征集,从而提高模型的预测能力。

挖掘思路推荐

在风险控制和数据分析中,挖掘有用的特征对于理解客户行为和预测风险至关重要。以下是根据不同数据类型推荐的挖掘方向和处理方式或特征示例:

类型挖掘方向处理方式或者特征举例
人行报告收入负债、信贷使用情况、履约情况、借贷申请多头、工作稳定性、一致性比对、房贷、车贷- 履约情况:RFM
- 窗口计算:近3个月贷款申请机构数
- 一致性比对:人行学历和自填学历的一致性等
IP/地址/LBS映射区域、轨迹、一致性交叉比对、经济发达程度、黑名单- 结构化处理/标准化处理
- 分组
- 聚类
交易、还款类额度使用情况,变化、交易通过/拒绝次数- mean/max/std/diff/count
催收记录电话接通情况-失联、半失联、催收语音通话长短、配合度、还款承诺- 最近一次通话时长/接通数/接通率等
- 语音处理(ASR/TTS)
通讯录号码分类、备注信息-亲属关系人群、机构标签(有车族)、关系网络- 备注存在子女、父母、老师等
- 特殊关键字(赌博、特殊行业)
- 一度、二度关系,例如通讯录里面互存
applist正面:学习类、母婴类、汽车保养类等;
负面:金融借贷、特殊关键字、某类占比浓度、黑名单
- 正面:含特殊关键字(贷、借、金)
- 未安装常见app(支付宝、微信)
理点事件间隔、特殊事件点击、行为序列- 事件A与事件B的时间差、事件A发生次数
- 序列编码(N-gram技术)

总结

特征工程不仅提升了模型的预测能力和泛化能力,还增强了模型的解释性,为风险管理决策提供了更加透明的依据。随着技术的不断进步,特征工程的方法也在不断创新,从传统的统计方法到现代的机器学习技术,再到深度学习的应用,特征工程正变得越来越智能化、自动化。在这一过程中,不断探索如何更好地从数据中提取风险信息,如何更高效地构建特征,以及如何更精准地评估风险。

总结来说,特征工程是金融风控领域中不可或缺的一部分,它不仅需要技术专长,还需要对数据的深入理解和创新的思维。通过综合考虑数据特性、应用需求和领域知识,我们可以构建出能够显著提升模型性能的特征集。同时,确保特征的异常处理得当,并且具有高度的业务可解释性,是实现有效特征工程的重要保障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411831.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240829版图的层次

1 最常用 Esc:取消操作 i:插入元件版图 c:复制 m:移动 u:撤销上一步操作 q:查看属性 f:全局视图 e:显示设置(图层、栅格、走线模式等) r:矩形填充…

<Rust>egui学习之小部件(六):如何在窗口中添加菜单栏部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第六篇博…

【爬虫软件】采集抖音博主的主页发布作品

这是我用python开发的抖音爬虫采集软件,可自动按博主抓取已发布视频。 软件界面截图: 爬取结果截图: 几点重要说明: 软件使用演示视频: https://www.bilibili.com/video/BV1Kb42187qf 完整讲解文章: ht…

释放金融交易的未来:掌握量化机器人技术

在金融交易的竞技场上,量化机器人技术正成为投资者手中的一张王牌,引领着交易策略的未来。本文将向您展示量化机器人如何成为金融交易的变革者,并向您展示如何利用这一技术来优化您的投资策略。 量化机器人的力量 量化机器人技术是金融交易领…

Anaconda3简介与安装步骤

目录 Anaconda3简介与功能 1.Anaconda3简介 2.主要功能和特点 3.使用场景 4.总结 Anaconda3安装 1.Anaconda3下载 1.1我的百度网盘 1.2官网下载 1.2.1访问官网 1.2.2输入邮箱 1.2.3登录你的邮箱下载(你的噶) 2.安装 2.1双击安装 2.2选择安…

Linux——nginx 负载均衡

常规的web服务器一般提供对于静态资源的访问,比如说:图片、web样式 网站提供的大部分交互功能都需要web编程语言的支持,而web服务对于程序的调用,不管编译型语言还是解释型语言,web服务同将对于应用程序的调用递交给通…

路别走窄了,华为认证的这些方向,比数通值钱

华为认证作为全球领先的ICT技术认证之一,以其高标准和权威性在全球范围内受到认可。它不仅代表了专业技能的国际水平,更是IT专业人士职业生涯中的重要里程碑。但谈论起华为认证,似乎大家都默认首选数通。 不止在华为认证,而是在整…

Vue使用v-model收集各种表单数据、过滤器

目录 1. 使用v-model收集各种表单数据2. 日期格式化3. 过滤器 1. 使用v-model收集各种表单数据 若<input type“text”/>&#xff0c;则v-model收集的是value值&#xff0c;用户输入的就是value值若<input type“radio”/>&#xff0c;则v-model收集的是value值&a…

H5开发有哪些技巧?

随着现代社会的飞速发展&#xff0c;网页开发已经从传统的HTML、CSS、JavaScript往H5发展。H5也称为HTML5&#xff0c;可以理解为是HTML的升级版&#xff0c;具有更加优秀的性能、更加完善的功能和更加多样的体验。因其灵活性和跨平台特性&#xff0c;成为了各类移动应用和网页…

R语言报错 | object ‘integral‘ not found whilst loading name

1、报错背景 Registered S3 method overwritten by htmlwidgets:method from print.htmlwidget tools:rstudio Error: package or namespace load failed for ‘Seurat’:object integral not found whilst loading namespace spatstat.core 当我想library&…

sheng的学习笔记-AI-半监督学习

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是半监督学习 我们在丰收季节来到瓜田&#xff0c;满地都是西瓜&#xff0c;瓜农抱来三四个瓜说这都是好瓜&#xff0c;然后再指着地里的五六个瓜说这些还不好&#xff0c;还需再生长若干天。基于这些信息&a…

【Qt CMake】Qt5Widgets.dll:-1: error: LNK1107: 文件无效或损坏: 无法在 0x308 处读取

项目场景&#xff1a; CMake 编译QT 工程 编译报错 E:\tool\Qt5.15.2\5.15.2\msvc2019_64\bin\Qt5Widgets.dll&#x1f44e; error: LNK1107: 文件无效或损坏: 无法在 0x308 处读取 问题描述 Cmkae 报错&#xff1a; E:\tool\Qt5.15.2\5.15.2\msvc2019_64\bin\Qt5Widgets.dll…

Linux 数据结构 链表

1.段错误调试方法&#xff1a; 1.按照网上的方法配置Ubuntu&#xff0c;允许生成core文件 2.重新编译代码并加入-g选项(允许进行GDB调试) 3.ulimit -c unlimited 不限制core文件的生成的大小 4.执行代码,复现段错误,产生包含出错信息的core文件(检查cor…

Android UI绘制原理:UI的绘制流程是怎么样呢?为什么子线程不能刷新UI呢?讲解大体的流程是怎么样的

目录&#xff1a; 一、 为什么要学习android UI绘制原理呢&#xff1f;对我们有什么帮助&#xff1f; 1.解决复杂布局问题&#xff1a;了解UI绘制原理可以帮助我们更好地理解和解决布局问题&#xff0c;比如使用自定义View、优化布局层级等。 2.知道何时触发布局&#xff08;…

redis面试(二十五)CountDownLatch实现

CountDownLatch最基本的原理&#xff0c;就是用来阻塞线程的&#xff0c;java本身也有CountDownLatch&#xff0c;用多线程处理分批处理多数据的时候很有用 基本的逻辑就是&#xff0c;同时开多个子线程&#xff0c;然后主线程进入等待&#xff0c;只有当其他子线程全都结束之…

JAVA后端框架【spring】--超详解

什么是spring? spring是一个轻量级的ioc和Aop的一站式java开发框架&#xff0c;简化企业级开发 轻量级&#xff1a;框架体积小&#xff08;核心模块&#xff09; IOC IOC:inversion of control 控制反转 把创建对象的控制权反转给spring框架 AOP Aop:面向切面编程 将程…

pnpm 查看库的所有版本

1、最近在做图布局的时候&#xff0c;发现默认版本是beta版 2、那么我们如何来查看远程库中有什么版本可以安装呢&#xff1f; 3、使用命令&#xff1a; pnpm view antv/layout versions pnpm view 这里替换成要查看的库名 versions

Android APP 常见概念与 adb 命令

adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server&#xff0c;会接收 adb 的命令然后帮助管理&#xff0c;控制&#xff0c;查看设备的状态、信息等&#xff0c;是开发、测试 Android 相关程序的最常用手段。…

Jenkins安装使用详解,jenkins实现企业级CICD流程

文章目录 一、资料1、官方文档 二、环境准备1、安装jdk172、安装maven3、安装git4、安装gitlab5、准备我们的springboot项目6、安装jenkins7、安装docker8、安装k8s&#xff08;可选&#xff0c;部署节点&#xff09;9、安装Harbor10、准备带有jdk环境的基础镜像 三、jenkins实…

addroutes和next()导致的页面无法跳转问题,如登录之后无法跳转到首页,无法重定向,使用next(to)

版本 vue router 3 问题说明 登录成功后&#xff0c;想重定向到/index&#xff0c;执行router.push之后进入beforeEach&#xff1b; 由于第一次访问&#xff0c;判断用户信息为空&#xff0c;需要异步拉取用户的权限等信息&#xff0c; 获得响应后&#xff0c;使用addRoutes批…