图数据挖掘!使用图分析+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)

大家都在看

  • 解决:阿里云服务器添加安全组端口映射后仍无法访问

    “忘记了不该忘的人,我的内心满是伤痕…….” “呸,渣女,什么人?那是配置!配置!配置!” 问题: 阿里云服…

    数据库 2023年6月6日
    083
  • 一,Flink快速上手

    1.依赖配置 1.1 pom文件 8 8 1.13.0 1.8 2.12 1.7.30 org.apache.flink flink-java ${flink.version} o…

    数据库 2023年6月6日
    097
  • ansible-复制模块

    简介:临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。 1、复制模块 可在终端执行ansible-doc copy…

    数据库 2023年6月14日
    087
  • java.sql.SQLException: The server time zone value is unrecognized

    在写Mysql数据库连接工具的时候出现了这样的报错,其实原因写的挺清楚的 就是在连接的时候没有加上时区的信息; 解决办法就是在JDBC连接的URL里面加上serverTimezon…

    数据库 2023年6月6日
    087
  • MIT 6.824 Lab2C Raft之持久化

    书接上文Raft Part B | MIT 6.824 Lab2B Log Replication。 实验准备 实验代码: git://g.csail.mit.edu/6.824-…

    数据库 2023年6月14日
    072
  • [springmvc]springmvc超详细总结笔记

    springMvc 1.回顾mvc 模型 模型(dao,service):业务逻辑,保存数据的状态 视图 视图(jsp,html……):展示页面 控制器 控…

    数据库 2023年6月16日
    070
  • Java基础七—Java并发基础

    一个类在可以被多个线程安全调用时就是线程安全的。 线程安全不是一个非真即假的命题,可以将共享数据按照安全程度的强弱顺序分成以下五类: 不可变、绝对线程安全、相对线程安全、线程兼容和…

    数据库 2023年6月6日
    0256
  • MySQL实战45讲 10

    10 | MySQL为什么有时候会选错索引? 使用哪个索引是由 MySQL 来确定的 可能遇到的情况:一条本来可以执行得很快的语句,却由于 MySQL 选错了索引,而导致执行速度变…

    数据库 2023年5月24日
    0128
  • Postman调用token配置为全局变量,适用于所有接口

    操作方法 1.在Request区域→Tests区域 填写调用方法 //在Postman的Tests填写以下代码,设置Postman的环境变量token方法://断言返回200状态码…

    数据库 2023年6月14日
    0103
  • springmvc静态资源配置

    <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>o…

    数据库 2023年6月16日
    097
  • CentOS 安装 Docker CE

    CentOS 安装 Docker CE 警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker. 准备工作 系统要求 Docker CE 支…

    数据库 2023年6月6日
    089
  • MySQL优化之索引解析

    索引的本质 MySQL索引或者说其他关系型数据库的索引的本质就只有一句话, 以空间换时间。 索引的作用 索引关系型数据库为了 加速对表中行数据检索的( 磁盘存储的) 数据结构 索引…

    数据库 2023年5月24日
    097
  • 设计模式之建造者模式

    一、建造者模式:如果创建某个对象要经过多个组件组装才能完成,我们可以设计一个充当建造者角色的类和一个充当指挥者的类,通过指挥者控制建造者按步骤组装需要创建的对象,这样客户端就只依赖…

    数据库 2023年6月14日
    083
  • 了解HTML/CSS/JS/JQuery/ajax等前端知识

    什么是HTML 超文本标记语言 浏览器通过识别相应的标签来加载页面 通过HTTP协议传输,不是编程语言 HTML常用标签 title script style link meta …

    数据库 2023年6月16日
    0140
  • Java学习-第一部分-第二阶段-第一节:面向对象编程(高级)

    面向对象编程(高级) 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 类变量和类方法(static) 类变量 类…

    数据库 2023年6月11日
    0106
  • Are You OK?主键、聚集索引、辅助索引

    每张表都一定存在主键吗? 关于这个问题,各位小伙伴们不妨先自己想一想,再往下寻找答案。 首先公布结论: 对于 InnoDB 存储引擎来说,每张表都一定有个主键(Primary Ke…

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