聚类算法一览

聚类是机器学习中一种重要的 <font color=red>无监督算法</font>,它能够将数据点归结为一系列特定的组合。理论上归为一类的数据点具备相同的特性,而不一样类别的数据点则具备各不相同的属性。在数据科学中聚类会从数据中发掘出不少分析和理解的视角,让咱们更深刻的把握数据资源的价值、并据此指导生产生活。git

基于不一样的学习策略,聚类算法可分为多种类型: 聚类算法类型github

K均值算法(K-means)

k-means算法是一种简单的迭代型聚类算法,采用距离做为类似性指标,从而发现给定数据集中的K个类,且每一个类的中心是根据类中全部值的均值获得,每一个类用聚类中心来描述。 K均值聚类的基本思想是,经过迭代方式寻找K个簇的一种划分方案,使得聚类结果对应的代价函数最小。其代价函数能够定义为各个样本距离所属簇中心点的偏差平方和: $$ J(c,\mu) = \sum_{i=1}^M {||x_i- \mu_{c_i}||}^2 $$ 其中$x_i$表明第$i$个样本,$c_i$是$x_i$所属于的簇,$\mu_{c_i}$表明簇对应的中心点,$M$是样本总数。算法

算法流程

K-means是一个反复迭代的过程,算法分为四个步骤: 1) 选取数据空间中的K个对象做为初始中心,每一个对象表明一个聚类中心; 2) 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最类似)所对应的类; 3) 更新聚类中心:将每一个类别中全部对象所对应的均值做为该类别的聚类中心,计算目标函数的值; 4) 判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。框架

K-means算法流程

优缺点

  • K均值算法的优势有:机器学习

    • 相对可伸缩和高效,计算复杂度是O(NKt)接近于线性,其中N是数据数目,K是聚类簇数,t是迭代轮数。。
    • 能够灵活地设置约束条件,经过约束条件的多少能够调节模型对未知数据的适应度和对已知数据的拟合程度。
  • K均值算法的缺点有:函数

    • 容易受初值和离群点的影响,每次结果不稳定,须要人工预先肯定初始K值
    • 结果一般不是全局最优而是局部最优
    • 没法很好的解决数据簇分布差异比较大的状况
    • 样本点只能划分到单一的类中

调优

* 数据归一化和离散点处理
* 合理选择K值(手肘法(拐点))
* 采用核函数

tensorflow版代码见:github学习

高斯混合模型(GMM)

高斯混合模型(GMM)的核心思想是,假设数据能够看做从多个高斯分布中生成出来的。在该假设下,咱们须要寻找每一个单独的分模型的均值、方差以及权重。采用EM算法框架来求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使总体函数变成凸优化函数,求导获得最值,而后利用最优参数更新被固定的变量,进入下一循环。具体到高斯混合模型的求解,EM算法的迭代过程以下: 首先,初始随机选择各参数的值。而后,重复下面两步,直到收敛: (1)E步骤,根据当前参数,计算每一个点由分模型生成的几率 (2)M步骤,使用E步骤估计出的几率,来改进每一个分模型的均值,方差和权重。优化

高斯混合模型(GMM)

高斯混合模型与K均值算法相同点: 1.都是可用于聚类的算法 2.都须要指定K值 3.都是使用EM算法来求解 4.都每每只能收敛于局部最优url

不一样点: 1.混合高斯模型能够给出一个样本属于某类的几率是多少 2.不单单能够用于聚类,还能够用于几率密度的估计 3.能够用于生成新的样本点spa

DBSCAN密度聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具备噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些通常只适用于凸样本集的聚类相比,DBSCAN既能够适用于凸样本集,也能够适用于非凸样本集。 DBSCAN是一种基于密度的聚类算法,这类密度聚类算法通常假定类别能够经过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处必定有同类别的样本存在。 经过将紧密相连的样本划为一类,这样就获得了一个聚类类别。经过将全部各组紧密相连的样本划为各个不一样的类别,则咱们就获得了最终的全部聚类类别结果。 DBSCAN算法将数据点分为三类:   1.核心点:在半径Eps内含有超过MinPts数目的点。   2.边界点:在半径Eps内点的数量小于MinPts,可是落在核心点的邻域内的点。   3.噪音点:既不是核心点也不是边界点的点。

算法流程

1.将全部点标记为核心点、边界点或噪声点; 2.删除噪声点; 3.为距离在Eps以内的全部核心点之间赋予一条边; 4.每组连通的核心点造成一个簇; 5.将每一个边界点指派到一个与之关联的核心点的簇中(哪个核心点的半径范围以内)。 DBSCAN密度聚类算法

相关文章
相关标签/搜索