• 回答数

    4

  • 浏览数

    311

稚气未脱
首页 > 计算机类考试 > 如何成为一名合格的风控算法工程师?

4个回答 默认排序
  • 默认排序
  • 按时间排序

薄荷之翼

已采纳
1分钟前发布 -【如何成为一名合格的风控算法工程师?】http://www.sdrsks.org/ask 09月24日讯: 如何成为一名合格的风控算法工程师?“风控算法工程师”这个职位按字面意思可以拆成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知识。其次,特别是大型金融科技公司对编码要求已经和互联开发没有什么本质区别,因此要求在编程的过程中,工程考虑是一定要有的思维习惯。这里的“工程考虑”并不仅仅是指算法的性能方面,还有考虑你自身的数据结构、表关系依赖关系、计算环境、服务器性能、可用资源等等,很多问题需要与研发或者平台的同学仔细沟通才能够提供一个真正的风控算法服务。因为风控的敏感性,网上其实很少有相关的资料。尤其是现在金融科技公司中的新技术和传统银行技术差别较大,使得这个行业带有一定的神秘性。其实,风控算法工程师和推荐系统算法工程师、搜索算法工程师等等没有太本质的区别,个人认为仍然属于互联网+下的算法工作,但是同金融科技这个新生业务产生了交集,对人才有了更复合的要求:同传统风控人员相比,它更强调了算法能力和工程能力,同普通算法人员相比,它更强调了金融业务理解能力。从招聘的情况看,市场上目前具备这种综合素质的人才很少,是一个很有发展前景的职业。
68 评论

紫色偶然

