聚类分析是智能算法中最为常见的算法之一。从人类的认识角度来说,人从小到大都在学习,都在认识新事物,我们小的时候就拥有聚类的能力,当你吃过苹果,看过橘子之后,常会看到同伴拿着吃的东西而羡慕不已,也许有时候你根本不知道那是什么东西,但是你知道那是可以吃的,这在脑海中便有了把吃的和玩的区分的能力,但是这种对事物的聚类并不够精确,通过岁月的积累,你知道了水果的种类,这样渐渐的你将不同事物的归类的准确性越高。在这里要注意,它与分类不同,聚类不需要事先约束的规则,举个通俗的例子,你知道了人可以分为男人和女人,当然这只是一种分类方式,现在有个人,她能怀孕,毫无疑问,你会将其归为女人这一人群,通过分类,你知道了她是女人。然而聚类并不知道人可以分为男人和女人,它只是通过一些数据发现有些人是可以怀孕的,有些人是不能怀孕的,但是并不能去定义为男人或者女人,这是分类和聚类的简单区别,概括的说,聚类是一种非监督的技术,而分类是属于有监督的技术。
简而言之,聚类就是讲对象划分为簇,使得同簇的对象尽可能相似,不同簇的对象尽可能相异。如何去衡量这种相似相异程度呢?常见的用相似度去衡量,在相似度计算之前首先需要对数据进行特征抽取,比如我们要考虑一个小区内房源的价格,那么小区的房源的总面积的和总价格便不是直接的因素,我们应该以每个房源价格的平均价格作为参考因素,其次要提取特征,有些数据是噪声点,即不合理的数据,那么需要尽可能过滤,否则对计算的结果会有影响,如在K均值聚类算法中(以后会慢慢详解),影响比较大。再次就是对特征数据规范化处理,如房源的平均价格采用不同的度量标准则需要规范化,再比如对于物业费的收取,有的采用每月每平方米收多少钱,有的则采用每月每户多少钱;还有一种数据就是对于数据的离散化和归一化处理,如对于不同小区的开发商需要对开发商设定一个等级A,B,C等,或者对其打分,打分就需要处理进一步的归一化处理,为什么要归一化,因为不同人对其看待的标准是不一样的,举个例子,你在taobao上买东西对商品的评价与别人或多或少会有出入,这时就需要进一步的处理,最后则需要有效选择特征,能描述小区均价的信息因素肯定很多,如交通,教育,周边生态环境等,则有些因素影响不大,需要过虑,否则因素太多,使得数据的高维,形成“维灾”。
对于相似度的计算一般有特征投影和编辑距离方法。对于特征投影,就是将数据映射到特征空间,特征空间中对象间的距离就位相似度。如小区的建筑类型有高层,小高层等,则可以将这一特征作为一个坐标维,不同小区的交通指数和教育指数也不同,则交通指数和教育指数也可以分别作为一个维度,通过将不同小区映射到特征空间,可以测量在N维空间的距离(有多种测量方法,如欧氏距离等)。对于编辑距离,顾名思义,以一个对象为开始,编辑转换成另一个对象所花费的代价,如将小区A变换为小区B,则需要改变开发商,需要改变交通指数,其他因素都一样,则编辑距离为d(A,B) = 2。
然而实际上,相似度的计算并非那么简单,因为考虑的因素不一样对结果会有影响,处理的方式不一样也会有影响,这些因素可以分为离散型,连续型和二值型的,还有些受测量刻度不同而影响,如顺序的,间隔的,比值型的
在对聚类的基本概念有所了解后,下一章节将在这里重点介绍聚类中衡量对象相似程度的距离的计算方法。
---------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------
Author:James Yan
Date:2011-9-15
From: http://blog.csdn.net/zhouyan8603
Note:All references should be cited
--------------------------------------------------------------------------