集体智慧编程_聚类
2010-11-05 14:36
375 查看
发现组群
这一章让我很纠结,主要是我个人对python略懂,所以里面很多的程序在python现在的版本中非常的不给力,尤其是那个gernerater的错误。这一章的题目是“发现组群”,我觉得叫”组群发现“好多了,而且我觉得中文版中很多的翻译都比较的水,很不符合中国人的胃口。说起组群,就是在很大的一大堆人群中,找出哪些人臭味相投。一个很自然的想法就是分类和聚类。分类就是你给一些标签,然后将每个人分到对应的标签里面。这个的前提是必须你要对这个人群大致的了解才行,至少你要知道怎么给他们一些标签能够让他们觉得不尴尬。另外一种就是对这个人群完全不知道,但是你知道他们并非都是一样的人,他们的品位不同。聚类的目的就是对这个人群进行聚集,将这些品位差不多的人聚集到一起,差很多的人分开。所以它追求的目的是类间距离最大和类内距离最小。有监督和无监督学习
有监督,顾名思义是你要想办法监督它指导它,是要利用样本输入和期望输出来学习如何预测的技术。比如最常用的神经网络、决策数、支持向量机和贝页斯过滤,这些都基本是属于分类的方法。无监督,顾名思义是任何指导都不需要,不需要利用带有正确答案的数据进行训练。他的作用是在一组数据中寻找某种结构,而这些数据本身并不是我们要找的答案。所以在前面的推荐的例子中,聚类的结果不会告诉零售商每一位用户要买什么,也不能预测新来的新户适合哪些东西。聚类的目的只是采样数据,然后找到不同的组群。至于这个组群,我们知道的只是他们具有相似的特点。
博客聚类
书上用了两个非常常用的聚类算法来解决博客聚类的问题,一个是层次聚类,一个是K均值聚类。这两个想必了解过NLP的人都知道,书上的程序思路非常的清晰,但是由于本人python水平有限,暂时还没有运行起来。层次聚类(书上是“分级聚类”):是一个自底向上的过程,有点类似于huffman编码的问题,最终的结果是生成聚类树。对于要聚类的元素,初始化时每个单独的元素都是一个类别,然后迭代计算。每次迭代计算当前组群中的距离最近的两个元素,并且将他们合并,并且对于这个新的元素,将其位置更新为被合并的两个元素的平均值。这样反复的迭代,直到最后只剩下一个元素。从这个过程中就可以看到,这样的聚类最终会得到一个类似于树型结构的聚类结果。书上还有一个将这个结果转化成为可视化数据的方法。
K均值聚类:事先给定需要聚类的类别数量,然后算法根据数据的结构来进行聚类,并且决定每个类别的类别大小。层次聚类的一个非常显著的缺点是它的计算量非常巨大,每次都要两两配对计算。算法也是一个迭代的过程,首先随机选择K个元素作为类别的中心,然后对于每个元素,计算它应该属于哪个类别。这里需要进行度量,将该元素放入它最接近的类别。在一次计算之后,需要对聚类中心进行更新,使用新的类别元素。这个过程不断重复,直到聚类稳定。
书上还有一个“多维缩放”的技术,可以为数据集找到一个二为的表达形式,有兴趣的可以看看书上面这一节的讲解。
对于聚类,这一章讲得时比较简单的,聚类的算法还一许多。但是这本书的可贵之处就是它将聚类用一个实际的例子来进行说明。
相关文章推荐
- “集体智慧编程”之第三章:“发现群组”的 分级聚类
- 集体智慧编程——博客文章聚类-Python实现
- 算法总结(集体编程智慧) - 聚类、优化
- “集体智慧编程”之第三章:“发现群组”的 列聚类
- “集体智慧编程”之第三章:带偏好条件的聚类及聚类的展示方式
- 集体智慧编程:第三章 聚类
- 集体智慧编程中的分级聚类学习
- 集体智慧编程学习之聚类系统
- 集体智慧编程-K均值聚类代码理解
- 7.12-集体智慧编程-笔记-提供推荐--未完
- 【集体智慧编程 学习笔记】 推荐系统构建
- 集体智慧编程 英文版
- 集体智慧编程中文版pdf
- 关于《programming collective intelligence》(集体智慧编程)的del.icio.us API无法访问
- 数据挖掘 - 集体智慧编程 - 寻找独立特征
- 集体智慧编程-discovering groups
- 【集体智慧编程 学习笔记】统计订阅源中的单词数
- 算法总结(集体编程智慧) - 分类
- 集体智慧编程_前言
- 集体智慧编程 读书笔记 三