已采纳
如何成为一名合格的程序员?很多人想要成为程序员,在学习编程的过程中,面对各种 bug 和源源不断的问题,有时会对自己是否适合编程这一问题产生困扰。作为一名教授全栈 Web 开发的教育工作者,我已经带领很多新手成为了程序员。好消息是,我发现没有任何人是不能学习编程的。我把它看作是一种基本的人类技能,就像阅读、写作和算术一样,任何人都可以做到。它是我们人类能力的一部分,只是需要学习。在过去的几年的教学中,我目睹了不同的学生在学习过程中的斗争,以及在他们的挣扎中出现的一些共同问题。下面的列表将帮助你了解你是否喜欢编程1、缺乏好奇心如果你对计算机是如何工作的缺乏好奇心,那么,作为一个程序员,你将永远不会成功。学习的一个基本要求是对你所学的东西有积极的兴趣。如果你没有一个对技术好奇的头脑,你就没有精力去坚持学习要成为一个成功的程序员所需要的广博而深入的知识。相比之下,技术的世界就像一个巨大的海洋,里面充满了各种有趣的领域、相互联系的思想和各种可能,它们可以激发人们的想象力。想要潜入这片海洋并发现你所能发现的一切,需要内在的动力。找到你的好奇心:问问你自己,编程是否真的让你感兴趣?如果没有兴趣,去找你感兴趣的东西,以节省时间和精力。但是如果你的答案是感兴趣,那么就强迫自己去发现一些你以前没有注意到的新事物,认识到浩瀚的技术海洋,再往下潜一点。2、缺乏自主性如果你不培养自己解决问题的能力,你就永远不会成为一个成功的程序员。毫无疑问,要成为一个成功的开发人员,你必须对自己的学习能力充满信心。这实际上是一项基本的生活技能,如果你年满 18 岁,没有人有义务教你任何东西。这就是现实。当你想学习技术所需的技能时,首先要学会的是,在谷歌中输入你想要的任何东西并获取你需要的信息。除此之外,所有编程语言都有文档和规范,这些文档和规范对语言的工作方式解释的非常清楚,它们就像字典一样。作为一个程序员,最快速、最可靠的学习方法就是简单地阅读这些文档。当你有问题的时候,在问别人答案和查阅官方文档之前,强迫自己先搜索一下,节省别人的时间。3、面对问题缺乏毅力如果你在遇到问题时轻易放弃,作为一个程序员,你将永远不会成功。编程的本质是解决问题,这也是计算机产生的全部原因!每当你开始编写一个程序时,你总是会遇到一大堆问题。一旦你解决了一个问题,那么几乎总是有另一个问题在后面等着你。你在进步,但总是会有新的问题要面对。这堆问题会让人望而生畏,令人感到沮丧。如果你觉得程序应该「能用就好」,那么你就没有精力坚持下去,因为问题还在继续出现,它们会一点一点地击溃你的情绪和决心。从字面上来说,你的工作就是找出程序为什么不能跑起来。从我在授课上的经验来看,通常每个班都有一两个学生,和其他学生相比,他们似乎更容易遇到更多的问题——通常是非常随机和模糊的问题。我提醒学生,他们面对的问题越多,学习越深入、越彻底的可能性就越大。如果他们能通过这些问题获得深刻的理解,他们会很快发现他们变得更加自信了,因为他们面对和解决的问题比普通学生多。你需要认识到,问题不仅仅只是问题,它实际上也是挑战。你所面临和克服的每一个挑战都能让你更深入地理解技术,更好地面对新的挑战,并迅速解决旧的挑战。4、解决问题之后没有成就感如果你在解决一个问题后没有兴奋感和成就感,作为一个程序员,你将永远不会成功。与上一个问题相关的是,你成功地解决了一个问题,却缺乏「良好的感觉」。当修复 bug 和问题变成了一个永远不会结束的事情时,你会失去与克服问题的动力。当你解决一个问题时,你需要的是多巴胺的释放。这类似于在电子游戏中完成了一个关卡,或者解决了一个像纵横字谜或数独这样的挑战。我们都知道,坚持通过一项挑战,然后最终赢得比赛,一般都会有成就感和兴奋感。但是如果你失去了感受这些快乐的能力,或者从一开始就没有真正有过这些感受,你将无法体验到编程带来的快乐。如果你把编程看作是一种磨砺,你只想尽可能容易地得到结果,那么你永远不会真正成为一个成功的程序员。无论何时,当你解决了一个一直在努力解决的问题时,无论这个问题多么微小,你总是为你的成就感到骄傲。你需要休息一下,祝贺你自己完成了一项出色的工作,让成功的感觉渗透进你的心里,为你即将面临的下一个问题注入活力。5、无法独立思考如果你期望别人为你着想,并且主动看到你自己所在的处境的细节,你将永远不会成为一个真正成功的程序员。当你在学习新的东西时,很容易感到缺乏知识和经验,并没有自己的观点。主动做事或者说错话似乎是有风险的。对于错误,我们的内心都有一种恐惧感。当对错误的恐惧抑制了你的探索和好奇心时,你会扼杀开发真正知识、从经验中获得的知识和「失败」的能力。当你需要依靠「权威」的观点、一个受欢迎的博客、一个最佳实践或「教科书」的答案时,那么你就没有真正地整合编程的知识。你需要对什么有效,什么无效形成自己的观点。你需要理解为什么你认为你的解决方案有效,以及使用这个方案有什么好处。你需要建立一个微妙的视角,超越那些显而易见的东西。你需要能够「证实」你的立场。为自己着想。通过你的经验和批判性思维技巧,发展出你自己的思想体系。做出合理的猜测,坚定立场,并愿意随着新信息的出现而改变立场。6、僵化、狭隘、混乱的思维如果你的思维僵化,并且难以保持代码的条理化,那么你将永远无法成为一名真正成功的程序员。我有时在学生中看到两个极端。第一种是僵化和狭隘的思维方式。拥有这种态度的人拒绝帮助,尽管会有反馈,但不会有改变。他们看事情只从一个角度看,别人给的建议被忽略。我看到的第二个极端是思维混乱。学生们似乎使事情变得更加复杂,他们的代码杂乱无章,难以理解。他们过度思考问题,写 100 行代码,而其中只有 10 行 是有用的。当这两种心态结合在一起时,结果就是一种用蛮力的方法去设计程序。我们需要的是回顾解决方案,重新评估它,放弃最初的方法,并重新组织方法。无法看到其他可能性或无法反思反馈会抑制成长的能力。思维杂乱无章会减慢你的成长速度,阻止你看到那些原本显而易见的模式。你的工作质量也会下降。自我反省。你需要退后一步,看看你是接触的事物的大局是什么样子的。你要怎样才能做得更好?你能做些什么让你的生活更轻松吗?你需要什么来帮助你?7、需要「正确」的答案,而不是识别一系列「好」和「坏」的答案的方法如果你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那么作为一个程序员,你将永远不会真正成功。当开始学习技能或编程时,学生往往想知道他们所做的是否「正确」,而答案总是「视情况而定」。计算机科学是一门评估权衡的科学。在不同的环境下,哪条路更好,这完全取决于所处的环境和目标。当你把编程看作是一个有正确答案或错误答案的测试时,你就失去了对全局的认识,放弃了你的创造力。任何答案都可以是「正确的」,前提是你能根据具体情况证明这一点。现实情况是,编程更像是写诗或写短篇小说(如果程序很大,则可能是小说)。在你的代码中可以看到一种美学和美丽,这些东西有时只有你和其他程序员能够识别出来。你决定解决方案的原因,以及你对答案的设想,比「正确的方式」或「错误的方式」更重要。拥有一个艺术家的头脑可以让你编的程序具有选择和可能性,而不是认为只有一种处理方式。这就是编程的美——有很多方法可以解决问题,考虑不同的可能性,然后决定哪种方法最适合当前的情况。创造性很重要。你要认识到,解决问题的方法有很多种,通过经验和积累,你会对哪些解决方案比其他解决方案感觉更好产生细微的理解。纵观全局,想象不同的可能性,相信你的直觉,你会得到更满意、更好的解决方案如果你对学习编程感兴趣,我鼓励你开始这段旅程。记住提到的七条,并开始学习、探索在线资源,这些资源可以让你快速学习。你不会后悔的!
56 评论

