开发者学堂课程【高校精品课-华东师范大学-人工智能基础:K-Means 算法_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/920/detail/15583
K-Means 算法_1
内容介绍:
一、聚类简介
二、算法的实现
一、聚类简介
有时得到的对象无标签及训练样本的标记信息是未知的。这时需要对无标记的训练样本进行学习。分析这类无标签数据需要使用非监督学习技术。
非监督学习可以揭示数据的内在性质或分布规律。为进一步的数据分析提供基础。我们一起来学习非监督学习的一种基本方法,聚类算法。这类 clustering 是指将不同的对象划分成由多个对象组成的多个类的过程。由聚类产生的数据分组。同一组里对象具有相似性。不同组的对象具有相异性。聚类中待划分的类别未知。即训练数据没有标签。
簇(cluster)是由距离邻近的对象组合而成的集合。聚类的最终目标是获得紧凑独立的簇集合,一般采用相似度作为聚类的依据。两个对象的距离越近,其相似度就越大。
由于聚类使用的数据是无标记的,因此聚类属于非监督学习。聚类本质上仍然是类别的划分问题。由于没有固定的类别标准,因此聚类的核心问题是如何定义簇,可以依据样本间距离、样本的空间分布密度等确定。按照簇的定义和聚类的方式,聚类大致可以分为以下几种。K-Means 为代表的簇中心聚类。基于连通性的层次聚类。以 EM 算法为代表的概率分布聚类。以 DBSCAN 为代表的基于网格密度的聚类。以及高斯混合聚类的。K-Means 聚类算法也称为K均值聚类算法是典型的聚类算法。
对于给定的数据集和需要划分的类数K。算法依据距离函数进行简单处理。动态的把数据划分成K个簇类别直到收敛位置。簇中心 cluster center 也称为聚类中心。K-Means 聚类的优点是算法简单,即使数据集很大,计算起来也便捷。不足之处是,如果数据集较大,容易获得局部最优的分类结果。而且所产生的类的大小相近。对造成数据也比较敏感。
二、算法的实现
算法的实现很简单,首先选取 K 个数据点作为初始的簇中心即聚类中心。初始的聚类中心也被称为种子。随后逐个计算各数据点到各聚类中心的距离。把数据点分配到离他最近的簇。一次迭代之后,所有的数据点都会分配给某个簇。再根据分类结果计算出新的聚类中心,并重新计算各数据点到各种子的距离。根据距离重新进行分配。不断重复计算和重新分配步骤,直到分配不再发生变化或满足终止条件。
算法设计如下:
随机选取 K 个数据点作为起始簇中心。
While 数据点的分配结果发生改变。对数据集中的每个数据点p。循环访问每个簇中心 C。计算 P 和 C的距离,把P分配到最近的簇。对于每个簇将簇中心更新为簇内数据点的均值。聚类是一个反复迭代的过程,理想的终止条件是簇的分配和各簇中心不再改变。
下面我们看聚类的流程演示
第一步随机选取 K 个样本作为初始聚类中心。
第二步通过距离函数计算每个样本到各个聚类中心的距离。将样本划分给最近的聚类中心。
第三步重新计算每个聚类的均值。获取新的聚类中心。
第四步重新将所有样本分配到最近的聚类中心。重复三到四步,直到聚类中心和划分方式不再变化,程序停止。