« 使用cronolog和webalizer分割和分析apache日志 | Main | bayes,简单就是美 »

clustering

clustering(聚类)对文本挖掘、图像切割、数据检索等方面来说是一项非常重要的技术。聚类就是将一组实例进行自然分组。表示聚类的结果可以有多种方法,排他的(每个实例只能属于一个组)、重叠的(一个实例可以属于多个组)、概率表示的(表示为属于每个组的概率为多少)、分层次(多级分类)的等。在聚类研究中最常用的一种技术是K-means,首先指定要聚类的个数K,也就是我们要将一组实例归为几组,然后随机选出k个点作为聚类中心,接下来计算出实例所在的每个聚类的质心,这些质心成为各个聚类的新的中心值,不断的重复这个过程直到每个聚类所拥有的实例与上一次相同,此时聚类的中心便确定下来。使用k-means时必须事先知道聚类数目,并且初始的聚类中心的选择对于结果可能有很大的影响,因此有时需要采用多次不同的初始值进行运算然后取最优的结果。当然,如果是一种固定分类的形式,则采用机器学习的方法自动分类也是可以达到效果,但是这种方法则需要大量已知分类的学习集,这一方面比较成熟的算法是bayes、knn、svm等。

在互联网中,clusty将聚类这一技术引入了搜索引擎中,这将给用户带来体验上的很大改进。象google这样的搜索引擎可以提供大量的搜索结果,但是如何提供最相关的内容似乎已经碰到了瓶颈。事实上google对于同一网站可能在一次搜索中只显示一条结果,而将同域名的相似文章组织在一起,这也算是聚类的一种。但必须通过标题和内容的更有效的聚类分析才能进一步提高用户体验。从clusty的结果来看,聚类本身似乎并不会有太大的问题,最大的问题可能出现在速度上(据6e介绍,clusty使用的是平移算法),因为clusty是在每次搜索结果返回之前进行聚类分析,这样每次搜索的速度受到了极大的限制,并且clusty是一个META搜索引擎,这就更加影响了它的速度。

google则在机器新闻中展示了聚类的研究成果。就像前面说的一样,在实时的搜索中,速度方面可能会是一个问题,但是在机器新闻的生产过程中,因为新闻可以是定期生成的,因此这个问题就自然解决了。

参考资料
A Tutorial on Clustering Algorithms
http://www.elet.polimi.it/upload/matteucc/Clustering/tutorial_html/index.html
信息的聚类
http://www.wespoke.com/archives/000844.html

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)