聚类算法
【聚类算法】一、无监督学习与聚类算法
决策树、线性和逻辑回归都是比较常用的机器?学习算法,他们虽然有着不同的功能,但却都属于 “有监督学习” 的一部分,即是说,模型在训练的时候,即需要特征矩阵X,也需要真实标签y。机器学习当中,还有相当一部分算法属于 “无监督学习” ,无监督的算法在训练的时候只需要特征矩阵X,不需要标签。无监督学习的代表算法有聚类算法、降维算法。
文章图片
文章图片
聚类算法是无监督类机器学习算法中最常用的一类,其目的是将数据划分成有意义或有用的组(也被称为簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。如果目标是划分成有意义的组,则簇应当捕获数据的自然结构。然而,在某种意义下,聚类分析只是解决其他问题(如数据汇总)的起点。无论是旨在理解还是应用,聚类分析都在广泛的领域扮演着重要?角?色。这些领域包括:心理学和其他社会科学、生物学、统计学、模式识别、信息检索、机?学习和数据挖掘。
二、核心概念
- 聚类分析
聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。 - 簇
简单来说,簇就是分类结果的类,但实际上簇并没有明确的定义,并且簇的划分没有客观标准,我们可以利用下图来理解什什么是簇。该图显示了20个点和将它们划分成簇的3种不同方法。标记的形状指示簇的隶属关系。下图分别将数据划分成两部分和六部分。然而,将2个较大的簇都划分成3个子簇可能是人的视觉系统造成的假象。此外,说这些点形成4个簇可能也不无道理。该图表明簇的定义是不精确的,而最好的定义依赖于数据的特性和期望的结果。
聚类分析与其他将数据对象分组的技术相关。例如,聚类可以看作一种分类,它用类(簇)标号创建对
象的标记。然而,只能从数据导出这些标号。相比之下,KNN则是监督分(supervisedclassfication),即使用由类标号已知的对象开发的模型,对新的、无标记的对象赋予类标号。为此,有时称聚类分析为非监督分类(unsupervised classification)。在数据挖掘中,不附加任何条件使用术语分类时,通常是指监督分类。
文章图片
三、基于原型的聚类技术:K-Means - 基于原型的簇
此时簇是对象的集合,并且其中每个对象到定义该簇的原型的距离比到其他簇的原型的距离更更近(或更加相似)。对于具有连续属性的数据,簇的原型通常是质心,即簇中所有点的平均值。当质心没有意义时(例如当数据具有分类属性时),原型通常是中心点,即簇中最有代表性的点。对于许多数据类型,原型可以视为最靠近中心的点;在这种情况下,通常把基于原型的簇看作基于中心的簇(center-based cluster)。毫无疑问,这种簇趋向于呈球状。下图是一个基于中心簇的例子。
文章图片
- K-Means基本定义
K均值算法比较简单,我们从介绍它的基本算法开始。首先,选择K个初始质心,其中K是我们指定的参
数,即所期望的簇的个数。每个点指派到最近的质心,而指派到一个质心的点集为一个簇。然后,根据
指派到簇的点,更更新每个簇的质心。重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。
K-Means的核心任务就是根据我们设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分
配到这些质心代表的簇中去。具体过程可以总结如下:
文章图片
在数据集下多次迭代(iteration),就会有:
文章图片
可以看见,第六次迭代之后,基本上质心的位置就不再改变了,生成的簇也变得稳定。此时我们的聚类
就完成了,我们可以明显看出,K-Means按照数据的分布,将数据聚集成了我们规定的4类,接下来我
们就可以按照我们的业务需求或者算法需求,对这四类数据进行不同的处理。 - 算法执行细节
聚类算法聚出的类有什么含义呢?这些类有什么样的性质?我们认为,被分在同一个簇中的数据是有相
似性的,而不同簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么
样的性质,从而根据业务需求制定不同的商业或者科技策略。聚类算法的目的就是追求“簇内差异小,簇
外差异大”。而这个“差异“,由样本点到其所在簇的质心的距离来衡量量。
对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差异就
越小。而距离的衡量方法有多种,令 x表示簇中的一个样本点, u表示该簇中的质心,n表示每个样本点
中的特征数目,i表示组成点x 的每个特征,则该样本点到质心的距离可以由以下距离来度量。
2.1 距离衡量方法
常见距离衡量方法即对应公式如下所示:
文章图片
文章图片
2.2 误差平方和SSE(Sum of the Squared Error,SSE)
此处引入机器?学习算法中?非常重要的概念,误差平方和,也被称为组内误差平方和。该概念在聚类和回归算法中均有广泛应用。在聚类算法中所谓误差平方和是指每个数据点的误差,即它到最近所属类别质心的欧几里得距离,然后求和汇总既得误差平方和。在聚类算法中,SSE是我们判断模型是否最优的重要指标,我们希望求得的模型是在给定K值得情况下SSE最小的模型,即在相同的K值情况下聚类模型SSE越小越好,这也是聚类算法最核心的优化条件。
四、使用sklearn实现K-Means
https://nbviewer.jupyter.org/github/Wxj-0920/cda-/blob/master/%E8%81%9A%E7%B1%BB%E7%AE%97%E6%B3%95.ipynb
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长