聚类算法是机器学习中涉及对数据进行分组的一种算法。在给定的数据集中,我们可以通过聚类算法将其分成一些不同的组。在理论上,相同的组的数据之间有相同的属性或者是特征,不同组数据之间的属性或者特征相差就会比较大。聚类算法是一种非监督学习算法,并且作为一种常用的数据分析算法在很多领域上得到应用。
在数据科学领域,我们利用聚类分析,通过将数据分组可以比较清晰的获取到数据信息。今天我们来看看,作为数据科学家需要知道并掌握的五种比较比较流行的聚类算法。
K-means聚类算法
K-means聚类算法可能是大家最为熟悉的聚类算法。它在许多的工业级数据科学和机器学习课程中都有被讲解。并且容易理解和实现相应功能的代码。比如以下的图片:
k-means聚类
k-means的优点是速度非常快,因为我们真正要做的就是计算点和组中心之间的距离;计算量少!因此,它具有线性复杂性o(n)。
另一方面,k-means有两个缺点。首先,您必须先确定聚类的簇数量。理想情况下,对于一个聚类算法,我们希望它能帮我们解决这些问题,因为它的目的是从数据中获得一些洞察力。k-均值也从随机选择聚类中心开始,因此它可能在算法的不同运行中产生不同的聚类结果。因此,结果可能不可重复,缺乏一致性。
Mean-Shift聚类
Mean-shift聚类是一个基于滑窗的算法,尝试找到数据点密集的区域。它是一个基于质心的算法,也就是说他的目标是通过更新中心点候选者定位每个组或类的中心点,将中心点候选者更新为滑窗内点的均值。这些候选滑窗之后会在后处理阶段被过滤,来减少临近的重复点,最后形成了中心点的集合和他们对应的组。查看下面的说明图。
单滑窗的Mean-Shift聚类
下图展示了所有滑动窗口从端到端的整个过程。每个黑色的点都代表滑窗的质心,每个灰色的点都是数据点。
Mean-Shift聚类的全部过程
与K-means聚类不同的是,Mean-Shift不需要选择聚类的数量,因为mean-shift自动发现它。这是一个很大的优点。事实上聚类中心向着有最大密度的点收敛也是我们非常想要的,因为这很容易理解并且很适合于自然的数据驱动的场景。缺点是滑窗尺寸/半径“r“的选择需要仔细考虑。
基于密度的带噪声的空间聚类的应用(DBSCAN)
DBSCAN是一个基于密度的聚类算法,与mean-shift相似,但是有几个值得注意的优点。查看下面这个花哨的图片,我们开始吧!
DBSCAN笑脸聚类
相较于其他聚类算法,DBSCAN提出了一些很棒的优点。首先,它根本不需要预置集群的数量。它还将离群值认定为噪声,不像mean-shift中仅仅是将它们扔到一个集群里,甚至即使该数据点的差异性很大也这么做。另外,这个算法还可以很好的找到任意尺寸核任意形状的集群。
SBSCAN最大的缺点是当集群的密度变化时,它表现的不像其他算法那样好。这是因为当密度变化时,距离的阈值ε和用于确定邻居点的minPoints也将会随之改变。这个缺点也会发生在很高为的数据中,因为距离阈值ε变得很难被估计。
基于高斯混合模型(GMM)的期望最大化(EM)聚类
k-means的一个主要缺点是它简单地使用了集群中心的平均值。通过下面的图片,我们可以看到为什么这不是最好的方式。在左手边,人眼可以很明显地看到,有两个半径不同的圆形星团以相同的平均值为中心。k-means不能处理这个问题,因为不同簇的平均值非常接近。当簇不是圆形时,k均值也会失效,这也是将均值用作簇中心的后果。
K-means不适用的case
高斯混合模型(gmms)具有更好的灵活性比K-means。使用GMMs,我们需要假设数据点是高斯分布,相对于环形的数据而言,这个假设的严格程度与均值相比弱很多。这样的话,我们有两个参数来描述簇的形状:均值和标准差。以二维为例,意味簇可以是任何一种椭圆形(因为我们有两个标准差在x和y方向)。因此,每个高斯分布会被分配到单一的聚类簇。
为了在每个聚类簇中找到这两个高斯参数(e.g均值和标准差),我们将使用的优化算法称为expectation–maximization(EM)。请看下面的图片,以说明将高斯拟合聚类簇。然后,我们可以处理EM聚类过程使用gmms。
使用GMMs的EM聚类
使用GMMS有两个关键优势。首先,GMMS在簇协方差方面比K均值灵活得多;由于标准偏差参数的存在,簇可以呈现任何椭圆形状,而不局限于圆形。k均值实际上是GMM的一个特例,其中每个簇的所有维协方差都接近于0。其次,由于GMM使用概率,因此每个数据点可以有多个集群。因此,如果一个数据点位于两个重叠集群的中间,我们可以简单地定义它的类,方法是说它属于类1的X%,属于类2的Y%。即GMMS支持混合成员。
凝聚层次聚类
凝聚层次聚类算法实际上分为2类:自上而下或自下而上。自下而上算法在一开始将每个数据点当作一个单个集群对待,然后逐步的合并(或凝聚)成对的集群,直到所有的集群被合并到一个集群中,这个集群包含所有的点。自下而上层次聚类因此被叫做层次凝聚的聚类或者HAC。这个聚类的层次被表示为一棵树(或者树状图)。树根是唯一的集群,他聚集了所有的样本,叶子是只有一个样本的集群。在接着看算法步骤之前,请查看下面的图示说明。
结论
以上就是数据科学家最应该了解的5中聚类算法!我们将以一个很漂亮的可视化来作为结束,可视化展示了这些算法和一些其算法表现得多么出色,这要归功于“ScikitLearn”库!
长按链接点击打开或点击【数据科学中必须熟知的5种聚类算法】:
AI研习社每日更新精彩内容,观看更多精彩内容:雷锋网雷锋网雷锋网
盘点图像分类的窍门深度学习目标检测算法综述生成模型:基于单张图片找到物体位置注意力的动画解析(以机器翻译为例)
等你来译:
如何在神经NLP处理中引用语义结构(Python)用MaskR-CNN检测空闲车位高级DQNs:利用深度强化学习玩吃豆人游戏深度强化学习新趋势:谷歌如何把好奇心引入强化学习智能体