图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

💡 作者:韩信子@ShowMeAI
📘 机器学习实战系列https://www.showmeai.tech/tutorials/41
📘 本文地址https://www.showmeai.tech/article-detail/307
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

保险欺诈是一个巨大的问题,保险业长期以来一直在与欺诈作斗争。健康保险欺诈是一种作假骗保的行为,整个欺诈过程可能涉及患者、医生和受益人的同行的配合联合行动,联合欺诈的异常行为可能形成一个欺诈圈, 普通机器学习AI算法很难基于基础信息发现欺诈活动。而这类场景有着强有效作用的,是关系网数据的挖掘和信息支撑。

大家可以从下述新闻做一些了解:
📘同盾科技:AI智能助力保险反欺诈,科技能力再升级_财经_中国网;
📘数千亿保险反欺诈市场:人工智能寻觅用武之地_腾讯新闻

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

在本篇内容中, ShowMeAI 将基于保险欺诈场景案例给大家讲解,如何进行有效的图挖掘,并将挖掘到的信息提供给AI模型,辅助精准检测识别商业保险欺诈。

本篇内容结构如下:

  • Graph 图与图挖掘基础
  • 图搜索和查询以了解关系
  • 使用图特征增强机器学习模型

💡 Graph图与图挖掘基础

📌 什么是Graph图

在图论中,图是一种结构,包含『相关联』的一些节点和连接的边。图中的对象称为『 节点』,每个相关的节点之间的连接称为『 』。

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

简而言之,Graph图是任何类型的网络的数学表示,包含:

  • 节点,在医疗保险场景中,可以是
  • 投保人
  • 医生
  • 边是节点之间的关系/交互/行为
  • 索赔保单持有人
  • 索赔被保险人

💡 图挖掘:搜索和查询

图形数据库是专门为图关联数据存储和查询而构建的,图查询语言是根据节点之间的模式匹配来完成查询的。通过图查询语言进行图可视化有助于分析大量数据并识别欺诈活动的模式。典型的图数据库如 📘Nebula Graph;,我们本次的分析挖掘用到的数据集是 🏆insurance claims 保险索赔数据,大家可以通过 ShowMeAI 的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『 实战』,或者点击 这里 获取本文 [16]图数据挖掘!使用图分析+AI进行保险欺诈检测insurance claims 保险索赔数据集

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

📌 欺诈典型案例

查找欺诈性索赔『C4377』的投保人提出的所有索赔,并显示索赔『C4377』患者的疾病。

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

为了深入了解这个投保人(PH3759),我们看到这个人在不同的提供者那里看到了不同的医生,这是不正常的。

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

📌 与欺诈性索赔相关的投保人关系

下图显示了具有欺诈风险『C4377』的连接关系。我们看到一个高风险投保人处于 1 度连接中,而另一个高风险投保人处于 3 度连接中。

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

💡 使用图特征增强机器学习模型

特征工程是从现有数据中抽取有用信息的过程。

关于机器学习特征工程,大家可以参考 ShowMeAI 整理的特征工程最全解读教程。
📘机器学习实战 | 机器学习特征工程最全解读;

大部分机器学习应用依赖于结构化表格数据建模,而没有有效利用图关联关系和上下文数据,在我们今天提到的这类关联场景中,这类信息至关重要。如果不考虑关联,单独看每个索赔/提供者都像是合法的。

在下面内容中,ShowMeAI 会演示把结构化表格数据转换为图,并提取图特征进而增强机器学习模型方法示例。包括下面几个环节:

  • 将结构化数据提取到 Python 图结构中
  • 图数据的特征工程
  • 将图特征整合到机器学习管道中

📌 将结构化数据提取到图结构中

我们这里用到Python图工具 📘iGraph 来完成基本操作,它可以有效地和 pandas Dataframe 等结构结合。

