全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
1382 0
2020-08-07
深度学习:使用自动编码器检测欺诈性医疗保健提供者
介绍
在本文中,我将分享我的经验,即如何利用深度神经网络的功能从可以被识别为数据集中异常的医疗保健交易中有效识别欺诈医疗保健提供者。对于此解决方案,我使用了自动编码器机器赚钱算法,并将其在H2O平台中实现。
让我们从定义开始。异常是指与数据集中的其他实例明显不同的数据实例。在建立预测模型之前,通常将这些视为统计异常值或数据中的错误。但是有时数据中的异常可能表明以前发生过一些潜在的有害事件。在医疗保险索赔数据中,这些是欺诈性索赔。
卫生保健欺诈
医疗保健提供者欺诈是Medicare面临的最大问题之一。根据政府的说法,由于医疗保险索赔中的欺诈行为,医疗保险总支出呈指数增长。医疗保健欺诈是一种有组织的犯罪,涉及提供者,医生,受益人的同伴一起共同提出欺诈索赔。保险公司是受这些不良做法影响最脆弱的机构。由于这个原因,保险公司增加了其保险费,结果,医疗保健日趋昂贵。
根据HHS和DOJ,《 2014年2月卫生保健欺诈和滥用控制计划年度报告》(2014年2月)只是一个说明这个问题有多严重的例子(http://oig.hhs.gov/publications/docs/hcfac/ FY2013-hcfac.pdf),佛罗里达州的四名医院高管被判贿赂和回扣以获取Medicare患者。高管人员向Medicare开具账单,告知其患者不合格的治疗方案,虚假的患者病历表,并给予不必要的精神药物以使患者似乎需要强化的精神卫生服务。在这种情况下,关系审查起着重要作用。它显示提供者正在通过过度治疗患者并向政府收费来利用其患者。
医疗保健欺诈和滥用有多种形式。提供商最常见的欺诈类型包括:
·       为未提供的服务开票。
·       对同一服务的索赔重复提交。
·       歪曲提供的服务。
·       收取比实际提供的服务更为复杂或昂贵的服务。
·       如果实际提供的服务未包括在内,则为该服务开票。
异常检测
即使欺诈性索赔对保险公司造成重大影响,但欺诈性索赔仅占全部索赔的2%。由于这是欺诈的百分比较低。在分析正常索赔时,这些欺诈索赔通常会偏离其他正常索赔(作为异常)。这些特定的声明不同之处在于它们与数据集中的其他预期模式不匹配。这种情况通常称为异常或罕见事件。使用机器学习算法检测这些异常有助于识别欺诈提供者。
有许多ML算法和程序包可用于此异常检测。这几个...
·       K最近邻居
·自动      编码器-深度神经网络
·       K均值
·       支持向量机
·       朴素贝叶斯
由于欺诈索赔实例的数量少并且构成了高度不平衡的数据集,因此无监督算法的机器学习算法更适合此问题。我使用了称为自动编码器的新神经网络体系结构。让我们看看自动编码器如何工作,我解决了欺诈检测问题。
自动编码器
自动编码器算法类似于降维技术(例如主成分分析) ,该技术  可帮助识别数据中的重要特征,并且特征可以被去除。这种自动编码器是一种无监督的机器学习,它接受输入并使用神经网络重构输入。您可能想知道创建与输入相同的输出的目的是什么。该自动编码器在重建输入时会学习要重建的权重。这些权重可帮助我们确定与输入数据集模式有多少差异。
自动编码器体系结构具有输入层,输出层具有几个隐藏层。在这种体系结构中,神经元的数量一直减少到中间。来自输入层的此过程称为编码过程。这些较少位数表示的空间称为“潜在空间”,而最大压缩点称为瓶颈。在模型到达此瓶颈层之后,模型将尝试重构输入并增加神经元直到输出层。此步骤称为解码过程。
在上图中(来源:https : //www.deeplearning-academy.com/p/ai-wiki-deep-autoencoder)-具有三个隐藏层的2层自动编码器。输入和输出层具有相同数量的神经元。我们将六个实数值输入到自动编码器中,该编码器在瓶颈处(中间层)将其压缩为三个实数值。解码器使用这三个真实值,尝试重建原始的六个真实值,这些原始值我们已作为输入馈入网络。
数据
对于本文,我在Kaggle的Healthcare Provider欺诈检测分析(https://www.kaggle.com/rohitrox/ ... -detection-analysis)完成站点中使用了公开可用的数据集。数据集包含每个提供者的住院索赔,门诊索赔和受益人详细信息。另外,数据集具有带有欺诈或不欺诈标签的提供者列表。
这是数据的细节。
·       住院数据 -该数据提供了有关为那些入院患者提出的索赔的见解。它还提供其他详细信息,例如其入院和出院日期,入院日期和诊断代码。
·       门诊病人数据 -此数据提供有关那些就诊但未入院的患者所提出的索赔的详细信息。
·       受益人详细信息数据 -此数据包含受益人KYC详细信息,例如健康状况,他们所属的雷焦地区等。
特征工程
         对于此分析,我将要素工程的工作仅限于数值数据,并删除了无关的要素,例如与入学相关的日期和比赛。
·从      数字到分类的映射:  按提供者ID,受益人代码和医生汇总的财务相关功能。
·       分组稀疏类:   对于诊断代码,这是高度稀疏的过程代码,而样本数量较少的许多代码。我确实将高频代码和其他剩余的代码分组为一个  “其他”代码。
·       创建伪变量:   我确实将类别特征手动转换为用于特征诊断代码,致命代码和过程代码的伪变量。
H2O实施
这里使用的机器学习平台是H2O,它是用于机器/深度学习的快速,可扩展的开源应用程序。h2o的特长是它使用内存中压缩来处理内存中的数十亿条数据行,即使是在小型集群中也是如此。通过R,Python,Scala,Java,JSON以及内置的Web界面可以轻松使用API??。Flow您可以在此处找到更多信息:https :  //www.h2o.ai
我的输入有213个输入要素,我用4个完全连接的隐藏层凝视了模型,并选择了[30
这是模型参数和脚本。请查看我的GitHub中的完整代码
anomaly_model = H2ODeepLearningEstimator(激活=“ Tanh”,
隐藏= [30
历元= 100,
标准化=真,
starting_metric ='MSE',#MSE(自动编码器)
损失=“自动”,
train_samples_per_iteration = 32,
shuffle_training_data = True,
autoencoder = True,
l1 = 10e-5)
anomaly_model.train(x = x,training_frame = train_h2o)
模型损失
该模型似乎是从第二个时代本身收敛的。尽管有很大的改进空间,但我已经很好地使用了简单工具。选择这种简单的自动编码器体系结构是为了便于在这种方法中针对复杂的医疗数据进行解释。可以通过添加更多隐藏层来提高整体性能。更多的隐藏层将允许该网络对输入要素之间更复杂的关系进行编码。
重建错误检查
自动编码器经过培训可以减少重构错误,如下所示:
预测= anomaly_model.predict(test_h2o)
error_df = pd.DataFrame({'reconstruction_error':test_rec_error_df ['Reconstruction.MSE'],'true_class':Y_test_df})
error_df.describe()
重建错误
true_class
计数
1077.000000
1077.000000
意思
0.015079
0.083565
性病
0.310764
0.276864

0.000011
0.000000
25%
0.000022
0.000000
50%
0.000083
0.000000
75%
0.000328
0.000000
最高
9.872896
1.000000
ROC曲线检查
由于我们的数据集不平衡,因此它们的用处不大,预计ROC曲线将接近完美。因为按比例计算的欺诈索赔很少(2%),所以只要简单地将每个索赔视为正常就可以产生98%的准确性,从而可以生成漂亮的曲线。  
召回与精确阈值
精度和召回率是数据科学中永恒的权衡,因此,在某些时候,您必须划出任意界限或阈值。划清界限的地方实际上是一项业务决策。现在,让我们看一下查全率与精确度之间的权衡。
在这种情况下,您需要在丢失欺诈性交易和错误地将交易标记为欺诈性交易之间进行权衡,即使不是这样。将这两个权重加到计算中,您可以得出一些理论上的最佳解决方案。在实际业务中,确定阈值并非易事的场景必须考虑多个因素(当然,拒绝合法索赔作为欺诈时的客户情绪。对于本文,根据当前结果,我将阈值选择为0.01 。
现在,我们已经与业务客户进行了交谈并确定了一个阈值,下面让我们看一下它与重构错误的比较。设置阈值的地方似乎错过了正常交易的主要类别,但仍然会收到很多欺诈交易。
分类报告
最后,我们来看一下测试集的传统分类报告。您还会注意到,我们仅抓到了53%的欺诈索赔,这些索赔的面值似乎很低。记住,我没有使用数据中的所有功能。同样,对于这种模型,我假设来自欺诈提供者的每项索赔都是欺诈。
结论
在本文中,我介绍了医疗保健频繁提供者的情况,并说明了如何使用异常检测技术来发现对欺诈性医疗索赔的检测。正如我提到的那样,我假设欺诈提供的每项索赔都是欺诈,并且我使用的功能有限。另外,我没有在模型体系结构中尝试很多选项。通过添加更多隐藏层,可以通过多种方式提高整体性能。更多的隐藏层将允许该网络对输入要素之间更复杂的关系进行编码。最后,我在H2O深度学习平台中解释并运行了一个简单的自动编码器。希望这对少数人有用,

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群