无监督算法简介
就是依靠数据之间的相似度,形成数据的类别。(下图有些是网上扒的,如有侵权望告知,立删)
层次聚类
比如有7个数据点,A,B,C,D,E,F,G。我们采用数据的欧式距离作为相似度(距离越小越相似):
 
 将数据分别两两计算相似度:
 
 得到BC的距离最小,这样我们就得到一个新的集合或者说是类:(B,C)。这样我们下一次计算相似度时,只有6个元素了:A,(B,C),D,E,F,G。然后两两计算相似度,得到:
 
 当然,要提到的一点是,对于任意元素(如A)和集合(B,C)之间的距离度量,则取A分别和B,C的距离的均值(下面是几何均值):
 
 当然若是两个类(A,F)和(B,C)的距离,则取两两间距离的均值:
 
最后便可以形成如下聚类图(我随便画的):
 
 如果你的目标是分成3类,只需要拿一条横线截一下上面的图,让横线只穿过3条竖线即可。
K-Means
将数据分为k个簇
    
     
      
       
        {
       
       
        
         C
        
        
         1
        
       
       
        ,
       
       
        
         C
        
        
         2
        
       
       
        ,
       
       
        ⋯
       
       
        ,
       
       
        
         C
        
        
         k
        
       
       
        }
       
      
      
       \{C_1,C_2,⋯,C_k\}
      
     
    {C1,C2,⋯,Ck},每个簇有一个中心
    
     
      
       
        
         μ
        
        
         i
        
       
      
      
       \mu_i
      
     
    μi。
 
常用的相似度度量有欧几里得距离和余弦相似度。以下以距离为例:
均值漂移(Mean Shift)
漂移向量是给定中心点
    
     
      
       
        
         X
        
        
         c
        
       
      
      
       X_c
      
     
    Xc距离小于
    
     
      
       
        h
       
      
      
       h
      
     
    h的数据点集均值:
 
    
     
      
       
        
         M
        
        
         h
        
       
       
        =
       
       
        
         E
        
        
         
          
           x
          
          
           i
          
         
         
          ∈
         
         
          (
         
         
          D
         
         
          <
         
         
          h
         
         
          )
         
        
       
       
        [
       
       
        
         x
        
        
         i
        
       
       
        −
       
       
        
         x
        
        
         c
        
       
       
        ]
       
      
      
       M_h =E_{x_i∈ (D<h)}[x_i-x_c]
      
     
    Mh=Exi∈(D<h)[xi−xc]
 该向量表明了该范围内的数据实际中心与给定中心的偏差。然后进行中心位置更新(即漂移操作)
 
    
     
      
       
        
         x
        
        
         c
        
       
       
        ←
       
       
        
         x
        
        
         c
        
       
       
        +
       
       
        
         M
        
        
         h
        
       
      
      
       x_c ← x_c + M_h
      
     
    xc←xc+Mh 。
 重复进行迭代,直到收敛。
更多可参考:机器学习聚类算法之Mean Shift
DBSCAN密度聚类
基本概念
假定同一类别的样本,他们之间的紧密相连的。
 使用参数
    
     
      
       
        (
       
       
        ϵ
       
       
        ,
       
       
        M
       
       
        i
       
       
        n
       
       
        P
       
       
        t
       
       
        s
       
       
        )
       
      
      
       (ϵ, MinPts)
      
     
    (ϵ,MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了邻域中样本个数的阈值。
假设样本集是 D = ( x 1 , x 2 , . . . , x m ) D=(x_1,x_2,...,x_m) D=(x1,x2,...,xm),则对于 x j ∈ D x_j∈D xj∈D有:
下图中MinPts=5,则红色的点都是核心对象,黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,不在超球体内则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ϵ-邻域内所有的样本相互都是密度相连的。
 
算法思想
1、任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。
2、继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止,剩下的非核心对象则为噪声点。
更多参考:
 具有噪声的基于密度的聚类方法
 机器学习–聚类系列–DBSCAN算法(有图)










