探索推荐引擎内部的秘密,第 3 部分: 深刻推荐引擎相关算法 - 聚类

转自:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy3/index.htmlhtml

智能推荐大都基于海量数据的计算和处理,然而咱们发如今海量数据上高效的运行协同过滤算法以及其余推荐策略这样高复杂的算法是有很大的挑战的,在面对解决这个问题的过程当中,你们提出了不少减小计算量的方法,而聚类无疑是其中最优的选择之一。 聚类 (Clustering) 是一个数据挖掘的经典问题,它的目的是将数据分为多个簇 (Cluster),在同一个簇中的对象之间有较高的类似度,而不一样簇的对象差异较大。聚类被普遍的应用于数据处理和统计分析领域。Apache Mahout 是 ASF(Apache Software Foundation) 的一个较新的开源项目,它源于 Lucene,构建在 Hadoop 之上,关注海量数据上的机器学习经典算法的高效实现。本文主要介绍如何基于 Apache Mahout 实现高效的聚类算法,从而实现更高效的数据处理和分析的应用。web

聚类分析

什么是聚类分析?

聚类 (Clustering) 就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具备较高的类似度,而不一样簇中的对象差异较大。因此,在不少应用中,一个簇中的数据对象能够被做为一个总体来对待,从而减小计算量或者提升计算质量。算法

其实聚类是一我的们平常生活的常见行为,即所谓“物以类聚,人以群分”,核心的思想也就是聚类。人们老是不断地改进下意识中的聚类模式来学习如何区分各个事物和人。同时,聚类分析已经普遍的应用在许多应用中,包括模式识别,数据分析,图像处理以及市场研究。经过聚类,人们能意识到密集和稀疏的区域,发现全局的分布模式,以及数据属性之间的有趣的相互关系。机器学习

聚类同时也在 Web 应用中起到愈来愈重要的做用。最被普遍使用的既是对 Web 上的文档进行分类,组织信息的发布,给用户一个有效分类的内容浏览系统(门户网站),同时能够加入时间因素,进而发现各个类内容的信息发展,最近被你们关注的主题和话题,或者分析一段时间内人们对什么样的内容比较感兴趣,这些有趣的应用都得创建在聚类的基础之上。做为一个数据挖掘的功能,聚类分析能做为独立的工具来得到数据分布的状况,观察每一个簇的特色,集中对特定的某些簇作进一步的分析,此外,聚类分析还能够做为其余算法的预处理步骤,简化计算量,提升分析效率,这也是咱们在这里介绍聚类分析的目的。工具

不一样的聚类问题

对于一个聚类问题,要挑选最适合最高效的算法必须对要解决的聚类问题自己进行剖析,下面咱们就从几个侧面分析一下聚类问题的需求。oop

聚类结果是排他的仍是可重叠的学习

为了很好理解这个问题,咱们以一个例子进行分析,假设你的聚类问题须要获得二个簇:“喜欢詹姆斯卡梅隆电影的用户”和“不喜欢詹姆斯卡梅隆的用户”,这实际上是一个排他的聚类问题,对于一个用户,他要么属于“喜欢”的簇,要么属于不喜欢的簇。但若是你的聚类问题是“喜欢詹姆斯卡梅隆电影的用户”和“喜欢里奥纳多电影的用户”,那么这个聚类问题就是一个可重叠的问题,一个用户他能够既喜欢詹姆斯卡梅隆又喜欢里奥纳多。网站

因此这个问题的核心是,对于一个元素,他是否能够属于聚类结果中的多个簇中,若是是,则是一个可重叠的聚类问题,若是否,那么是一个排他的聚类问题。htm

基于层次仍是基于划分对象

其实大部分人想到的聚类问题都是“划分”问题,就是拿到一组对象,按照必定的原则将它们分红不一样的组,这是典型的划分聚类问题。但除了基于划分的聚类,还有一种在平常生活中也很常见的类型,就是基于层次的聚类问题,它的聚类结果是将这些对象分等级,在顶层将对象进行大体的分组,随后每一组再被进一步的细分,也许全部路径最终都要到达一个单独实例,这是一种“自顶向下”的层次聚类解决方法,对应的,也有“自底向上”的。其实能够简单的理解,“自顶向下”就是一步步的细化分组,而“自底向上”就是一步步的归并分组。

簇数目固定的仍是无限制的聚类

这个属性很好理解,就是你的聚类问题是在执行聚类算法前已经肯定聚类的结果应该获得多少簇,仍是根据数据自己的特征,由聚类算法选择合适的簇的数目。

基于距离仍是基于几率分布模型

在本系列的第二篇介绍协同过滤的文章中,咱们已经详细介绍了类似性和距离的概念。基于距离的聚类问题应该很好理解,就是将距离近的类似的对象聚在一块儿。相比起来,基于几率分布模型的,可能不太好理解,那么下面给个简单的例子。

一个几率分布模型能够理解是在 N 维空间的一组点的分布,而它们的分布每每符合必定的特征,好比组成一个特定的形状。基于几率分布模型的聚类问题,就是在一组对象中,找到能符合特定分布模型的点的集合,他们不必定是距离最近的或者最类似的,而是能完美的呈现出几率分布模型所描述的模型。

下面图 1 给出了一个例子,对一样一组点集,应用不一样的聚类策略,获得彻底不一样的聚类结果。左侧给出的结果是基于距离的,核心的原则就是将距离近的点聚在一块儿,右侧给出的基于几率分布模型的聚类结果,这里采用的几率分布模型是必定弧度的椭圆。图中专门标出了两个红色的点,这两点的距离很近,在基于距离的聚类中,将他们聚在一个类中,但基于几率分布模型的聚类则将它们分在不一样的类中,只是为了知足特定的几率分布模型(固然这里我特地举了一个比较极端的例子)。因此咱们能够看出,在基于几率分布模型的聚类方法里,核心是模型的定义,不一样的模型可能致使彻底不一样的聚类结果。

图 1 基于距离和基于几率分布模型的聚类问题

图 1 基于距离和基于几率分布模型的聚类问题

相关文章
相关标签/搜索