您的位置:首页 > 编程语言

集体智慧编程_聚类

2010-11-05 14:36 309 查看

发现组群

这一章让我很纠结,主要是我个人对python略懂,所以里面很多的程序在python现在的版本中非常的不给力,尤其是那个gernerater的错误。这一章的题目是“发现组群”,我觉得叫”组群发现“好多了,而且我觉得中文版中很多的翻译都比较的水,很不符合中国人的胃口。说起组群,就是在很大的一大堆人群中,找出哪些人臭味相投。一个很自然的想法就是分类和聚类。分类就是你给一些标签,然后将每个人分到对应的标签里面。这个的前提是必须你要对这个人群大致的了解才行,至少你要知道怎么给他们一些标签能够让他们觉得不尴尬。另外一种就是对这个人群完全不知道,但是你知道他们并非都是一样的人,他们的品位不同。聚类的目的就是对这个人群进行聚集,将这些品位差不多的人聚集到一起,差很多的人分开。所以它追求的目的是类间距离最大和类内距离最小。

有监督和无监督学习

有监督,顾名思义是你要想办法监督它指导它,是要利用样本输入和期望输出来学习如何预测的技术。比如最常用的神经网络、决策数、支持向量机和贝页斯过滤,这些都基本是属于分类的方法。

无监督,顾名思义是任何指导都不需要,不需要利用带有正确答案的数据进行训练。他的作用是在一组数据中寻找某种结构,而这些数据本身并不是我们要找的答案。所以在前面的推荐的例子中,聚类的结果不会告诉零售商每一位用户要买什么,也不能预测新来的新户适合哪些东西。聚类的目的只是采样数据,然后找到不同的组群。至于这个组群,我们知道的只是他们具有相似的特点。

博客聚类

书上用了两个非常常用的聚类算法来解决博客聚类的问题,一个是层次聚类,一个是K均值聚类。这两个想必了解过NLP的人都知道,书上的程序思路非常的清晰,但是由于本人python水平有限,暂时还没有运行起来。

层次聚类(书上是“分级聚类”):是一个自底向上的过程,有点类似于huffman编码的问题,最终的结果是生成聚类树。对于要聚类的元素,初始化时每个单独的元素都是一个类别,然后迭代计算。每次迭代计算当前组群中的距离最近的两个元素,并且将他们合并,并且对于这个新的元素,将其位置更新为被合并的两个元素的平均值。这样反复的迭代,直到最后只剩下一个元素。从这个过程中就可以看到,这样的聚类最终会得到一个类似于树型结构的聚类结果。书上还有一个将这个结果转化成为可视化数据的方法。

K均值聚类:事先给定需要聚类的类别数量,然后算法根据数据的结构来进行聚类,并且决定每个类别的类别大小。层次聚类的一个非常显著的缺点是它的计算量非常巨大,每次都要两两配对计算。算法也是一个迭代的过程,首先随机选择K个元素作为类别的中心,然后对于每个元素,计算它应该属于哪个类别。这里需要进行度量,将该元素放入它最接近的类别。在一次计算之后,需要对聚类中心进行更新,使用新的类别元素。这个过程不断重复,直到聚类稳定。

书上还有一个“多维缩放”的技术,可以为数据集找到一个二为的表达形式,有兴趣的可以看看书上面这一节的讲解。

对于聚类,这一章讲得时比较简单的,聚类的算法还一许多。但是这本书的可贵之处就是它将聚类用一个实际的例子来进行说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: