mllib java怎么调用_使用Java和Spark MLlib开发一种算法检测欺诈行为,可行吗?

本文探讨如何使用Spark MLlib和Java开发异常检测算法,特别是针对欺诈行为。通过高斯分布进行异常检测,利用PCA降维后,使用Spark并行计算和MLlib库进行数据处理和模型训练。结果显示,该算法在检测某些类型的欺诈行为方面取得不错的效果,但仍有优化空间。
摘要由CSDN通过智能技术生成

在这篇文章中,我们将使用Spark MLlib开发Java中的算法。完整的工作代码可以从GitHub下载。可以在不使用深入的Java知识(使用配置文件)的情况下,用几种不同的配置和实验来运行代码。

高斯分布

本节简要介绍如何使用高斯函数进行异常检测。高斯密度函数具有钟形曲线形状,如下所示:

24c37374424ed1670e0d7933b2ebaee3.png

大部分数据的常规数据往往处于钟形曲线的中心,而边缘的异常更为罕见。与此同时,我们可以看到边缘上的点与中心点(接近0.4)相比具有更低的函数值(或者概率小于0.1)。

在这个例子之后,我们可以说每一个具有低于0.05的概率密度函数的例子都是异常的。当然,我们可以根据需要来控制阈值。大的值意味着更多的异常被标记,其中大部分可能不是异常。另一方面,小的值意味着我们可能错过异常,因为算法变得更加宽容。

上面的例子是一维的,数据只有一个特征。实际上,我们有更多的功能和维度的数据。为了将数据绘制到图中,我们使用主成分分析(PCA)将数据的维数减少到二维(2D)甚至三维(3D)。以下是两个维度的示例:

18364bd4578c494efdd95be6915f0858.png

注意正常的数据在第一个和第二个圆的中间趋于一起,异常在第三个圆的边缘。图上的圆圈表示高斯钟形曲线如何在数据之间分布(通常,它将在3D中为钟形,但为了简单明了,以2D表示)。

为了在钟形图中的某个位置上举一个例子,我们需要计算两个分量:μ(均值)和σ2(方差)。一旦计算了均值和方差,我们可以应用一个相当简单的公式来得到新的例子的密度概率。如果概率低于某个特定值(σ),我们将其标记为异常;否则,这是正常的。在我以前的文章中查找关于开发的细节。

Spark和MLlib

本节提供Spark和MLlib的简要说明。

Spark

Apache Spark是一个集群计算框架。 Spark帮助我们在群集中的不同节点上并行执行作业,然后将这些结果合并成一个结果/响应。它将我们的数据集合转换为分布在集群节点(称为RDD(弹性分布式数据集))的元素集合。例如,在一个Java程序中,我们可以将一个集合转换成一个能够并行操作的RDD,如下所示:

ff2b36c1b68fff1bd30a947cf5308171.png

并行集合被分割成分区,S

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值