聚类(clustering):一种无指导的学习算法

       聚类是一种无监督的学习的结果,聚类的结果就是产生一组集合,集合中的对象与同集合中的对象彼此相似,与其他集合的对象相异。聚类算法是推荐给初学者的算法,因为该算法不仅十分简单,而且还足够灵活以面对大多数问题都能给出合理的结果。
       常用的聚类算法:

  • K均值聚类算法(K-mensclustering)是最经典的聚类算法
  • AP聚类(Affinity Propagation)
  • DBSCAN算法
K均值聚类算法

       K均值聚类是一种通用目的的算法,聚类的度量基于样本之间的几何距离(即在坐标平面中的距离)。集群是围绕在聚类中心的族群,而集群呈现出类球状并具有相似的大小。

  • 优点:K均值聚类是最流行的聚类算法,因为该算法足够快速、简单,并且如果你的预处理数据和特征工程十分有效,那么该聚类算法将拥有令人惊叹的灵活性。
  • 缺点:该算法需要指定集群的数量,而K值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是球状的,那么K均值聚类会得出一些比较差的集群。
  • Python实现:
  • R实现:
AP聚类

       AP聚类算法是一种相对较新的聚类算法,该聚类算法基于两个样本点之间的图形距离(graph distances)确定集群。采用该聚类方法的集群拥有更小的不相等的大小。

  • 优点:该算法不需要指出明确的集群数量(但是需要指定[sample preference]和[damping]等超参数)。
  • 缺点:AP聚类算法主要的缺点就是训练速度比较慢,并且需要大量内存,因此也就很难扩展到大数据集中。另外,该算法同样假定潜在的集群是类球状的。
  • Python实现:
  • R实现:
层次聚类:

       层次聚类是一种基于以下概念的聚类算法:
       1.最开始由一个数据点作为一个集群
       2.对于每个集群,基于相同的标准合并集群
       3.重复这一过程知道留下一个集群,因此就得到了积极群的层次结构

  • 优点:层次聚类最主要的优点是集群不再需要假设为类球形。另外其也可以扩展到大数据集。
  • 缺点:有点像 K 均值聚类,该算法需要设定集群的数量(即在算法完成后需要保留的层次)。
  • Python 实现:
  • R 实现:
DBSCAN:

       DBSCAN是一个基于密度的算法,它将样本点的密集区域组成一个集群,最近还有一项被称为HDBSCAN的新进展,它允许改变密度集群。

  • 优点:DBSCAN不需要假设集群为球状,并且它的性能是可扩展的。此外,它不需要每个点都奔分配到一个集群中,这降低了集群的异常数据。
  • 缺点:用户必须要调整[epsilon]和[min_sample]这两个定义了集群密度的超参数。DBSCAN这些超参数非常敏感。
  • Python实现:
  • R实现:

你可能感兴趣的:(算法)