聚类算法:
用于将相似的样本自动归到一个类别中。在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。
聚类算法与分类算法最大的区别:
聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。
KMeans简述:
K-means算法,也称为K-平均或者K-均值,一般作为掌握聚类算法的第一个算法。
这里的K为常数,需事先设定,通俗地说该算法是将没有标注的 M 个样本通过迭代的方式聚集成K个簇。
在对样本进行聚集的过程往往是以样本之间的距离作为指标来划分。
趣味由来:
有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。
听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。
牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个村民又去了离自己最近的布道点……
就这样,牧师每个礼拜更新自己的位置,村民根据自己的情况选择布道点,最终稳定了下来。
优点:
1.易理解、算法复杂度低。
2.处理大数据集的时候,该算法可以保证较好的伸缩性;
3.当簇近似高斯分布的时候,效果非常不错;
缺点:
1.K 值需要人为设定,不同 K 值得到的结果不一样;
2.对异常值敏感;
3.样本只能归为一类,不适合多分类任务;
4.不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类。
主要参数有:
n_clusters: 即k值
max_iter: 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。max_iter: 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。
n_init:用不同的初始化质心运行算法的次数。由于K-Means是结果受初始值影响的局部最优的迭代算法,因此需要多跑几次以选择一个较好的聚类效果,默认是10,一般不需要改。如果你的k值较大,则可以适当增大这个值。
algorithm:有“auto”, “full” or “elkan”三种选择。”full”就是我们传统的K-Means算法, “elkan”是elkan K-Means算法。默认的”auto”则会根据数据值是否是稀疏的,来决定如何选择”full”和“elkan”。一般数据是稠密的,那么就是 “elkan”,否则就是”full”。一般来说建议直接用默认的”auto”
random_state:表示产生随机数的方法。默认情况下的缺省值为None,此时的随机数产生器是np.random所使用的RandomState实例。
模型评估:(高的类内 (intra-cluster) 相似度以及低的类间 (inter-cluster) 相似度)
误差平方和(SSE The sum of squares due to error):

轮廓系数(Silhouette Coefficient):
轮廓系数适用于实际类别信息未知的情况。对于单个样本,设a是与它同类别中其他样本的平均距离,b是与它距离最近不同类别中样本的平均距离,其轮廓系数为:

补充:不适合基高密度的聚类算法DBSCAN。
“肘”方法 (Elbow method) — K值确定:
(1)对于n个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中心的距离的平方和;
(2)平方和是会逐渐变小的,直到k==n时平方和为0,因为每个点都是它所在的簇中心本身。
(3)在这个平方和变化过程中,会出现一个拐点也即“肘”点,下降率突然变缓时即认为是最佳的k值。
K-Means是一种常见的无监督学习算法,用于将数据集中的样本自动分为K个簇。该算法基于样本间的欧氏距离进行聚类,其优点包括简单易懂、处理大数据集时具有较好的伸缩性。然而,K值的选择、对异常值的敏感性以及对非凸形状簇的处理能力不足是其主要缺点。在确定最佳K值时,可以使用‘肘’方法。模型评估通常采用误差平方和(SSE)和轮廓系数(Silhouette Coefficient)。此外,DBSCAN等其他聚类算法适用于高密度区域的聚类任务。
1064

被折叠的 条评论
为什么被折叠?