数据集来自医疗保险领域,包括提供者提出的索赔以及每项索赔的受益人信息,可以通过 ShowMeAI 的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『 实战』,或者点击 这里 获取本文 [16]图数据挖掘!使用图分析+AI进行保险欺诈检测insurance claims 保险索赔数据集

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

具体的信息包括:

  • 患者相关特征:年龄、性别、位置、健康状况等。
  • 索赔相关特征:起止日期、索赔金额、诊断代码、程序代码、提供者、主治医师、手术医师等。

我们本篇中的节点主要选取了『提供者』和『主治医师』,分别对应 目标。(以下仅提供核心代码作为示例)

导入包
from igraph import *
import pandas as pd

读取数据
df = pd.read_csv('CLAIM.csv')
G_df = df[['CLAIM_ID', 'POLICYHOLDER_ID']]

从Dataframe创建Graph无向图
G = Graph.DataFrame(G_df, directed=False)

📌 图数据特征工程

我们可以使用图算法对图结构进行挖掘,拿到潜在有意义的表征特征,例如连接度量和基于关系的聚类特征,进而加强后续机器学习的检测效果。

Degree 度

节点的度可以定义为连接节点的边数。

degree = pd.DataFrame({'Node': G.vs["name"],
        'Degree': G.strength()})
degree.shape

closeness 接近中心性

在连通图中,节点的接近中心性(closeness)是网络中中心性的度量,计算为该节点与图中所有其他节点之间的最短路径长度之和的倒数。

closeness = pd.DataFrame({'Node': G.vs["name"],
        'Closeness': G.closeness()})
closeness.shape

Infomap 信息图

Infomap是一种能够实现高质量社区的图聚类算法。

communities_infomap = pd.DataFrame({'Node': G.vs["name"],
        'communities_infomap': G.community_infomap().membership})
communities_infomap.shape

我们把抽取的图特征合并成Dataframe,以便后续机器学习建模使用。

合并图特征
graph_feature = [degree, closeness, communities_infomap]
graph_feature = reduce(lambda left,right: pd.merge(left,right, how = 'left',on='Node'), graph_feature)

📌 将图特征整合到机器学习管道中

接下来我们将图特征合并到原始数据中,并基于时间对数据集拆分,从而为机器学习模型准备完整的数据。

train = Final_Dataset_Train[Final_Dataset_Train['ClaimStartDt'] < '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', axis = 1)
print(train.shape)
test = Final_Dataset_Train[Final_Dataset_Train['ClaimStartDt'] >= '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', axis = 1)
print(test.shape)x_tr = train.drop(axis=1,columns=['PotentialFraud'])
y_tr = train['PotentialFraud']x_val = test.drop(axis=1,columns=['PotentialFraud'])
y_val = test['PotentialFraud']

下面,为了进行对比,我们使用 2 个算法和 3 类特征,建模和对比效果:

算法

  • 逻辑回归
  • 随机森林

特征空间

  • 原始功能
  • 原始特征+节点级特征
  • 原始特征+节点级特征+聚类特征
建模示例代码
lr = LogisticRegression(penalty='none', solver='saga', random_state=42, n_jobs=-1)
rf = RandomForestClassifier(n_estimators=300, max_depth=5, min_samples_leaf=50,
                            max_features=0.3, random_state=42, n_jobs=-1)
lr.fit(x_tr, y_tr)
rf.fit(x_tr, y_tr)
preds_lr = lr.predict_proba(x_val)[:,1]
preds_rf = rf.predict_proba(x_val)[:,1]

我们使用 AUC 作为测试集的评估指标,ROC 曲线如下:

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

结合最终的效果图,可以很清晰地看到:

  • 具有图特征的模型表现出色
  • 节点级别特征效果非常好
  • 聚类特征对结果也有补充作用

💡 总结

对于关联型业务场景,我们可以查询、可视化和分析图数据,构建有效的信息支撑更强大的商业欺诈方案,特别是对于试图通过复杂网络结构隐藏的欺诈活动,相比传统方法有很大效果提升。

