🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学!
⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐:
【机器学习基础】机器学习入门(1)
【机器学习基础】机器学习入门(2)
【机器学习基础】机器学习的基本术语
【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】对数几率回归(logistic回归)
【机器学习基础】正则化
【机器学习基础】决策树(Decision Tree)
💡本期内容:前面介绍的各种模型都是有监督的模型,对于无监督,最经典的就是聚类算法,本文就来介绍一下主要的聚类方法。
文章目录
- 1 聚类算法分析概述
- 2 K-Means聚类算法
- 3 K-Means参数概念及公式推导
- 3.1 平方误差(Sum of Squared Errors)
- 3.2 欧氏距离(euclidean metric)
- 3.3 轮廓系数(Silhouette Coefficient)
- 3.4 DB指数(Davies-Bouldin Index)
- 4 K-Means聚类算法的实现
- 4.1 算法流程
- 4.2 算法的伪代码描述
- 4.3 算法优缺点
1 聚类算法分析概述
近几年,随着网络的发展,越来越多的人开始习惯于在网上找信息,而网络也逐渐地走进了人们的日常生活。从人们每天都会接触到大量的数据,比如文字、音乐、图像、视频等等。随着信息的增多,人工智能应运而生。而在人工智能这个概念中,机器学习尤为重要,是实现人工智能的基础。机器学习,就是让计算机具有人一样的学习能力的技术,对当前和历史的海量数据进行挖掘、分析,并从中发现有价值的信息和规律。
随着大数据时代的来临,数据挖掘技术逐渐成为一种通用的业务方式,并推动了机器学习技术的快速发展。2021年,我国电商交易额为42.30万亿元,较上年同期增加了19.6%。在电商和其他行业中,要想获得更好的用户体验,就必须要对新用户进行类型的识别,这时,就可以将新用户进行聚类,将其分成多个簇,之后再以获得的结果为依据,来训练分类模型,进而判别新用户的类型。但是传统的数据挖掘技术已经不能适应海量的数据,K-Means聚类算法依赖其较简单的推导过程和实用、简单和高效的特性等广受青睐,在很多领域有巨大的贡献,例如:文档聚类、市场细分、图像分割、特征学习等。在非监督学习领域,K均值聚类是最广泛的,也是研究最多,应用最广泛的。而在聚类算法中,最常见的就是原型聚类(也称原型判别),以K均值算法为代表。
2 K-Means聚类算法
给定或随机产生m个样本的样本集。为了描述每个示例(即样本),我们给出了这样一个假设:每个示例具有d个属性来描述,这些属性反映了它与其他示例的关系,即每个示例是d维样本空间中的一个向量。
K-Means算法的基本思想是:将数据集按照距离进行划分,对于每一个样本,将它的邻域内的所有样本都分配到最近的那个类中。
首先,算法需要预先指定并且划分为k个簇,这也是与其他算法的不同点。在这里定义簇的均值向量为:
基于此,定义簇内样本围绕簇均值向量的紧密程度[13],即平方误差为:
E的值越小则簇内样本相似度越高,K-Means算法就是通过通过最小化SSE来寻找使得模型预测误差最小的模型参数。
3 K-Means参数概念及公式推导
3.1 平方误差(Sum of Squared Errors)
在聚类分析中,平方误差(Sum of Squared
Errors,SSE)是一种衡量聚类效果的指标。聚类算法将数据点分配到不同的簇中,每个数据点与它所属的簇的质心之间的距离被计算出来,然后平方,最后这些平方距离的和被称为平方误差。
具体来说,对于每个数据点xi和它所属的簇ci的质心,平方误差会计算为(xi - ci)^2。然后,所有簇的平方误差会相加,得到总的平方误差。这个值越小,说明每个数据点与它所属的簇的质心之间的距离越小,也就是聚类效果越好。
这个概念可以用于评估和优化聚类算法。比如在K-means算法中,初始质心的选择可能会影响聚类结果。K-means++ 算法通过让选择的质心尽可能分散来改善这个问题。另外,二分K-means算法则通过反复将一个簇划分为两个簇,直到达到用户给定的簇数目为止。在这个过程中,被划分出去的总是误差平方和最大的簇,因为这通常意味着这个簇的聚类效果最不好。
3.2 欧氏距离(euclidean metric)
也被称为欧几里得度量,是一个经常使用的在m维空间中两点之间的距离定义,或者向量的自然长度,即该点到原点的距离。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
在聚类分析中,欧氏距离是常用的距离度量方式之一。它表示的是在n维空间中,两个点之间的直线距离。
具体计算公式为:
其中,x和y是两个n维向量,x1,x2,…,xn和y1,y2,…,yn是它们的对应维度上的值。
在应用方面,欧氏距离经常被用于衡量数据点之间的相似度,数据点之间的距离越小,说明它们越相似。例如,在客户分群中,可以使用该算法将相似行为模式的客户归类到同一簇中,以便进行个性化推荐和精准营销。在图像分析中,可以使用该算法将相似的图像归类到同一簇中,以便进行图像检索和内容识别。
- 缺点
例如,它对数据的尺度敏感,需要对数据进行归一化处理,以避免尺度差异对聚类结果的影响。此外,它只考虑了数据点之间的距离,没有考虑到数据点之间的方向关系,因此在处理某些特殊数据集时可能会出现聚类效果不佳的情况。
3.3 轮廓系数(Silhouette Coefficient)
轮廓系数(Silhouette Coefficient)是一种用于评估聚类效果的指标,它考虑了聚类中的内聚度和分离度。
轮廓系数的计算涉及到每个数据点和其所属簇内其他数据点的距离,以及该数据点与其他簇的距离。具体而言,对于每个数据点,其轮廓系数被定义为:s = (b - a) / max(a, b),其中a是数据点与其同簇其他数据点的平均距离,b是数据点与其他簇的平均距离。
轮廓系数计算公式如下:
根据轮廓系数的定义,si接近1时,说明样本i聚类合理;si接近-1时,说明样本i更应该分类到另外的簇;若si近似为0,则说明样本i在两个簇的边界上。所有样本的si的均值称为聚类结果的轮廓系数,是该聚类是否合理、有效的度量。
- 优点
它可以用于处理不等簇大小的情况,因为它考虑了每个样本点与其他簇的平均距离。
轮廓系数的值域为[-1,1],方便理解和使用。
- 局限性
它对异常值比较敏感,可能会受到离群点的影响。
3.4 DB指数(Davies-Bouldin Index)
DB指数(Davies-Bouldin Index)是一种用于评估聚类效果的内部指标。它考虑了每个簇内的样本点的紧密程度以及不同簇之间的分离度。
DB指数的计算方法如下:
- 对于每个簇Ck,计算其内部样本点之间的平均距离avg(Ck)。
- 对于每个簇Ck,计算其与其它簇之间的最小样本距离dmin(Ck, Cj)。
- 对于每个簇Ck,计算其中心点与其它簇中心点之间的距离dcen(Ck, Cj)。
- 计算DB指数,公式为:DBI=k1i=1∑kmaxj̸=i(dcen(ui,uj)avg(Ci)+avg(Cj))。
DB指数的值越小,说明聚类效果越好。这是因为DB指数衡量的是不同簇之间的分离度和簇内的紧密程度之间的平衡,当DB指数越小,说明聚类效果越好。
- 缺点
DB指数对于异常值比较敏感,因为异常值可能会影响簇内样本点的平均距离的计算。
此外,DB指数也可能会受到样本规模的影响,因为样本规模的增加可能会增加计算量,从而影响聚类效果的评价。
DB指数在计算过程中需要知道真实标签信息,因此常常被用作无监督聚类算法的评价指标,在比较不同算法或不同参数设置时提供了重要的帮助。
4 K-Means聚类算法的实现
K-Means聚类算法的基本原理是,针对聚类簇划分,最小化平方误差。平方误差在一定程度上描述了簇内样本点围绕簇均值向量的紧密程度,它的值越小说明聚类效果越好。
4.1 算法流程
- 从数据中选择K个对象作为初始聚类中心。
- 计算每个聚类对象到聚类中心的距离,将每个对象归到距离最近的聚类中心所对应的类别。
- 对于每个聚类,计算其所有数据点的均值,作为新的聚类中心。
- 如果聚类中心发生变化,返回第2步;否则算法结束。
- 整个算法会反复迭代第2步至第4步,直到聚类中心不再发生变化或达到最大迭代次数为止。最终,算法将会得到聚类结果,将每个数据点划分到不同的聚类中心所对应的类别中。
4.2 算法的伪代码描述
K-Means聚类算法的执行效果如下图所示:
4.3 算法优缺点
-
优点
首先,此算法容易理解、方便实现,其次,K均值算法可以看作高斯混合聚类在混合成分方差相等、且每个样本仅派给一个混合成分时的特例,所以该算法在数据集近似高斯分布时,聚类效果不错。同时,该算法可以处理大规模数据集,效率高。 -
缺点
但是,缺点也很显然。K值和初始聚类点的选取对于聚类的效果可能产生较大的影响,其次,样本点的离散程度可能对于聚类影响有较大的差别,特别是离群点的处理问题。由于K-Means聚类算法只能使用欧氏距离进行计算,所以只能较好的适用于椭球形类簇,对于非凸形状的簇不适合。K-Means算法只能处理数值型数据,对于非数值型数据需要进行转换才能使用。最后,由于此算法的时间复杂度为 O ( n k t ) O(nkt) O(nkt),所以在大规模数据上收敛较慢甚至引起崩溃。