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

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

发布时间:2018-05-22 16:29:21 所属栏目:教程 来源:李佳惠
导读:【资讯】相识怎样行使Java和Spark MLlib开拓一种算法,该算法可以或许按照700万笔记录的数据集检测诓骗举动。 在这篇文章中,我们将行使Spark MLlib开拓Java中的算法。完备的事变代码可以从GitHub下载。可以在不行使深入的Java常识(行使设置文件)的环境下,
副问题[/!--empirenews.page--]

  【资讯】相识怎样行使Java和Spark MLlib开拓一种算法,该算法可以或许按照700万笔记录的数据集检测诓骗举动。

  在这篇文章中,我们将行使Spark MLlib开拓Java中的算法。完备的事变代码可以从GitHub下载。可以在不行使深入的Java常识(行使设置文件)的环境下,用几种差异的设置和尝试来运行代码。

  在之前的文章中,我们行使Octave实现了沟通的非常检测算法。我们从七百万个筛选出了500,000笔记录(仅限于TRANSFER范例),以便观测和相识可用数据。另外,还绘制了几张图表来表现数据和非常(诓骗)的样子。因为Octave加载了内存中的全部数据,因此它对大数据有限定。出于这个缘故起因,我们将行使Spark在700万个更大的数据集上运行非常检测。

  高斯漫衍

  本节扼要先容怎样行使高斯函数举办非常检测。高斯密度函数具有钟形曲线外形,如下所示:

  行使Java和Spark MLlib开拓一种算法检测诓骗举动,可行吗?

  大部门数据的通例数据每每处于钟形曲线的中心,而边沿的非常更为有数。与此同时,我们可以看到边沿上的点与中心点(靠近0.4)对比具有更低的函数值(可能概率小于0.1)。

  在这个例子之后,我们可以说每一个具有低于0.05的概率密度函数的例子都是非常的。虽然,我们可以按照必要来节制阈值。大的值意味着更多的非常被标志,个中大部门也许不是非常。另一方面,小的值意味着我们也许错过非常,由于算法变得越发宽容。

  上面的例子是一维的,数据只有一个特性。现实上,我们有更多的成果和维度的数据。为了将数据绘制到图中,我们行使主因素说明(PCA)将数据的维数镌汰到二维(2D)乃至三维(3D)。以下是两个维度的示例:  

行使Spark MLlib举办基于Jave的诓骗检测

  留意正常的数据在第一个和第二个圆的中间趋于一路,非常在第三个圆的边沿。图上的圆圈暗示高斯钟形曲线如安在数据之间漫衍(凡是,它将在3D中为钟形,但为了简朴明白,以2D暗示)。

  为了在钟形图中的某个位置上举一个例子,我们必要计较两个分量:μ(均值)和σ2(方差)。一旦计较了均值和方差,我们可以应用一个相等简朴的公式来获得新的例子的密度概率。假如概率低于某个特定值(σ),我们将其标志为非常;不然,这是正常的。在我早年的文章中查找关于开拓的细节。

  Spark和MLlib

  本节提供Spark和MLlib的扼要声名。

  Spark

  Apache Spark是一个集群计较框架。 Spark辅佐我们在群齐集的差异节点上并行执行功课,然后将这些功效归并成一个功效/相应。它将我们的数据荟萃转换为漫衍在集群节点(称为RDD(弹性漫衍式数据集))的元素荟萃。譬喻,在一个Java措施中,我们可以将一个荟萃转换成一个可以或许并行操纵的RDD,如下所示:  行使Java和Spark MLlib开拓一种算法检测诓骗举动,可行吗?

  并行荟萃被支解因素区,Spark的每个分区执行一个使命,以是我们但愿每个CPU有两到四个分区。我们可以通过用sc.parallelize(collection,partitionNumber)界说另一个参数来节制Spark建设的分区数目。除了来自应用措施的荟萃之外,Spark还可以或许转换来自Hadoop支持的存储源(包罗当地文件体系,HDFS,Cassandra,HBase和Amazon S3)的数据。

  将数据转换为RDD后,我们可以在集群节点上执行两种并行操纵。转换操纵将RDD集相助为输入,并返回一个新的RDD荟萃,如映射和操纵,它们回收RDD并返回单个功效,如reduce、count等。不管范譬喻何,操纵都是惰性的,相同于Java 8在界说时不运行,而是在哀求时运行。因此,可以在哀求时多次计较一个操纵,为了停止这种环境,生涯在内存或缓存中。

  MLlib

  Spark支持Java、Scala、Python和R API。它还支持一套富厚的高级器材,包罗用于SQL和布局化数据处理赏罚的Spark SQL,用于呆板进修的MLlib,用于图形处理赏罚的GraphX以及Spark Streaming。

  MLlib是Spark的呆板进修(ML)库。它提供了几个现成的ML器材,如:

  ML算法

  ·分类

  ·回归

  ·聚类

  ·协作过滤

  Featurization

  ·特性提取

  ·转型

  ·降维

  ·选择

  公用奇迹

  ·线性代数

  ·统计

  ·数据处理赏罚

  数据筹备

  我们必要为算法执行筹备数据。以下是数据的样子:  

行使Spark MLlib举办基于Jave的诓骗检测

  我们必要把全部对象都转换成数字。 荣幸的是,大部门数据都是数字,只有nameOrig和nameDest以C,D或M这样的字符开始。我们简朴地用1取代C,用2取代D,用3取代M。同样,我们将字符从chars转换为数字 如下所示:  行使Java和Spark MLlib开拓一种算法检测诓骗举动,可行吗?

  全部的筹备事变都是通过行使Spark转换操纵映射的Java代码完成的: 

行使Spark MLlib举办基于Jave的诓骗检测

  之后,文件应该是这样的:

行使Spark MLlib举办基于Jave的诓骗检测

  因为较大的文件巨细和GitHub文件巨细限定,数据不在代码中提供。你可以从这里下载文件(https://www.kaggle.com/ntnu-testimon/paysim1),将其重定名为allData.csv(将常量FILE_NAME变动为其他名称),并将其复制到文件夹data /中。

  执行算法

  让我们一步一步看看我们怎样执行非常检测算法。

(编辑:湖南网)

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

热点阅读