加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

使用Spark MLlib进行基于Jave的欺诈检测

发布时间:2018-05-18 05:43:32 所属栏目:教程 来源:李佳惠
导读:副标题#e# 【资讯】了解如何使用Java和Spark MLlib开发一种算法,该算法能够根据700万条记录的数据集检测欺诈行为。 在这篇文章中,我们将使用Spark MLlib开发Java中的算法。完整的工作代码可以从GitHub下载。可以在不使用深入的Java知识(使用配置文件)的

  当大量的资金变现时,可能是欺诈。 慢慢地,我们开始删除不需要的功能,通过删除功能[1,2,3,7,8]或类型找到了很好的结果。 当兑现时,资金被占用的账户比目的地更重要,因为账户可能已经有钱了,而且看起来很正常,但是一个空的来源账户可能表示欺诈行为。 当离开目标帐户名称,它可能有助于欺诈性帐户名称。 结果如下所示:

使用Spark MLlib进行基于Jave的欺诈检测

  这是一个巨大的进步。我们能够通过将所有类型组合在一起,从14%提高到82.77%。 此外,它不会带来不同的跳过功能的更好结果(随意尝试,因为并非所有这些都被探索)。 我只能通过跳过数量(2)得到一些结果,但这仍然不令人满意,因为大量的非欺诈活动被标记了(1,040,950)。

使用Spark MLlib进行基于Jave的欺诈检测

  在这种情况下,为每种类型都运行算法可能会更好。 当一个可能的交易完成时,我们会反对它的类型。 通过这种方式,可以更好地检测到欺诈行为,因为转账有99.7%的利率,现金流有87%。 但是,对于现金流,我们可以说这个比率并不令人满意,也许还有其他的方法值得尝试,但这必须首先被调查,而且通常,直觉是错误的,还花费了很多时间。 由于隐私问题在金融应用中获取更多数据是困难的,所以宁愿在这里应用不同的算法。 当现金流的数据被绘制时,我们得到如下的视图:

使用Spark MLlib进行基于Jave的欺诈检测

  该图显示问题在于大多数欺诈行为被包含在正常数据的中心,并且该算法努力检测它们。不过,我相信还有其他方法可以混合使用甚至能添加更多的功能。

  Java流与Spark

  我们可以配置算法(请参阅属性runsWith)在Spark或Java 8 Streams上运行以处理数据。如果要在集群上的多个远程节点上运行代码并将结果集合到请求的机器上,则Spark是一个很好的框架。在本文中,算法在本地执行,Spark将本地资源(如CPU数量)视为目标群集资源。另一方面,Java 8流很容易提供与collection.stram()。parallel()(当然,在本地运行的机器上)的并行性。因此,作为实验的一部分,Java 8流在一台机器上与Spark进行了比较。

  结果表明,Java 8流在本地速度更快,即使不是太多。 Java = 111,927秒,Spark = 128,117秒。所以基本上,在运行所有数据时,流速要快16-25秒。请注意,每个人的电脑结果可能会有所不同。

  由于Spark针对分布式计算进行了优化,与Java Streams相比,它在分区、任务等方面存在一些开销,只需要考虑本地机器,并且可以在那里进行优化。无论如何,都可以看到数据量在本地增加的差距。

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!