所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。
与分类不同,分类是示例式学习,要求分类前明确各个类别,并断言每个元素映射到一个类别,而聚类是观察式学习,在聚类前可以不知道类别甚至不给定类别数量,是无监督学习的一种。目前聚类广泛应用于统计学、生物学、数据库技术和市场营销等领域,相应的算法也非常的多。
K-Means算法实例
例:以下是一组用户的年龄数据,将K值定义为2对用户进行聚类。并随机选择16和22作为两个类别的初始质心。
Data_Age = [15,15, 16, 19, 19, 20, 20, 21, 22, 28, 35, 40, 41, 42, 43, 44, 60, 61, 65];
CenterId1 =16, CenterId2 = 22
(1)、计算距离并划分数据
通过计算所有用户的年龄值与初始质心的距离对用户进行第一次分类。计算距离的方法是使用欧式距离。距离值越小表示两个用户间年龄的相似度越高。
第一次迭代:
Data_Age = [15,15, 16, 19, 19, 20, 20, 21, 22,