24.聚类算法的介绍
主要内容
- 算法的分类
- 聚类算法的概念
- 聚类算法的分类
- 聚类算法的应用场景
- 良好聚类算法的特征
一、算法的分类
-
监督学习:在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数

-
非监督学习: 在非监督学习中,我们的数据没有附带任何标签,我们的训练集可以写成只有 x ( 1 ) x^{(1)} x(1), x ( 2 ) x^{(2)} x(2)……一直到 x ( m ) x^{(m)} x(m), 我们没有任何标签 y y y ,在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这个算法,快去为我们找找这个给定的数据的内在结构

-
图上的数据看起来可以分成两个分开的点集(称为簇),一个能够找到我圈出的这些点集的算法,就被称为聚类算法
-
算法的分类:

- 分类是有监督学习中的典型问题
- 聚类是无监督学习中的典型问题,K-均值算法 又是聚类算法中的经典算法
二、聚类算法的概念
- 聚类:人们将物理或抽象对象的集合分为有类似的对象组成的多个类的过程被称为 聚类
- 聚类: 就是将对象分组,使相似的对象归为一类,而不相似的对象归为另一类
- 聚类与降维的关系: 实际上,聚类核降维之间具有共通性,某种意义上聚类就是降维,聚成K类就意味着将原来的数据降为K维
- 聚类分析: 又称为 群分析,研究的是将未标记的样本自动划分成多个类簇,它是研究样品分类或指标分类问题的一种统计分析方法,同时也是数据挖掘或机器学习中的一个重要算法
- 聚类与无监督学习的关系: 聚类是机器学习中的一种重要的无监督学习算法,可以将将数据点归结为一系列的特定组合
- 理论上,归为一类的数据点具有相同的特性,
- 而不同类别的数据点则具有各不相同的属性
三、聚类算法的分类
3.1 基于划分的方法
-
基于划分的方法概念: 给定一个包含n个样本的数据集,基于划分的方法(Partitioning Method)就是将n个样本按照特定的度量划分为k个簇(k≤n),使得每个簇至少包含一个对象,并且每个对象属于且仅属于一个簇,而且簇之间不存在层次关系
-
基于划分的方法 是简单、常用的一种聚类方法,通过将对象划分为互斥的簇进行聚类,每个对象属于且仅属于一个簇。划分结果旨在使簇之间的样本相似性低,簇内部的样本相似度高
-
基于划分的方法大多数是基于距离来划分样本的,首先对样本进行初始划分,然后计算样本间的距离,重新对数据集中的样本进行划分,将样本划分到距离更近的簇中,得到一个新的样本划分,迭代计算直到聚类结果满足用户指定的要求
-
典型的算法有k-均值算法和k-medoids算法
-
大部分基于划分的聚类方法采用贪心策略,即在每一次划分过程中寻求最优解,然后基于最优解进行迭代计算,逐步提高聚类结果的质量
3.2 基于层次的方法
-
基于层次的方法(Hierarchical Method) 是按层次对数据集进行划分。根据层次聚类的过程,可分为自底向上的凝聚方法和自顶向下的分裂方法,在应用过程中,可以根据需求对指定层数的聚类结果进行截取
- 凝聚方法 将初始数据集中的每个样本独立当作一个簇,然后根据距离、密度等度量方法,逐步将样本合并,直到将所有的样本都合并到一个簇中,或满足特定的算法终止条件
- 分裂方法 将初始数据集中的所有样本点都当作一个簇,在迭代过程中逐步将上层的簇进行分解得到更小的新簇,直到所有的簇中都只包含一个单独的样本,或满足特定的算法终止条件
-
两种方法的优缺点:
- 在分裂方法中,对一个上层的簇进行分裂得到下层的簇时,若该簇中包含n个样本,则共有2n−1种可能的分裂情况。实际应用中n的值一般都比较大,若要考虑所有的分裂情况,则计算量非常大
- 因此分裂方法采用启发式的方法进行分裂,且一旦分裂步骤完成,则不回溯考量其他分裂情况是否具有更佳的性能。因此分裂方法可能会导致质量不佳的聚类结果,考虑到这一点,凝聚方法的研究要多于分裂方法
3.3 基于密度的方法
- 大部分基于密度的方法(Density-based Method)采用距离度量 来对数据集进行划分,在球状的数据集中能够正确划分,但是在非球状的数据集中则无法对样本进行正确聚类,并且受到数据集中的噪声数据影响较大
- 基于密度的方法提出“密度”的思想,即给定邻域中样本点的数量,当邻域中密度达到或超过密度阈值时,将邻域内的样本包含到当前的簇中。若邻域的密度不满足阈值要求,则当前的簇划分完成,对下一个簇进行划分
- 基于密度的方法可以对数据集中的离群点进行检测和过滤
3.4 基于网格的方法
- 基于网格的方法(Grid-based Method)将数据集空间划分为有限个网格单元,形成一个网络结构,在后续的聚类过程中,以网格单元为基本单位进行聚类,而不是以样本为单位
- 由于算法处理时间与样本数量无关,只与网格单元数量有关,因此这种方法在处理大数据集时效率很高
- 基于网格的方法可以在网格单元划分的基础上,与基于密度的方法、基于层次的方法等结合使用
3.5 基于模型的方法
- 基于模型的方法(Model-based Method)假定数据集满足一定的分布模型,找到这样的分布模型,就可以对数据集进行聚类
- 基于模型的方法 主要包括基于统计和基于神经网络两大类,
- 基于统计的以高斯混合模型(Gaussian Mixture Models,GMM)为代表
- 基于神经网络的以**自组织映射网络(**Self Organizing Map,SOM)为代表
- 目前以基于统计模型的方法为主
四、聚类算法的应用场景
-
聚类可以作为一个单独过程,用来寻找样本数据本身所蕴含的“分布结构”规律,也可以作为有监督学习算法的辅助过程
-
聚类作为有监督学习算法的辅助过程,既可以作为前期处理过程,也可以作为后处理过程

