聚类分析和回归和分类不同,是一种无监督的方法,将数据对象划分为不同的类,类称为“簇”,簇的集合称为聚类。聚类分析算法使同一类的数据彼此相似,不同类之间的彼此相异,相似性和相异性的度量如下。
对象之间的相似性和相异性常用相异度矩阵来表示,相异度矩阵中的d(x,y)表示对象x与对象y的相异程度。
通常,使用距离来表示两个对象之间的相似性/相异性,距离的计算方法有多种,其中最常用的是欧式距离(欧基里德距离),而欧式距离又由闵可夫斯基距离到出。闵可夫斯基(Minkowski)距离如下所示:
当q=1时,则为曼哈坦(Manhattan)距离:
q=2时,则为欧式距离(Euclidean):
显然,上述闵可夫斯基距离公式只适用于数值类型的数据。
在文档分析时,通常会使用若干维的向量来表示一份文档,每一维表示一个词语的词频,显然这些数据是极不对称的,且存在大量的零。这种场景下,优先选择余弦相似度来表征对象之间的相似性:
标称数据有多种取值,是二元变量的推广,可以取多于两种状态。标称数据的相似性/相异性可以通过以下方法得到:
一、简单匹配
即,用两个对象之间的失配率来表示相异性。
二、预处理后使用数值型数据计算方法
有如下预处理方法:
>>扩展阅读 如何度量数据的相似性和相异性
【问】如果一个类中有多个样本,如何计算类与类之间的距离?
可以通过计算簇的形心(如计算样本均值),来确定簇中心。
聚类分析已经广泛应用于许多应用领域,包括商务智能、图像模式识别、Web搜索、生物学和安全。
除此之外还应用在数据洞察、数据预处理和离群点检测中。
早先,人人的手机资费套餐都是相同的,“雨露均沾”。但现在,往往会有不同的套餐供选择。
我们在选择手机资费套餐的时候,会从多种多种套餐中挑出一款最合适的。何为最合适?即对自己而言最合算的。
例如,如果上网多,就会选择无限流量套餐;老人家不上网,但打电话多,就会选择通话资费优惠的电话套餐,等等。
又或者有从众者,懒于繁琐的比较,直接选择和朋友一样的套餐——“哎呀,咱俩生活习惯相似,你选啥我也选啥吧。”
因此,运营商市场部门会实现对用户进行分类,“对症下药”对不同类型的客户推出针对性强的套餐。
比如手写体识别。对于相同的字,每个人的书写习惯不尽相同。可以通过聚类方法收集同一文字的子类,建立“变体库”,使用基于子类的多个模型提高整体识别的准确率。
Web搜索的结果非常的庞大,关键词搜索往往会返回大量命中对象。可以使用聚类将结果进行分组,改以简明的形式来呈现。
使用聚类可以发现一些意料外的模式,可自动地发现分组,因此聚类又称“自动分类”。
在数据预处理中,需要去除噪声(离群点),可以采用的有统计学方法和聚类方法。
1.基于统计学方法:检查最值、均值、方差,数据可视化。
2.基于距离方法:设置一个中心对象和距离阈值,将与中心对象距离超过阈值的数据对象判定为孤立点(孤立岛)。
k-means算法,即k-均值算法是一种基于形心的技术,使用划分方法将数据集D中的对象分配到k个簇中,并使用一个目标函数来评估划分质量,使得簇内对象相互相似,而与其他簇中的对象相异——即,簇内高相似性,簇间低相似性。
k-means算法使用簇的形心(簇内点的均值,当数据为标称类型时使用众数)代表簇,使用簇内变差(簇中对象与形心差的平方和)度量簇的质量。
和穷举算法不同,k-means使用启发式的算法进行计算,因此不能保证算法收敛于全局最优解,并且它常常终止于一个局部最优解。