一、如何成为一名合格的风控算法工程师?
“风控算法工程师”这个职位按字面意思可以拆成3个词:风控、算法、工程师,对应的能力就是业务知识、算法理论、编程能力。
如果经过一定时间的学习和培养你在这三个方面还有特别明显的短板,那很难称之为“合格”。
1. 业务知识
熟悉业务知识是基本功。
了解业务才能够建立实际可用的模型,目前还不存在解决所有问题的万能算法,还是回到现实,从业务学习开始。
互联网金融领域有着非常丰富的业务场景,同时它和传统银行业务场景差别非常大。用户没有面签不直接见面,依赖的数据是弱数据、大数据,是数据和技术驱动的业务场景,但这并不代表你不需要去理解业务的内涵。
每一个现实场景就是一个应用题,作为算法人员需要理解题干,从场景中抽象出需要解决的问题,将它翻译成算法问题,然后再使用合适的算法去解决它。
很多时候对业务问题的理解和抽象,相当于在设定模型开发的大纲。比如在白条场景中,我们想要预测授信用户的信用风险,我们首先就需要考虑以下问题:
我们要观察多久的订单?
逾期多少天才算坏用户?
逾期定义中是否需要考虑金额限制?
好用户怎么定义?
需不需要考虑样本不均衡的问题?
为了保证模型的稳定性如何进行窗口验证比较科学?
针对业务的一些变动,比如订单制和账单制的调整,我们如何去修正模型的目标变量?
总之基本的信贷概念和业务模式是必须去了解的,有助于你设计开发大纲。除了大纲,风控模型的开发也需要知道业务细节。这在Y变量定义,X变量加工,模型评估都会涉及。
以Y变量定义为例,一般金融行业会把样本分为四部分:G(好用户);B(坏用户);I(不确定用户);E(剔除用户)。
实操中对这四个群体通常会有不同定义的微调。有的时候是从算法角度考虑,但更多时候是从业务需求角度考虑。预测用户未来的白条消费金额,止付用户就会被划入E类用户;预测欺诈用户,因为样本很少,信用风险用户也被划入了B类坏用户。X变量除了根据业务知识挑选数据源外,更多时候业务知识指导特征构造。
这里我插一句,不要轻视特征工程,特征工程仍然是非常重要的内功,不是你搞一个深度学习框架就可以解决一切。
金融行业的业务复杂通常和时间挂钩,必须掌握业务概念的细节。对于白条业务,就有下单,到账,应还款,实际还款,最低还款,逾期,退款等一系列细节概念,它们都是在一个时间轴上的,特征加工很讲究这些细节。
只有清楚这些概念,而且知道这些行为如何产生和被记录,才能够构造相关的有效特征。好的特征不但可以提高模型效果,也便于从业务上把握模型的跨时间有效性。
业务场景很多时候还决定了你模型效果评估的方式,因为业务很灵活,可以做到有取有舍。有些场景需要模型是为了在误杀尽可能少的情况下抓住更多的坏人;有些场景需要模型需要有更好的排序能力但并不注重绝对值预测;有些场景需要模型需要有很准确的数值预测。
了解场景,挑选合适的评估方式,才能够构造出合适的模型,当然争辩是免不了的。
2.算法
首先,算法很多,没有人能够面面俱到,重在基本功。
对于转行的同学,推荐两本入门的基础读物:周志华的“西瓜书”和李航的“蓝皮书”。
作为算法工程师,对算法本身在公式的层面并不一定像考试那样需要死记硬背。比如工作中不会有人问你LBFGS算法对于海森矩阵是怎么估计的的(即便在面试中背出来都未必是加分项)。但是,LR的基本公式,SVM的基本原理还是需要去熟练掌握。
对各个算法的优缺点、适用范围以及可能失效的场景需要了熟于胸,某种程度上算法掌握深度和灵活度跟场景以及场景下数据很有关系。
企业工作时风控算法工程师的典型工作是在面对场景需求进行建模,理论深度是有一定必要的。因为实际工作没有时间让你研究理论,但是需要你掌握理论。
算法工程师搭建算法模型的时候,往往没有充分的时间去扫参调优,于是这会导致与在学校的时候建模发paper是完全不同的工作模式。
需要考虑的可能更应该是算法的鲁棒性,即算法模型在数据和计算环境一定幅度的波动下,仍然能够保持稳定的工作。
不然的话,支持线上工作的算法模型一旦崩溃,轻则是大半夜不定的报警短信把你招到公司改bug,重则是造成重大财产损失——想想某业务本来大体只会授信一半的用户,结果被奔溃的模型完全放行了……这将会是什么画风?
因为没有太多的时间扫参数空间,所以最好对于各个常用模型的“性能”以及主要工作的参数空间有一个清晰的概念。
这意味着,你不能像以前在学校一样,对于每个模型都用效果最佳的参数,而需要“常见”的参数,去实现基本的业务功能,日后业务方有需要再去优化。工程上,过度的算法“洁癖”和“强迫症”都会耽误很多事情。
特征工程还得再强调一遍,虽然它看上去不像理论那么高大上,但其实很多时候模型效果还就得靠那么一点特征工程作为作料。在算法里面我们更强调特征工程的一些处理手法和技巧,比如点击流数据的处理方法,怎么设置窗口,一些缺值数据的处理技巧,噪声数据的去除等,都能提升模型的效果。
而且这其实有其近乎“艺术”的一面,正所谓“戏法人人会变,各有其奥妙不同”。
评价指标要选好,评价指标的坑很多,并不是说当你建好了模型之后,算一算precision、AUC、KS、F-measure就好了。
要对这些指标的原理,特别是局限性了然于心。
再强调一遍,特别是他们的局限性!甚至有时候你可能需要自己组合设计一些指标,来更好适应你的问题。
关于深度学习框架,目前各大厂小厂都在积极尝试,但是尚且没有全面推开在金融领域,我们在某些环节使用这些技术,同时也在向业务方普及这些技术。深度学习作为趋势,日后广泛应用是一定的,所以我们坚定看好它。
传统概率论和数理统计方面的知识也不能丢。即便我们不去参与贝叶斯派和频率派的撕逼,古典概型在考虑问题的时候也很有用。另外还有诸如随机变量及其分布、随机过程、大数定理、中心极限定理等等。毕竟,金融产品的普遍是建立在人们对“未来”的预期上的,而这一过程则需要基于概统来理解。
3.编程
首先,总的来说,算法工程师需要的是处理大数据和实施高性能计算。这在工程层面有多种实现方案,下面简单罗列一下常见的部署场景,大家可以各自去攀相应的科技树:
• 在数据层面,sql必不可少。
可以说SQL是数据的魔法石,让数据流动,转化,融合,迸发出巨大的威力。对于sql的熟练使用,以及一些小技巧的应用,能够给下一步的特征工程省很多事。在这个过程中,数据倾斜是要尤其关注的,拉数据或者计算过程中进程一直被卡在99%是一件很尴尬的事儿。
• 目前主流的编程语言越来越集中于python和R。
有新闻上说,有的中学已经在开始普及python了。所以至少最好能有所了解。这包括一些常用的库,如pandas、sklearn等。
当然,其他语言也可以有,C++在我们非常追求性能时会去考虑,JAVA也会在我们提供服务的时候使用。
• 关于高性能的并行计算,Spark是一中常见的构架,它包含一个数据挖掘的库MLlib。
• GPU(集群)是实现更高性能并行计算的另一个流行的方案,同时考虑到一些CNN、RNN模型的使用,所以学习注入TensorFlow、Caffe等等算法框架是很有必要的。
当然对于风控来说这是比较高阶的应用。
• 在建模过程中,对数据的简单统计分析进行可视化是非常必要的。
数据直观的展示出来之后,有些问题/方案就一目了然了。在这方面,python的可视化工具、R、Matlab等各有各的优势,大家可以按习惯取用。
• 最后,作为基础,写shell脚本的基础是必须的,要有一定的linux知识。
其次,特别是大型金融科技公司对编码要求已经和互联开发没有什么本质区别,因此要求在编程的过程中,工程考虑是一定要有的思维习惯。
这里的“工程考虑”并不仅仅是指算法的性能方面,还有考虑你自身的数据结构、表关系依赖关系、计算环境、服务器性能、可用资源等等,很多问题需要与研发或者平台的同学仔细沟通才能够提供一个真正的风控算法服务。
因为风控的敏感性,网上其实很少有相关的资料。尤其是现在金融科技公司中的新技术和传统银行技术差别较大,使得这个行业带有一定的神秘性。
其实,风控算法工程师和推荐系统算法工程师、搜索算法工程师等等没有太本质的区别,个人认为仍然属于互联网+下的算法工作,但是同金融科技这个新生业务产生了交集,对人才有了更复合的要求:同传统风控人员相比,它更强调了算法能力和工程能力,同普通算法人员相比,它更强调了金融业务理解能力。
从招聘的情况看,市场上目前具备这种综合素质的人才很少,是一个很有发展前景的职业。
二、大数据风控算法
在今天这个信息爆炸的时代,大数据已经成为了各个行业的关键驱动力之一。特别是在金融领域,大数据的应用已经渗透到了风控领域,成为金融机构保障资金安全的重要利器。而大数据风控算法作为大数据技术在风险管理领域的具体应用,更是备受关注。
大数据风控算法的意义
大数据风控算法是利用大数据技术和数据挖掘技术,通过对大规模数据的分析、建模和预测,识别和降低金融风险的一种手段。它不仅能够帮助金融机构更好地理解客户需求,优化风险管理流程,提高风控效率,还能够降低风险带来的损失,提升金融机构的竞争力。
大数据风控算法的意义在于提高金融机构对风险的识别和管理能力,从而有效降低风险带来的财务损失,并保障金融机构的稳健运营。通过运用大数据风控算法,金融机构能够更好地理解客户的行为特征和信用状况,快速响应市场变化,降低风险控制的成本,提高效益。
大数据风控算法的应用领域
大数据风控算法在金融领域的应用非常广泛,涵盖了信贷风控、欺诈风险监测、资产管理、反洗钱等多个方面。其中,在信贷风控方面,大数据风控算法可以通过分析客户的个人信息、征信报告、行为数据等多维度信息,快速评估客户的信用风险,实现智能信贷决策。
此外,大数据风控算法在欺诈风险监测方面也发挥着重要作用。通过对大数据进行实时监测和分析,可以及时发现异常交易行为,保护客户资金安全,降低金融欺诈风险。在资产管理和反洗钱领域,大数据风控算法可以帮助金融机构优化资产配置,降低投资风险,有效防范洗钱行为。
大数据风控算法的发展趋势
随着大数据技术的不断发展和完善,大数据风控算法也在不断创新和优化。未来,大数据风控算法的发展趋势主要体现在以下几个方面:
- 智能化:大数据风控算法将更加智能化,通过机器学习、深度学习等技术不断提升算法的预测能力和自动化水平。
- 实时化:大数据风控算法将更加强调实时性,能够及时监测和响应市场变化,降低风险控制的滞后性。
- 可解释性:大数据风控算法将更加注重算法的可解释性,使决策过程更加透明和可信。
- 多维度:大数据风控算法将更加注重多维度数据的综合分析,更好地捕捉风险的潜在因素。
总的来说,大数据风控算法作为大数据技术在金融风控领域的具体应用,将在未来不断发展和完善,为金融机构提供更全面、智能、高效的风险管理解决方案。
三、风控开发工程师前途?
很有前途,风控从业者是稀缺人才,不管是金融还是互联网行业,风控人才从目前的各种市场分析报告上来看,缺口均在20%左右,但传统行业和互联网行业的风控,又有本质上的区别,传统行业风控主要以经验、流程管控为导向,属于过程管控的居多,而互联网主要通过风控平台以及策略模型为管控的手段,以模型驱动自动化的管控。
四、飞控算法?
用了一系列算法。在计算自己的姿态角时用了姿态解算算法,里面非常多,包括基于欧拉角的算法,基于四元数的算法,等等,非常多。
在数据处理时用到各种滤波算法,常用的如互补滤波和卡尔曼滤波。在反馈控制环上常用PID算法。飞控是一个非常庞大的体系,用的算法类别非常多。
五、算法工程师工资,算法工程师工资很高吗?
算法工程师各种待遇按工作时间,资历,等不同,差异很大,基本从4500元到15000元不等。
六、算法工程师原理?
算法工程师是处理数据的专业人士,他们研究并开发可用于计算机程序的算法。原理是基于数学和计算机科学的基础理论,结合各种技术来实现数据处理、模型构建和性能优化等任务。算法工程师的工作需要了解常用算法的原理,需要掌握数据结构、算法复杂度分析等知识,以及具备编程能力。算法工程师的工作职责是识别问题、设计解决方案,实现这些方案并优化算法的性能。算法的使用和优化是算法工程师的核心任务,他们需要保证算法的准确性、高效性以及可扩展性,以使计算机程序能够高效地进行数据处理和分析。
七、算法工程师简称?
答:算法工程师简称是cuda。
利用算法处理事物的人
算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。
八、算法工程师评价?
我认为算法工程师的核心竞争力是对模型的理解,对于模型不仅知其然,还得知其所以然。
于是我把目标检测的经典论文翻来覆去地看,将各种目标检测模型分解成了N个模块,针对每个模块,反复比对各篇论文处理方式的异同,思考各种处理方式各自的优缺点,以及有没有更好的处理方式,比如:
深度卷积神经网络中的降采样总结了降采样的各种方式;
深度卷积神经网络中的升采样梳理了升采样的诸多方法;
关于物体检测的思考简述了anchor free与anchor based的异同、one stage和two stage的区别与联系;
深度学习高效网络结构设计和高效卷积神经网络一览总结了高效网络的设计思路与具体细节;
在anchor free检测器炙手可热的时候,Why anchor?分析了anchor free和anchor based的历史由来,以及各自利弊。
同时对目标检测实践中一些开放式的问题也有一些自己的思考,比如:
关于感受野的总结详述了感受野的计算方式和在应用时需要注意的地方;
目标检测网络train from scratch问题猜想了一下目标检测能够train from scratch的关键,在这篇文章里我质疑了DSOD和DropBlock这两篇论文对train from scratch问题下的结论(当时何恺明那篇讨论train from scratch的paper还没出来,从何恺明后来paper的实验看来,我的质疑是对的)。
上面是把模型揉碎了看,最近开始有更多时间与精力接触除了目标检测以外的任务,于是思考如何将各个计算机视觉任务统一起来,最近有了一点小的想法,该想法形成了一篇简短的文章。
第二阶段
这一阶段我认为算法工程师的核心竞争力在于代码功底好,一则知道各个模型的实现细节,二则能即快又好地实现idea。于是我用pytorch手撸了Yolov2和Yolov3。同时看了不少优秀的开源代码,比如darknet、mmdetection等等。最近正在用pytorch仿照mmdetection撸一个语意分割的训练框架。
第三阶段
最近开始接触各个行业对计算机视觉的需求,我发现一名优秀的算法工程师仅仅对模型理解不错、代码功底不错是不够的,还需要对有计算机视觉业务需求的行业有着较深入的理解。恰好最近看了一篇阿里云机器智能首席科学家闵万里的专访文章,专访里这几段话我深以为然:
在阿里云的时候,我就亲自打造了一个岗位:DTC:Data Technology Consultant。DT有两个含义,一个是数据技术Data Technology,一个是数字化转型Digital Transformation,一语双关。他们像大夫,望闻问切,跟客户一起梳理出业务流程中的痛点,找到优化方式。DTC不只是对行业整体的判断,还要对赛道中的选手体检,有开药的能力。可以把对方的难言之隐梳理出来,定量、优先级排序,然后从整体到细节,一层层结构化分解,最后进入具体执行。你要在传统行业创造新价值,就要搞清楚:什么东西制约了你的产能,制约了你的效率,制约了你的利润率。技术人员今天往产业走,我相信整体遇到的障碍就是如何把技术思维变成以业务需求为导向的技术思维、技术分解思维。
虽然闵万里这几段话里的主体是技术咨询师,但我觉得这也是成为一名优秀算法工程师的必备品质。
总结一段话就是:
算法工程师往产业里走,需要把技术思维转变为以业务需求为导向的技术思维、技术分解思维;
算法工程师需要像大夫一样望闻问切,跟客户一起梳理出业务流程中的痛点,找到优化方式;
算法工程师不仅需要有对行业整体的判断,还需要对客户有体检、开药的能力,可以把客户的难言之隐梳理出来,定量、优先级排序,然后整体到细节,一层层结构化分解,最后进入具体执行;
要在传统行业创造新价值就要搞清楚什么东西制约了产能、效率、利润率。
仅仅输出模型的算法工程师比较容易被替代,更高的追求是输出一整套端到端的系统方案,从与客户一起梳理业务痛点、硬件选型、模型部署环境的规划与搭建、数据采集和标注标准制定、模型选型与设计等等。
九、大数据风控与传统风控
大数据风控与传统风控是金融行业中的两种主要风险控制方式。随着信息技术的飞速发展,大数据风控作为一种新兴的风险管理手段逐渐受到重视。在传统风控中,主要依靠经验和规则来进行风险评估,而大数据风控则通过分析海量数据,挖掘数据背后的规律,实现精准的风险预测与控制。
大数据风控的优势
大数据风控相比传统风控具有诸多优势。首先,大数据风控可以实现对客户行为的更加精准的分析,识别出潜在的风险点。其次,大数据风控具有更高的自动化程度,可以快速应对市场变化,降低风险的发生概率。此外,大数据风控还可以实现对风险事件的实时监测与预警,帮助金融机构及时制定风险防范措施。
传统风控的优势
尽管大数据风控有诸多优势,但传统风控仍然具有其独特的优势。传统风控依靠丰富的从业经验和成熟的风控体系,能够对风险进行更加深入和全面的把握。传统风控还可以更好地结合人为因素和业务实践,对复杂风险事件给予及时应对,保障金融机构的稳健经营。
大数据风控与传统风控的结合
实际上,大数据风控与传统风控并非完全对立,二者可以相互结合,发挥各自的优势。大数据风控可以为传统风控提供更多的数据支持,提升风险评估的准确性和效率。而传统风控则可以通过经验和规则的补充,为大数据风控提供更多的专业指导和业务支持。通过两者的有机结合,可以构建更加健全和高效的风险管理体系。
未来发展趋势
随着科技的不断进步,大数据风控在金融行业中的应用将更加广泛。未来,大数据风控有望通过人工智能、机器学习等技术的不断升级和应用,进一步提升风险管理的水平和效果,实现更加智能化的风险防范和控制。同时,传统风控也将在不断创新和发展中,为金融行业提供多元化的风险管理解决方案。
总的来说,大数据风控与传统风控各具优势,二者互相补充,并在实际应用中逐渐趋向融合。在未来的金融风险管理中,大数据风控和传统风控将共同发挥作用,共同应对日益复杂多变的金融市场环境,为金融机构的稳健经营提供有力支持。
十、互联网是个非常复杂的网络,基于网络的反欺诈风控算法有哪些?
今日分享 / 基于图神经网络的互联网金融欺诈检测
文 / 敖翔博士 中国科学院计算技术研究所 副研究员
阅读收益:
1- 用GNN做欺诈检测为什么行?
2- 用GNN做欺诈检测有什么坑?
3- 用GNN做欺诈检测还有什么趋势?
学习PPT:https://pan.baidu.com/s/1aV9LBsLs1UVDN-7rQ74nlA
导读
欺诈检测因类别分布不平衡、概念漂移、自然误差等因素使得深度学习方法的自动特征提取能力难以充分发挥,进而影响模型的学习效果。近年来兴起的图神经网络由于其强大的关联特征感知、提取能力,为改善上述挑战带来机会。但其平滑的消息传递机制很难克服严重的类别分布不平衡现象,由于欺诈者的故意伪装又会对建模带来进一步挑战。本报告将围绕基于图神经网络的欺诈检测若干关键问题,介绍近期在此方向的研究进展及其在互联网金融欺诈场景的应用效果,最后探讨未来该方向的潜在研究趋势。
后疫情时代的互联网金融欺诈
新冠疫情的爆发以前所未有的方式冲击了世界经济,进一步增加了平台遭受金融欺诈的风险。根据一份英国媒体的报道,2020年4月,英国金融产品的欺诈率环比上升了33%。同时,根据美国FIS的报告,同一时期美国的交易欺诈率同比上涨35%。由此可以看出,新冠疫情打击了全球经济,下行的经济趋势导致了金融欺诈案件数量的攀升。在金融欺诈数量增长的同时,金融欺诈的形式也出现了变化,例如:
- 金融业务因疫情被迫向线上转移。如传统银行、保险和证券的业务从传统线下业务向线上迁移。在此过程中,机构难以获得全面的客户身份验证信息,加之现今信息欺诈技术的升级,导致信用欺诈频发。
- 很多互联网公司进军金融行业,推出新的金融产品和服务。一方面推动了金融的发展,但另一方面为互联网金融欺诈提供了新的舞台。比如阿里巴巴在其平台上向小企业主提供低息贷款,这类小型贷款无需抵押,贷款人存在较高违约风险。
接下来先了解一下传统欺诈检测和互联网欺诈检测任务。
1. 传统欺诈检测任务的挑战
在传统的欺诈检测任务中,主要会面临以下几个挑战:
- 类别不平衡,在数据中欺诈数据比例相对较低。
- 概念漂移,数据分布随着时间会产生一定的变化。
- 数据不可信,未被标注为欺诈的数据并不一定是可信的,有可能是因为发生了欺诈但未被识别。因此训练样本可能不是100%真实准确的。
2. 互联网欺诈检测任务的挑战
我们现在所面临的互联网欺诈检测任务挑战更加严峻:
- 类别极度不平衡,导致样本价值敏感度不同。由于互联网用户基数更大,欺诈率从传统银行约2%降低至万分之一甚至更低,因此识别欺诈案例难度再次升级。
- 对抗攻击,导致出现分布外的样本。欺诈者可能通过改变以往行为、模仿正常用户行为等方式逃过反欺诈模型的检测。欺诈手段的快速变化也对欺诈检测提出了新的挑战。
- 标注稀缺,导致特征学习的指导信号弱。互联网金融产品大多都是创新性产品,由于出现时间较短,大多数据尚缺乏完备的标注,如何在新场景中检测欺诈就变成了新的挑战。
总结以上三点,对于互联网欺诈检测最大的难点在于发现有效的特征。
用图神经网络为什么行?
在详细讨论为什么图神经网络可以用于解决以上问题之前,需要先了解一下欺诈检测数据和方法的演化。
① 欺诈检测数据的演化:
- 早期数据是基于量化表格的结构化数据,使用简单模型就可以得到较好的结果。
- 随着时间发展,数据逐渐变复杂,出现了大量半结构化数据如XML文件和访谈表格等。
- 现如今,很多数据是非结构数据如文本、视频甚至遥感数据等。
② 欺诈检测方法的发展:
- 1980年代,欺诈检测方法是基于规则系统。
- 1990年代,欺诈检测方法借鉴了传统机器学习模型。
- 现在,由于数据结构非常复杂,特征很难提取,深度学习模型开始成为主流,即让模型自己去学习特征。
综上所述,欺诈检测的数据和方法都趋于复杂。
1. 图神经网络:一种新的趋势
互联网的数据往往呈现多源异构的特点。我们可以将多源异构数据整合成图来表示,并设计基于图神经网络(GNN)的方法来发现欺诈活动。图神经网络作为一种深度学习模型,具有特征学习能力,可用于半监督学习问题,贴合欺诈检测场景的特征,所以成为了新的趋势。在我们的实验研究中,运用图神经网络研究欺诈检测取得了一定进展。
比如在我们的一项研究中,结合专业风控专家的建议,将八种风控规则以元路径形式指导节点特征采样,优化特征提取过程。
相比于以往采样该用户所有的邻居,基于这些元路径,我们在采样时会有一定的侧重,可以提升采样效果。接着我们对采样的路径进行编码,并在编码中加入注意力机制以学习到更强的表示。最后基于学习到的表示判断该用户是否存在欺诈行为,具体模型如下图所示:
我们在阿里巴巴真实的数据集上进行实验,与当时最好的方法相比均有提升,实验结果如下:
综上所述,经过研究,融合多源异构数据并结合图神经网络方法有助于特征的提取。随着我们对于GNN的进一步了解,我们也发现了在使用GNN时遇到的一些问题。接下来讨论在用GNN可能会遇到哪些坑,以及如何缓解。
用图神经网络有什么坑?
图神经网络的核心思想是消息传递。对于一个目标节点,周围的邻居通过消息传递生成目标节点的embedding表示。GNN的一个基本假设是同质偏好假设,意思是在图中邻居之间是相似的。但在我们面对的问题中,数据类别极度不平衡,一个欺诈用户的邻居可能大部分为好人,个别为欺诈者,GNN根据邻居传递消息后很可能错误地将此用户识别为好人,因为他的邻居大部分为好人。
1. PC-GNN:面向类别不平衡图的采样GNN
为了解决因数据不平衡带来的问题,我们采用了PC-GNN对GNN近邻采样的机制进行改造,以缓解类别不平衡的问题。PC指Pick和Choose,两种采样方式。具体来说,Pick是指我们根据标签类别分布占比,进行全局采样,使得多数类别和少数类别的采样更加平衡。
在局部,我们对少数类别的节点实施自适应过采样,对所有节点实施自适应降采样,这就是Choose,具体采样方式如下图所示。
举例说明,下图中节点 u,v,c 同属于一种少数类别。假设我们需要对节点v进行采样,我们会采样节点v周围与其所属相同类别并且隐含表示距离小于一个特定阈值的同类节点。如图,虽然u和v在图结构中本身不是邻居节点,但因为两者隐含表示的间距小于所定阈值,所以我们在采样时会把节点u也包含在内。这就是对少数类别的过采样。此外,还会对所有类别进行降采样。在采样时,我们不采样节点的全部邻居,而是将其邻居集合中隐含表示间距小于特定阈值的节点保留,其他的删除,从而挑选与该节点更相似的个别邻居。
通过以上两种方式,我们可以得到一个相对平衡的训练数据。下图是整个结构的示意图:
训练阶段,Pick和Choose过程所有的步骤都可以正常做。但是在测试阶段,由于类别的信息不可知,所以Pick以及Choose中的过采样是做不了的,但Choose中的降采样依然可以做,我们通过实验发现,它依然可以提升效果。我们在公开测试集(YelpChi和Amazon Musical Instrument商品评论)和真实数据集(阿里巴巴真实数据)进行实验,用F1-macro, AUC和GMean作为评价指标,与GCN, GAT, DR-GCN, GraphSAGE, GraphSAINT, Graph Consist和CARE-GNN等进行比较,得到如下实验结果:
在Amazon和YelpChi数据上,PC-GNN比作为state-of-art的CARE-GNN的AUC提升3.6%-5.2%,比GMean提升了0.6%-3.7%。
与此同时,我们还进行了消融实验,实验结果如下。我们发现,Pick的全局采样是基础,Choose板块可进行一些精细化操作,使得模型进一步提升。
2. AO-GNN:面对类别不平衡图的AUC最大化GNN
有了采样的方法后,我们进一步思考是否可以借鉴价值敏感方面的方法来解决类别不平衡的问题。根据最近一些机器学习理论会议关于AUC优化的研究,我们尝试将AUC最大化与GNN进行融合,因为优化AUC的训练倾向于获得一个既能区分良性节点又能区分欺诈节点的模型。按此思路,我们提出了AO-GNN结构模型。
首先,因为直接优化AUC的计算复杂度相对较高,我们将其转化为鞍点搜索问题,以此实现AUC最大化。具体数学公式推演可参照论文 “AUC-oriented Graph Neural Network for Fraud Detection”(Huang, 2022)。运用GNN可能存在的另一个问题是欺诈者可能主动伪装导致图结构已被“污染”,欺诈节点经常通过与其他节点交互来混淆他们的身份。因此,我们提出在进行AUC最大化的同时,设计一个拓扑结构优化器净化被污染的图拓扑结构。其基本思路是向着AUC增大的方向优化图拓扑结构。优化结构的方式是运用强化学习对于图结构进行剪边,具体结构如下图所示。
需要注意的是,这里我们在两处分别运用GNN,一个是环境中我们使用GNN编码,在reward的计算过程中我们运用GNN分类器预测得到AUC-ROC变化值。
整体的AO-GNN结构图如下:
对于AO-GNN我们在公开数据集YelpChi, Amazon和Books进行了实验,结果如下。从实验中我们发现AO-GNN相较于PC-GNN的表现又有一定提升。
用图神经网络有什么趋势?
最后,讨论一下有关图神经网络在欺诈检测任务上的研究趋势。
我认为未来的趋势大概有以下三个方向:
第一是关于“场景依赖”问题的研究。在互联网数据中,场景应用变化很快,如何在不同场景中自适应地学习与场景有关的特征是一个值得研究的问题。
第二个方向是“对抗攻击与防御”。用户有可能频繁改变自身特征,以至于模型无法分辨。因此对于欺诈行为的动态对抗防御是一个很重要的研究方向。
第三个方向是“预训练模型”。我们不是直接对于GNN进行预训练,而是基于大量无标注的行为数据进行预训练,并对从中提炼的知识加以有效利用。通过将预训练模型与下游场景数据进行融合精调,使GNN模型达到更好的效果。