机器学习聚类算法(理论)

Posted 酱懵静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习聚类算法(理论)相关的知识,希望对你有一定的参考价值。

聚类算法(理论)


目录



一、概论


聚类分析,即聚类(Clustering),是指在一大推数据中采用某种方式或准则来将一些具有相同或相似性质和特征的数据划分为一类。聚类是无监督学习的典型算法,相较于有监督学习,由于聚类针对的大多是无标签数据,因此对于最终构建的模型而言,在进行模型评估时会比较麻烦。同时,在对算法进行调参时也会因为这种不确定性而稍带困难。


1、聚类算法的分类

聚类算法的分类有:

  • 划分法
    划分法(Partitioning Methods),给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K小于N。而且这K个分组满足下列条件:
    (1)每一个分组至少包含一个数据纪录;
    (2)每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);

  • 层次法
    层次法(Hierarchical Methods),这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如,在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。

  • 密度算法
    基于密度的方法(Density-Based Methods),基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。

  • 图论聚类法
    图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。

  • 网格算法
    基于网格的方法(Grid-Based Methods),这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。
    代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法;

  • 模型算法
    基于模型的方法(Model-Based Methods),基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。
    通常有两种尝试方向:基于统计、基于神经网络。


2、欧氏空间的引入

世间万物,皆为混沌。为此,人类世界经历了原始社会、奴隶社会、封建社会、资本主义社会到共产主义社会,这是人类社会从低级到高级的发展过程。但从哲学的角度看来,这实际上是一种从无序到有序的过程。人类社会如此,数学亦是如此。
数字的无穷尽给它的使用带来了极大不便,为此,在一维空间建立了“数轴”,以将这些数字按序列在一条直线上,既便于比较也便于查找与定位,如:𝑥。一维空间最经典的用例,莫过于尺子:用以测量长度。但是地图的出现让人们陷入苦恼,要如何精准地定位一个人的位置呢?“坐标轴”似乎是一个可行的方案:通过在二维平面中,额外增加一条与一维空间中的数轴所垂直的纵向数轴,便能建立一个能海纳百川的空间,此时可用 (𝑥, 𝑦) 定位任意位置。二维空间最典型的用例,莫过于用于进行全球定位的经纬度。在建筑、设计类软件中,处理目标更多的是立体图形,此时,二维空间便显得余力不足。很自然地想到,可采取从一维到二维的相同提升方式,即添加一条与二维平面相垂直的数轴,这样一来就能构建一个涵盖三维空间全部位置的坐标轴,以达到从二维空间到三维空间的提升,此时可用 (𝑥, 𝑦, 𝑧) 定位任意位置。

现在让我们回忆下不同空间中与距离相关的一些定义:

  • 在一维空间,两个点 𝑥𝑎, 𝑥𝑏 之间的距离可以用 d i s t a n c e ( a , b ) = ( x a − x b ) 2 = ∣ x a − x b ∣ distance(a,b)=\\sqrt(x_a-x_b)^2=|x_a-x_b| distance(a,b)=(xaxb)2 =xaxb 来表示;
  • 在二维空间,两个点 𝐴(𝑥𝑎, 𝑦𝑎) , 𝐵(𝑥𝑏, 𝑦𝑏) 之间的距离可以用 d i s t a n c e ( a , b ) = ( x a − x b ) 2 + ( y a − y b ) 2 distance(a,b)=\\sqrt(x_a-x_b)^2+(y_a-y_b)^2 distance(a,b)=(xaxb)2+(yayb)2 来表示;
  • 在三维空间,两个点 𝐴(𝑥𝑎, 𝑦𝑎, 𝑧𝑎) , 𝐵(𝑥𝑏, 𝑦𝑏, 𝑧𝑏) 之间的距离可以用 d i s t a n c e ( a , b ) = ( x a − x b ) 2 + ( y a − y b ) 2 + ( z a − z b ) 2 distance(a,b)=\\sqrt(x_a-x_b)^2+(y_a-y_b)^2+(z_a-z_b)^2 distance(a,b)=(xaxb)2+(yayb)2+(zazb)2 来表示;

有关(内)积的定义:

  • 在一维空间,两数 𝑥𝑎, 𝑥𝑏 之积为 Mul(𝑎, 𝑏) = 𝑥𝑎𝑥𝑏
  • 在二维空间,两个点 𝐴(𝑥𝑎, 𝑦𝑎) , 𝐵(𝑥𝑏, 𝑦𝑏) 之间的(内)积可以用 Mul(𝐴, 𝐵) = 𝑥𝑎𝑥𝑏 + 𝑦𝑎𝑦𝑏来表示;
  • 在三维空间,两个点 𝐴(𝑥𝑎, 𝑦𝑎, 𝑧𝑎) , 𝐵(𝑥𝑏, 𝑦𝑏, 𝑧𝑏) 之间的(内)积可以用 Mul(𝐴, 𝐵) = 𝑥𝑎𝑥𝑏 + 𝑦𝑎𝑦𝑏 + 𝑧𝑎𝑧𝑏 来表示。

在二维及以上空间,基于两点 𝑋(𝑥1, 𝑥2, … , 𝑥𝑛) , 𝑌(𝑦1, 𝑦2, … , 𝑦𝑛) 可定义一个具有方向的指标,称其为向量,则可得到:
ξ ⃗ = a 1 , a 2 , … , a n = x 1 , x 2 , … , x n − y 1 , y 2 , … , y n = x 1 − y 1 , x 2 − y 2 , … , x n − y n \\vec\\xi = \\ a_1, a_2, … ,a_n \\ = \\ x_1, x_2, …, x_n \\ - \\ y_1, y_2, …, y_n \\ = \\ x_1 - y_1, x_2 - y_2, …, x_n - y_n \\ ξ =a1,a2,,an=x1,x2,,xny1,y2,,yn=x1y1,x2y2,,xnyn
对于高维空间,定义两向量的内积为: ξ ⃗ ⋅ η ⃗ = ∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + … + a n b n \\vec\\xi·\\vec\\eta=\\sum_i=1^na_ib_i=a_1b_1+a_2b_2+…+a_nb_n ξ η =i=1naibi=a1b1+a2b2++anbn 这个内积和两点之间的内积算法是一致的。
有时候,我们需要通过两个向量之间的夹角来判断与其相关的一些性质,为此定义了方向余弦,其定义为:
c o s θ = ξ ⃗ ⋅ η ⃗ ∣ ξ ⃗ ∣ ⋅ ∣ η ⃗ ∣ cos \\theta=\\frac\\vec\\xi·\\vec\\eta|\\vec\\xi|·|\\vec\\eta| cosθ=ξ η ξ机器学习--聚类系列--DBSCAN算法

数据科学家需要了解的5大聚类算法

推荐|数据科学家需要了解的5大聚类算法

聚类五种主要聚类算法

机器学习-聚类算法2

Python机器学习——DBSCAN聚类