死在被窝

已采纳
如何成为一名网络信息安全工程师?(1)熟悉计算机系统的基础知识; (2)熟悉网络操作系统的基础知识; (3)理解计算机应用系统的设计和开发方法; (4)熟悉数据通信的基础知识; (5)熟悉系统安全和数据安全的基础知识; (6)掌握网络安全的基本技术和主要的安全协议与安全系统; (7)掌握计算机网络体系结构和网络协议的基本原理; (8)掌握计算机网络有关的标准化知识; (9)掌握局域网组网技术,理解城域网和广域网基本技术; (10)掌握计算机网络互联技术; (11)掌握TCP/IP协议网络的联网方法和网络应用服务技术; (12)理解接入网与接入技术; (13)掌握网络管理的基本原理和操作方法; (14)熟悉网络系统的性能测试和优化技术,以及可靠性设计技术; (15)理解网络应用的基本原理和技术; (16)理解网络新技术及其发展趋势; (17)了解有关知识产权和互联网的法律法规; (18)正确阅读和理解本领域的英文资料。 通过本级考试的合格人员能根据应用部门的要求进行网络系统的规划、设计和网络设备的软硬件安装调试工作,能进行网络系统的运行、维护和管理,能高效、可靠、安全地管理网络资源,作为网络专业人员对系统开发进行技术支持和指导,具有工程师的实际工作能力和业务水平,能指导助理工程师从事网络系统的构建和管理工作。 网吧的网络工程师多是系统和内网工程师。他们熟悉内网构造。 公司的网络工程师多是策略工程师,他们熟悉各种限制策略。 电信的网络工程师分:内网工程师 节点工程师。部门分2部分: 工程部和技术部。 网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。 和软件工程师是不一样的。 网络工程师的就业范围相当宽广,几乎所有的IT企业都需要网络工程师帮助用户设计和建设计算机信息系统;几乎所有拥有计算机信息系统的IT客户都需要网络工程师负责运行和维护工作。因此,网络工程师的就业机会比软件工程师多,可在数据库管理、WEB开发、IT销售、互联网程序设计、数据库应用、网络开发和客户支持等领域发展。而且,薪酬待遇也不错,统计数据显示,网络技术人员平均月薪约2000~3000元,高的则在5000元以上。
22 评论

