『机器学习——周志华』第九章聚类

本文介绍了聚类的基本概念,包括如何将数据集划分为多个不相交的子集(簇),以及这些簇如何被用于发现数据内在的分布结构。文中还讨论了聚类的有效性指标,分为外部指标和内部指标两种,并解释了它们各自的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、聚类试图将数据集中的数据划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster)

2、聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名

思考:簇所对应的概念固然是可以任意命名的,但我们一般的规律仍然是通过样本的属性来命名的,这就意味着,有可能根据样本特征给不同的簇命名

3、聚类既能作为一个单独的过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程

4、聚类性能度量亦称聚类“有效性指标”,对聚类结果,我们需通过某种性能度量来评估其好坏

5、聚类性能度量大致有两类:外部指标和内部指标。

6、外部指标:将聚类结果与某个“参考模型”进行比较,如将领域专家给出的划分结果作为参考模型

7、内部指标:直接观察聚类结果而不利用任何参考模型

8、聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程

9、

### 周志华机器学习》中的聚类算法推导 #### K均值聚类算法的推导 K均值聚类是一种无监督学习方法,旨在将数据集划分为若干簇,使得同一簇内的对象相似度尽可能高,而不同簇之间的对象相似度尽可能低。具体来说,给定一组未标记的数据点 \( \{x_1, x_2, ..., x_n\} \),其中每个 \( x_i \in R^d \),目标是找到 k 个中心点 \( c_j (j=1,...,k) \),使所有数据点到最近中心的距离平方和最小化。 定义代价函数 J 如下: \[ J(C)=\sum_{i=1}^{n}\left \| x_i-c_{z(i)} \right \|^2 \] 这里 \( z(i)\in {1,\ldots,k } \) 表示第 i 个样本所属类别编号;\( C=\{c_1,c_2,…,c_k\} \) 是指由这 k 类质心组成的集合[^1]。 为了求解上述最优化问题,可以采用迭代的方式更新簇分配以及重新计算新的质心位置直到收敛为止。每次迭代过程中先固定当前得到的一组质心去划分各个实例归属哪个簇,再依据新形成的各簇调整其对应的质心坐标。此过程不断重复直至满足停止条件,比如达到最大循环次数或是前后两次变化幅度小于设定阈值等。 ```python import numpy as np def k_means(X, k, max_iters=100): # 随机初始化质心 centroids = X[np.random.choice(range(len(X)), size=k, replace=False)] for _ in range(max_iters): clusters = [[] for _ in range(k)] # 存储每轮迭代后的簇 # 将每个点分配至离它最近的那个质心所在的簇中 for point in X: distances = [np.linalg.norm(point - centroid)**2 for centroid in centroids] cluster_idx = np.argmin(distances) clusters[cluster_idx].append(point) new_centroids = [] # 更新质心的位置为对应簇内所有成员坐标的平均值 for idx, cluster in enumerate(clusters): if not cluster: continue # 如果某一轮某个簇为空,则跳过 mean_point = sum(cluster)/len(cluster) new_centroids.append(mean_point.tolist()) # 判断是否已经收敛 if np.allclose(new_centroids, centroids): break centroids = new_centroids return centroids, clusters ``` 对于其他类型的聚类算法如基于密度的方法DBSCAN,在面对具有不同密度区域的数据分布时可能会遇到困难,因为这类算法通常依赖于一致性的邻域半径参数设置来发现紧密相连的对象群组[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值