1183710113-许健-Lab3-Report1
实验报告“1183710113-许健-Lab3-Report1”主要探讨了两个关键的机器学习算法:K-means聚类和混合高斯模型(GMM),并使用 Expectation-Maximization (EM) 算法进行参数估计。以下是这两个算法的详细解释: K-means算法是一种无监督学习方法,用于将数据集划分为k个不同的类别。其主要目标是最小化簇内的平方误差和,从而最大化簇间的差异。算法流程包括以下步骤: 1. 初始化:根据输入的超参数k,随机选择k个样本作为初始的簇中心。 2. 分配样本:计算每个样本与所有簇中心之间的欧氏距离,将样本分配给最近的簇。 3. 更新中心:根据新的簇划分,重新计算每个簇的均值,成为新的簇中心。 4. 判断收敛:如果新的簇中心与旧的簇中心之间的差小于预设的阈值ε(例如1e-5),则算法收敛,否则返回步骤2。 在Python中,K-means算法可以通过以下方式实现: ```python def kmeans(X, k, epsilon=1e-5): center = np.zeros((k, X.shape[1]-1)) for i in range(k): center[i,:] = X[np.random.randint(0, high=X.shape[0]),:-1] while True: distance = np.zeros(k) for i in range(X.shape[0]): for j in range(k): distance[j] = np.linalg.norm(X[i,:-1] - center[j, :]) X[i, -1] = np.argmin(distance) new_center = np.zeros((k, X.shape[1]-1)) count = np.zeros(k) for i in range(X.shape[0]): new_center[int(X[i, -1]), :] += X[i, :-1] count[int(X[i, -1])] += 1 for i in range(k): if count[i] > 0: new_center[i, :] /= count[i] if np.linalg.norm(center - new_center) < epsilon: break center = new_center return center, X ``` 接下来,混合高斯模型(GMM)是概率模型,假设数据是由多个高斯分布的线性组合生成的。每个样本x可以表示为k个高斯分布中某一个的生成结果,对应的概率为权重π_i。GMM的联合概率密度函数可以表示为: $$P(x|\theta) = \sum_{i=1}^{k} \pi_i \mathcal{N}(x|\mu_i, \Sigma_i)$$ 其中,θ是模型参数,包含每个高斯分布的均值μ_i、协方差矩阵Σ_i和混合系数π_i,这些参数通过EM算法进行估计。 在EM算法中,E步骤(Expectation)计算每个样本属于每个高斯分布的概率(后验概率),M步骤(Maximization)则根据这些概率来更新模型参数。这个过程反复进行,直至参数收敛,即似然函数达到最大或变化非常小。 实验中,学生许健被要求用高斯分布生成的数据测试K-means的效果,然后使用自实现的EM算法估计GMM的参数,并比较迭代过程中的似然值变化,以验证算法的正确性。此外,还要求在UCI数据集上应用GMM进行聚类,以此评估算法在实际问题上的表现。 该实验旨在加深对K-means聚类和GMM的理解,以及掌握EM算法在参数估计中的应用,通过实践提高学生的理论知识和编程技能。
剩余17页未读,继续阅读
- 粉丝: 32
- 资源: 330
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0