请你善良

已采纳
优秀的教我做事的文学作品?比如村上春树的《我的职业是小说家》——文学/工具作品。作者用细腻、浅显易懂的文字阐述出他是如何成为一名小说家的,以及他连续三十年创造小说的坚毅生活。——文笔细腻,文风清淡谦虚,全书整体架构如何,他的小说家之路如何。我又学到了,我的作者思维就是看这本书被他引导出来的,其实它不能立竿见影得提高写作水平。比如《一本小小的的红色写作书》——立竿见影得写作工具书。西方人的写作入门书籍,60%有用,他通过20个写作原则的架构,手把手教你如何提高实际写作能力。——第六写作原则对我很关键,(每个论点要有充分支撑),等等。比如福楼拜的《包法利夫人》——文学作品。作者用相当简练的文字清晰的表达出了19世纪法国小镇中包法利夫人的出轨故事,但也不难看出,因为年代,翻译等问题,书中有些文字放在当下是欠妥的。——文字极度简练,思想深刻,如何刻画人物,小说架构,景物描写。我用作者思维学到了。
99 评论

相关问答

  • 计算机网络工程师认证分几级?

    计算机网络工程师认证分几级?分类:  网络工程师有好多种,   就路线而言,有:路由交换型、无线型、布线型等。   就认证而言,有:cisco认证、H3C认证、华为认证、中国的软考、神州数码网络工程师、全国计算机等级四级、锐捷认证等网络工程师认证和CEAC网络应用工程师认证。   就网络平台发展阶段而言,有:网络平台架构师、信息技术工程师、网站运营工程师、网站商务工程师、电子商务工程师、项目工程师

    千笙 4人参与回答 2024-09-24
  • h3ccertification证书是什么?

    h3ccertification证书是什么?H3C Certification(华三认证)是华三通信技术有限公司(H3C)推出的一系列网络技术认证。华三通信是一家中国的网络设备制造商,提供各种网络解决方案,包括交换机、路由器、无线设备、网络安全产品等。H3C Certification认证涵盖了多个层级和技术领域,包括但不限于:1. H3C Certified Network Associate(

    浅殇 4人参与回答 2024-09-24
  • 什么是组织结构,机械式组织与有机式组织?

    什么是组织结构,机械式组织与有机式组织?1、特点不同有机式组织的特点是低复杂性、低正规化、分权化不具有标准化的工作和规则、条例,员工多是职业化的,是一种灵活松散的结构;而机械式组织具有严格的结构层次和固定的职责,强调高度的正规化,有正式的沟通渠道,是一种稳定、僵硬的结构形式。2、集权程度不同有机式组织的集权程度低于机械式组织。有机式组织因为不具有标准化的工作和规则条例,保持低程度的集权;而机械式组

    忽而今夏。 4人参与回答 2024-09-24
  • web前端开发和后端开发哪个难?

    web前端开发和后端开发哪个难?通常,web后端的难度更大一些。所以大部分公司的人员配置也是后端多于前端。前端的难度在于知识体系的琐碎和技术的频繁更新换代,需要有学习能力、有积累经验的意识。后端的难度(个人觉得)在于数据库和架构,有时候还有算法相关的内容,入门也挺容易的,但是做大了之后就需要考虑很多东西,设计模式、缓存、分布式、服务化......很多后端还要兼任DBA和运维。

    孤城潇陌 4人参与回答 2024-09-24
  • 读书对人的好处?

    读书对人的好处?读数养性,读书可以陶冶自己的性情,使自己温文尔雅,具有书卷气;读书破万卷,下笔如有神,多读书可以提高写作能力,写文章就才思敏捷;旧书不厌百回读,熟读深思己自知,读书可以提高理解能力,只要数度深思,你就可以知道其中的道理了;读书可以使自己的知识得到积累,君子学以聚之。总之,爱好读书是好事。让我们都来读书吧。关于读书的“读书的好处”议论文书给我们带来了遐想和乐趣

    半暮未凉 20人参与回答 2024-09-24