草庐IT

反诈困境,国有大行如何破局?

腾讯云数据库 2023-03-28 原文

近年来,各类欺诈案件屡见报端,“金融造富”的骗局防不胜防。网上银行欺诈、电话银行欺诈、网络欺诈、电信欺诈、盗刷银行卡、POS机套现、贷款欺诈……庞大的利益诱惑下,金融诈骗黑产的水深不见底。各大银行风控部门也一直在致力于迭代反欺诈系统守卫人民财产。

反诈困境

某国有大型银行信用卡中心在与腾讯云沟通时曾表示,“传统的人工式的或者基于专家经验的反欺诈系统已经不能适应复杂的金融诈骗模式了。”

首先是审查过程人工操作步骤繁琐,效率低下。行方在人工审查的时候,经常需要致电客户本人及所在单位核实信息的真实性。评估系统对申请件进行初步评估后,对个人还要审查申请人和担保人的多方面资料,如信用记录、已知的资产、职业特性等。了解这些信息往往需要跨系统、跨部门调阅文件,如向影像系统调阅申请件影像文件、从发卡系统获取现有客户情况、从征信系统获取客户征信报告等。

这些看似简单的操作,实际上却繁琐耗时。“如果有一个系统,能够把这些关联信息清晰呈现出来,让我们‘一次性’看清所有问题,会高效很多”,业务员小陈(化名)表示。


审批过程缺少关联视角

当前银行面对的另一个问题是团伙欺诈

相较于个人欺诈,团伙欺诈的波及范围更广、社会危害性更高。在信用申请欺诈中,团伙作案会给行方造成塌方式的损失。

“现有的信用卡审批规则多是针对个人的,”该信用卡中心负责人表示,“那些针对个人欺诈的规则对团伙性欺诈难以起到令人满意的效果。”

TGDB如何破局?面对上述问题,该信用卡中心积极寻找可行的解决方案,最后把目光投向了近年来势头正猛的“图数据库”。

生活中再平常不过的“关系”,在图数据库中却和“数据”本身一样重要。

金融世界里,洗钱人员利用短时间内的多层转账“关系”隐藏脏钱来源;


**洗钱网络多层转账“关系”

杀猪盘利用网络交友“关系”诱骗受害者;

网络社交“关系”

欺诈团伙利用彼此秘而不宣的“关系”内外勾结,骗取高额贷款……

信贷申请欺诈“关系”网络

利用好金融世界里这些常被忽视的“关系”,对金融的健康发展有着重要作用,而金融搞好了,一着棋活,全盘棋活。

如果不能改变数据本身,或许我们可以改变数据的存储方式。”信用卡中心负责人说。

经过多次对比测试,该国有大型银行最终选择了腾讯云数图TGDB。TGDB是腾讯云自研的分布式原生图数据库,支持动态在线扩容,高效支撑万亿点边超级大图查询、计算、分析,毫秒深链查询;底层不依赖第三方存储系统,兼容国际开源生态和国产底层硬件及操作系统;简单易用的同时可减少大量开发成本。作为目前唯一一款同时支持Cypher和Gremlin两种查询语言的图数据库,TGDB也以更开放的技术架构给了客户足够灵活的运用空间。

在TGDB的协作下,该行信用卡中心将历史客户的申请信息、贷后信息、征信信息以及其他第三方数据中的字段抽象为TGDB图模型中的“点”和“边”。

“这种以点、边方式构建模型的方法和传统关系型数据库二维表对比起来,更加直观有效”,TGDB相关负责人这样解释道。该图模型最终导入数据总量达10亿个点,40亿条边


基于TGDB构建反欺诈图谱,赋能业务

正是以事物之间的关联为突破口,该信用卡中心通过关联关系挖掘金融犯罪中的欺诈团伙,降低了地毯式排查的成本,基于TGDB的反欺诈系统显著提高了该行对团伙欺诈的甄别效率,原本数十分钟才能完成的新进风险指标计算现在可实时完成。

建模完成后,信用卡中心根据过往经验,初步验证了:申请信息异常共用、申请信息一致性、与高风险节点关联这三类图规则。正常情况下不应该存在多人共用同一申请信息、申请人历史申请记录有大量不一致信息、申请人与公开欺诈者有共用信息等情况。这些情况往往预示着当前申请人很可能为欺诈团伙一员,需要重点排查。

TGDB提供聚类、标签传播、最小连通图等图算法,能够迅速查找以当前申请人为中心的社交网络,挖掘当前申请人的其他关联信息,快速排查与当前申请人存在直接或间接关联的其他可疑分子,让黑产分子逃无可逃。验证结果证明,与高风险节点关联的申请人的欺诈风险比其他普通申请人的欺诈风险高出数倍,这也证明了基于关联关系查找欺诈团伙的有效性

利用图分析侦测信用卡中介欺诈圈子

未来,图谱还可不断升级

基于图数据库的反欺诈图谱是可以不断演进升级的。未来,该行信用卡中心会考虑将“时间”因素引入图谱,从时间维度上排查与当前申请人有可疑关联的人群。该行信用卡中心负责人表示,“这套反欺诈系统的思想不仅仅在信用卡申请中适用,未来在反洗钱、反套现等金融风控领域也会发挥效用,行方会以此为基础建立全平台、全业务的图技术风控。”

有关反诈困境,国有大行如何破局?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