优点:K 均值聚类是最流行的聚类算法,因为该算法足够快速、简单,并且如果你的预处理数据和特征工程十分有效,那么该聚类算法将拥有令人惊叹的灵活性。 缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。 Python 实现:#k-means R 实现:https://stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html 3.2 Affinity Propagation 聚类 AP 聚类算法是一种相对较新的聚类算法,该聚类算法基于两个样本点之间的图形距离(graph distances)确定集群。采用该聚类方法的集群拥有更小和不相等的大小。 优点:该算法不需要指出明确的集群数量(但是需要指定「sample preference」和「damping」等超参数)。 缺点:AP 聚类算法主要的缺点就是训练速度比较慢,并需要大量内存,因此也就很难扩展到大数据集中。另外,该算法同样假定潜在的集群是类球状的。 Python 实现:#affinity-propagation R 实现:https://cran.r-project.org/web/packages/apcluster/index.html 3.3 层次聚类(Hierarchical / Agglomerative) 层次聚类是一系列基于以下概念的聚类算法: 最开始由一个数据点作为一个集群 对于每个集群,基于相同的标准合并集群 重复这一过程直到只留下一个集群,因此就得到了集群的层次结构。
优点:层次聚类最主要的优点是集群不再需要假设为类球形。另外其也可以扩展到大数据集。 缺点:有点像 K 均值聚类,该算法需要设定集群的数量(即在算法完成后需要保留的层次)。 Python 实现:#hierarchical-clustering R 实现:https://stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html 3.4 DBSCAN DBSCAN 是一个基于密度的算法,它将样本点的密集区域组成一个集群。最近还有一项被称为 HDBSCAN 的新进展,它允许改变密度集群。 优点:DBSCAN 不需要假设集群为球状,并且它的性能是可扩展的。此外,它不需要每个点都被分配到一个集群中,这降低了集群的异常数据。 缺点:用户必须要调整「epsilon」和「min_sample」这两个定义了集群密度的超参数。DBSCAN 对这些超参数非常敏感。 Python 实现:#dbscan R 实现:https://cran.r-project.org/web/packages/dbscan/index.html 结语 本文从回归问题、分类问题和聚类问题三个角度下初步了解了各个算法的优缺点,也基本了解了那些算法到底是什么。但以上每一个算法都有更多的概念和细节没有展现出来,我们不能知道它们的损失函数是什么、训练目标是什么、权重更新策略是什么等等一些列问题。因此我们希望能从机器之心历来文章中搜寻一些,为有兴趣的读者提供这些算法的具体细节。 线性回归:
决策树(集成方法):
支持向量机: 深度学习:
聚类算法: 最后,不论是基本概念还是具体算法,最重要的就是实践。不实践这些算法就永远不能发现哪些地方没有掌握,因此希望本文能有助于各位读者实践自己的算法。 原文地址:https://elitedatascience.com/machine-learning-algorithms#regression 读者福利:即日起至 GMIS 2017 大会前一天,读者在头条文章下留言,机器之心会在次日选出最专业或最有见解的一条评论赠送 GMIS 2017 双日票一张! (责任编辑:本港台直播) |