将关系信息和图的预测特征添加到机器学习管道中可以提高模型性能,针对多方参与欺诈活动的场景尤其明显。

参考资料

图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

Original: https://www.cnblogs.com/showmeai/p/16628050.html
Author: ShowMeAI
Title: 图数据挖掘!使用图分析+AI进行保险欺诈检测 ⛵

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612993/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MyBatis(二)-CURD (ResultMap 一对一,一对多)

    1、insert 标签 1.1 获取SqlSessionFactory 对象的通用方法 方便后面分测试; //获取SqlSessionFactory 对象的通用方法 public …

    数据库 2023年6月16日
    088
  • 牛客SQL刷题第三趴——SQL必知必会

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots …

    数据库 2023年6月16日
    0101
  • MySQL 视图简介

    对数据库中数据的查询有时是非常复杂的,如表连接、子查询等。这种查询很难写,而且容易出错。此外,当您专门操作表时,有时只需要操作部分字段。 [En] The query about …

    数据库 2023年5月24日
    0112
  • jdbc-实现用户登录业务(存在sql注入)

    package com.cqust; import java.sql.Connection;import java.sql.DriverManager;import java.sq…

    数据库 2023年5月24日
    084
  • MySQL中 VARCHAR 可设置的最大长度是多少?

    在使用MySQL的过程中,在存储字符串时,大家或许都有过这样或那样的困惑,譬如: 对于固定长度的字符串,为什么推荐使用 CHAR 来存储? VARCHAR 可设置的最大长度是多少?…

    数据库 2023年6月11日
    0100
  • 线程池执行流程图

    public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeU…

    数据库 2023年6月16日
    0134
  • Jmeter性能测试场景的创建和运行

    目录 性能测试场景的分析 项目背景 Jmeter指标 性能测试场景的设计以及准备 * 性能测试的总结 性能测试场景的分析 项目背景 ​ 实际工作中,我们拿到一个项目一般来说都会是项…

    数据库 2023年6月6日
    094
  • Redis 使用的 10 个小技巧

    Redis 在当前的技术社区里是非常热门的。从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路。 随之而来的一系列最佳实践,使…

    数据库 2023年6月9日
    075
  • Linux常用命令总结(二)

    1.Netstat 命令 用于显示各种网络相关信息,如网络连接,路由表,接口状态等待。 例如 统计IP110.120.119.XXX的连接数: netstat | grep 110…

    数据库 2023年6月16日
    089
  • MDC日志链路设计

    正文 本篇博客主题是MDC(MDC 全称是 Mapped Diagnostic Context,可以粗略的理解成是一个线程安全的存放诊断日志的容器),其具体流程是通过某些标识将整个…

    数据库 2023年6月6日
    0103
  • JAVA oa 办公系统模块 设计方案

    1.模型管理 :web在线流程设计器、预览流程xml、导出xml、部署流程 2.流程管理 :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 、自由跳转 3….

    数据库 2023年6月6日
    090
  • python爬虫—xpath基础教程

    XPath: XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找…

    数据库 2023年6月11日
    086
  • springboot~用正则表达式提取bearer token

    前后一体的应用,是这样进行认证的 用户向服务端发送验证信息(用户名、密码); 服务端验证成功就向用户返回一个sessionid; 服务端保存了这个session_id对应的信息,并…

    数据库 2023年6月6日
    0102
  • MySQL 中的锁机制

    技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性。 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) 加锁阶段:在加锁阶段…

    数据库 2023年6月11日
    0107
  • PLSQL_developer安装与配置

    前言: 记录安装与配置操作 环境: 客户机:windows服务器:虚拟机中的windows server 2003/————&#82…

    数据库 2023年6月11日
    093
  • 【MySQL】MySQL的安装、卸载、配置、登陆和退出

    1 MySQL安装 安装环境:Win10 64位软件版本:MySQL 5.7.24 解压版 1.1 下载 https://downloads.mysql.com/archives/…

    数据库 2023年6月16日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球