机器学习中的聚类

简介: **文章摘要:**本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。

目录


认识聚类算法

聚类算法API的使用

聚类算法实现流程

聚类算法模型评估



认识聚类算法


聚类算法是一种无监督的机器学习算法。 它将一组数据分成若干个不同的群组,使得每个群组内部的数据点相似度高,而不同群组之间的数据点相似度低。常用的相似度计算方法有欧式距离法。


聚类算法在现实生活中的应用


  • 用户画像,广告推荐,搜索引擎的流量推荐,恶意流量识别,图像分割,降维,识别离群点检测。


栗子:按照颗粒度分类  



聚类算法分类


  • K-means聚类:按照质心分类
  • 层次聚类:是一种将数据集分层次分割的聚类算法
  • DBSCAN聚类是一种基于密度的聚类算法
  • 谱聚类是一种基于图论的聚类算法


聚类算法与分类算法最大的区别:


  • 聚类算法是无监督的学习算法
  • 分类算法属于监督的学习算法  


聚类算法API的使用


sklearn.cluster.KMeans(n_clusters=8)

  • n_clusters:开始的聚类中心数量整型,缺省值=8,生成的聚类数
  • estimator.fit(x)
    estimator.predict(x)
    estimator.fit_predict(x)


使用KMeans模型数据探索聚类:



from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.metrics import calinski_harabasz_score
def dm04_kmeans():
    x, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]],
    cluster_std = [0.4, 0.2, 0.2, 0.2], random_state=22)
 
    plt.figure()
    plt.scatter(x[:, 0], x[:, 1], marker='o')
    plt.show()
 
    y_pred = KMeans(n_clusters=2, random_state=22, init='k-means++').fit_predict(x)
    plt.scatter(x[:, 0], x[:, 1], c=y_pred)
    plt.show()
 
    print(calinski_harabasz_score(x, y_pred))


聚类算法实现流程


  1. 随机选择 K 个样本点作为初始聚类中心
  2. 计算每个样本到 K 个中心的距离,选择最近的聚类中心点作为标记类别
  3. 根据每个类别中的样本点,重新计算出新的聚类中心点(平均值)



  • 计算每个样本到质心的距离;离哪个近,就分成什么类别。



根据每个类别中的样本点,计算出三个质心; 重新计算每个样本到质心的距离,直到质心不在变化


当每次迭代结果不变时,认为算法收敛,聚类完成,K-Means一定会停下,不可能陷入

一直选质心的过程。 


聚类算法模型评估


聚类效果评估 – 误差平方和SSE (The sum of squares due to error)



质心的选择会影响图的松散程度:SSE = (−0.2) 2 + (0.4) 2 + (−0.8) 2 + (1.3) 2+ (−0.7) 2  = 3.02


  • SSE随着聚类迭代,其值会越来越小,直到最后趋于稳定。
  • 如果质心的初始值选择不好,SSE只会达到一个不怎么好的局部最优解


聚类效果评估 – “肘”方法 (Elbow method) - K值确定

"肘" 方法通过 SSE 确定 n_clusters 的值


对于n个点的数据集,迭代计算 k from 1 to n,每次聚类完成后计算 SSE,SSE 是会逐渐变小的,因为每个点都是它所在的簇中心本身。SSE 变化过程中会出现一个拐点,下降率突然变缓时即认为是最佳 n_clusters 值。  


聚类效果评估 – SC轮廓系数法(Silhouette Coefficient)


轮廓系数是一种用于评价聚类效果好坏的指标,它结合了聚类的内聚度和分离度。


  • 内聚度:反映了一个样本点与其所在簇内其他元素的紧密程度。内聚度是通过计算样本点到同簇其他样本的平均距离来衡量的,这个平均距离称为簇内不相似度。
  • 分离度:反映了一个样本点与不属于其簇的其他元素之间的紧密程度。分离度是通过计算样本点到其他簇中所有样本的平均距离中最小的那个值来衡量的,这个最小平均距离称为簇间不相似度。


对计算每一个样本 i 到同簇内其他样本的平均距离 ai,该值越小,说明簇内的相似程度越大。

计算每一个样本 i 到最近簇 j 内的所有样本的平均距离 bij,该值越大,说明该样本越不属于其他簇 j


  • 内部距离最小化,外部距离最大化


相关文章
|
30天前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
24 0
|
3月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
63 2
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
256 1
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
67 1
|
5月前
|
机器学习/深度学习 数据挖掘
机器学习之聚类——模糊聚类FCM
机器学习之聚类——模糊聚类FCM
92 4
|
5月前
|
机器学习/深度学习 算法 数据挖掘
机器学习——DBSCAN 聚类算法
【6月更文挑战第8天】DBSCAN是一种基于密度的无监督聚类算法,能处理不规则形状的簇和噪声数据,无需预设簇数量。其优点包括自动发现簇结构和对噪声的鲁棒性。示例代码展示了其基本用法。然而,DBSCAN对参数选择敏感,计算效率受大规模数据影响。为改善这些问题,研究方向包括参数自适应和并行化实现。DBSCAN在图像分析、数据分析等领域有广泛应用,通过持续改进,将在未来保持重要地位。
73 2
|
5月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
57 0
|
5月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
51 0
|
5月前
|
机器学习/深度学习 算法 搜索推荐
机器学习聚类算法
聚类算法是无监督学习技术,用于发现数据集中的自然群体,如用户画像、广告推荐等。常见的聚类算法包括K-Means,它基于距离分配样本至簇,适合球形分布;层次聚类则通过合并或分裂形成簇,能发现任意形状的簇;DBSCAN依据密度来聚类,对噪声鲁棒。KMeans API中`sklearn.cluster.KMeans(n_clusters=8)`用于指定簇的数量。评估聚类效果可使用轮廓系数、SSE等指标,Elbow方法帮助选择合适的K值。
|
5月前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——MeanShift算法和图像矢量量化
机器学习之聚类——MeanShift算法和图像矢量量化
54 0