4.1 聚类作为单独过程
- 手机用户使用移动网络时会留下用户位置信息,近年来随着地理信息系统(GIS )的发展,如何结合用户信息与GIS所提供的地理信息来提供商业价值成为一个重要的研究课题
- 一个最简单的聚类应用就是对移动设备用户位置信息进行聚类,找到人群聚集点,从而为连锁餐饮机构新店选址提供参考
4.2 聚类作为前处理过程
- 电商平台对新用户进行分类预测(有监督学习)的前提是对样本数据的“用户类型”进行标记,即明确每条用户信息对应哪类用户(例如A类用户、B类用户等),而对“用户类型”进行标记的前提是对“用户类型”进行定义
- 聚类算法正好可以对用户群体进行聚类,将每个簇定义为一种用户类型。所以聚类算法可以作为有监督学习的前处理过程
4.3 聚类作为后处理过程
- 运营商设计流量套餐营销方案的时候,可以先通过分类算法识别新用户是否为“流量用户”类型
- 但是为了实现精准营销,还需要对这些“流量用户”进一步细分其类别,这个时候就可以使用聚类算法实现“流量用户”群体细分
五、良好聚类算法的特征
- 良好的可伸缩性
- 不仅能在小数据集上拥有良好性能,得到较好聚类结果,而且在处理大数据集时同样有较好的表现
- 这里的大数据集表现为数据量大、数据维度多
- 处理不同类型数据的能力
- 不仅能够对数值型的数据进行聚类,也能够对诸如图像、文档、序列等复杂数据进行聚类,甚至在多种类型的混合数据集中有良好的表现
- 处理噪声数据的能力
- 实际应用中,数据集的质量往往不理想,包含很多噪声数据
- 一个良好的聚类算法降低噪声数据对聚类结果的影响,在低质量数据集中同样能够得到不错的聚类结果
- 对样本顺序的不敏感性
- 良好的聚类算法应当不受输入数据顺序的影响,任意顺序数据输入都能够得到相同的聚类结果
- 约束条件下的表现
- 实际应用场景中,聚类算法需要受到应用背景的约束
- 良好的聚类算法在约束条件下同样能够对数据集进行良好的聚类,并且得到高质量聚类结果
- 易解释性和易用性
-
不是所有的聚类分析使用者都是数据分析专家,对于用户来说,聚类分析算法应该方便使用,且聚类得到的结果容易解释
-
良好的聚类算法在约束条件下同样能够对数据集进行良好的聚类,并且得到高质量聚类结果
-
- 易解释性和易用性
- 不是所有的聚类分析使用者都是数据分析专家,对于用户来说,聚类分析算法应该方便使用,且聚类得到的结果容易解释
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
