分享

Spark 高级分析:第五章第1,2节

feilong 2018-3-2 15:00:46 发表于 推荐型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 5299
本帖最后由 feilong 于 2018-3-2 15:05 编辑
问题导读

1.什么是异常检测?有什么作用?
2.什么是聚类?
3.什么是K-Means聚类?





上一篇:Spark 高级分析:第四章第11,12,13节
http://www.aboutyun.com/forum.ph ... id=23953&extra=


第五章 基于K-means聚类的网络流量异常检测


有已知的已知;有些事情我们是知道的。我们也知道有已知的未知;也就是说,我们知道有些事情我们不知道。但也有未知的未知,那些我们不知道我们不知道的。

——唐纳德·拉姆斯菲尔德



分类和回归是机器学习中强有力的、研究良好的技术。前一章展示了一个分类器作为未知值的预测器。然而,有一个问题:为了预测新数据的未知值,我们必须知道许多以前见过的例子的目标值。分类器只能帮助我们,数据科学家,知道我们正在寻找什么,并且可以提供大量的例子,输入产生已知的输出。这些被统称为“监督学习技术”,因为它们的学习过程在输入的每个示例中给出了正确的输出值。

然而,还有一些问题在某些或所有例子中,正确的输出是未知的。考虑一下将电子商务网站的顾客按他们的购物习惯和品味划分的问题。输入特性是他们的购买、点击、人口统计信息等等。输出应该是客户的分组。也许有一组人会代表赶时髦的买家,而另一群人则会与价格敏感的廉价买家相对应,等等。

如果你被要求为每一个新客户确定这个目标标签,你很快就会遇到一个问题,在应用监督学习技巧时,比如分类器:你不知道一个应该被认为是赶时髦的人,例如,事实上,你甚至不确定是否“时尚意识”是网站客户的一种有意义的分组方式。

幸运的是,无监督学习技术可以在这里提供帮助。这些技术不学习预测任何目标值,因为没有可用的。但是,他们可以在数据中学习结构,并找到相似输入的分组,或者了解可能出现哪些类型的输入,哪些类型不可能。本章将介绍在MLlib中使用集群实现的无监督学习。

第1节 异常检测

异常检测的问题,顾名思义,就是寻找不寻常的东西。如果我们已经知道一个数据集的“反常”,我们可以很容易地在有监督学习的数据中发现异常。一个算法会接收被标记为“正常”和“异常”的输入,并学习区分两者。然而,异常的本质是它们是未知的未知。换句话说,一种被观察和理解的异常现象不再是一种反常现象。

异常检测通常用于发现欺诈、检测网络攻击,或发现服务器或其他传感器设备中的问题。在这些情况下,重要的是能够找到前所未有的新类型的异常——新的欺诈形式,新的入侵,服务器的新的故障模式。

在这些情况下,无监督学习技术是有用的,因为它们可以了解输入数据通常是什么样子,因此,当新的数据不像过去的数据时,就可以检测到。这些新数据不一定是攻击或欺诈;它们只是不寻常的,因此,值得进一步调查的数据。

第2节 K-Means聚类

聚类是最著名的无监督学习。聚类算法试图寻找数据中的自然分组。那些彼此相似,但和其他的不相似的数据点,可能代表一个有意义的分组,因此聚类算法试图将这些数据放入同一个集群中。

K-Means聚类可能是最广泛使用的聚类算法。它试图在数据集中检测k个簇,而k是由数据科学家给出的。k是模型的一个超参数,正确的值将取决于数据集。实际上,为k选择一个好的值将是本章用例的中心主题。

当数据集包含像客户活动或者交易这样的信息时,“like”是什么意思?K-means需要数据点之间的距离概念。Kmeans中使用简单的欧氏距离来测量数据点之间的距离是很常见的,而且这是在写这篇文章时,Spark MLlib支持的唯一的距离函数。欧几里得距离是为数据点定义的,这些点的特征都是数值型的。“Like”指的是中间距离较小的点。

对于K-Means,一个集群只是一个点:组成集群的所有点的中心。实际上,这些都是包含所有数字特征的特征向量,可以称为向量。可以更直观地调用它们,并把它们看作是点,因为它们被当作欧几里得空间中的点。

这个中心被称为集群中心,它被定义为点的算术平均值——因此得名K-means。首先,该算法智能地选取一些数据点作为初始的聚类中心。然后每个数据点被分配到最近的质心。然后,对于每个集群,将计算一个新的集群centroid作为分配给该集群的数据点的平均值。
这个过程被重复。

关于K-Means介绍的已经足够了。一些更有趣的细节将在用例中出现。

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条