六种常见聚类算法

聚类原则:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。逐次计算各簇中心的值为新的中心值,迭代更新,直至簇中心位置不再改变或者达到最大迭代次数。

Kmeans的目标函数

定义为:各簇成员到其簇首的距离的平方和最小,如下所示

式中,C为簇首(聚类中心)集合,共有K个簇首。计算目标函数梯度,令梯度为0,计算簇首C,

式中l(x)表示簇成员个数。通过迭代优化目标函数来计算最佳参数C。由上式得,在每次迭代中需更新聚类中心为每个簇的簇心即簇成员的均值。

算法流程:

优点:

速度快,简单

缺点:

聚类原则:聚类距离簇边界最近的点

核心点:核心点的半径范围内的样本个数≥最少点数

边界点:边界点的半径范围内的样本个数小于最少点数大于0

噪声点:噪声点的半径范围的样本个数为0

能够识别任意形状的样本.该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。

需指定最少点个数,半径(或自动计算半径)

是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高。通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

简单说,谱聚类其实就是使用了一种映射方法,将原有数据映射到新的数据空间,使得原数据中空间位置接近的样本在映射后更加接近,这种映射称为拉普拉斯映射。注意:步骤4中是选取最小的k个特征值对应特征向量,那么问题来了,为什么要选取最小特征值呢?特征值有什么物理意义呢?

对于一个方阵(L为对称矩阵也是方阵且是半正定矩阵),可以称之为变换矩阵,当它叉乘某一个向量时,其物理意义为对该向量作旋转和缩放的变换,即将原有向量所在的空间映射到一个新的空间。那么,缩放尺度如何度量?可以用变换矩阵的特征值来度量,如下所示A为变换矩阵,向量α为A的特征向量(对于特征向量,对其变换时,只做缩放变换,其向量方向不变,更多详细内容见看图就懂:线性代数之特征值分解与奇异值分解),λ为特征值,I为单位向量,向量α左乘A等于对特征向量缩放λ倍。

特征值在物理意义上可以表示为缩放倍数,特征值越大,对应的特征向量放大倍数越大,而特征向量越大,对应的样本点映射后在空间位置上也更分散,而谱聚类或者拉普拉斯特征映射的目标就是将原本比较接近的点在映射后更加接近,使得属于不同簇的样本的可分离性变强,所以拉普拉斯特征映射自然要选择小特征值对应的空间,这样也就实现了原数据中空间位置接近的样本在映射后更加接近。如下图是原始特征空间与拉普拉斯特映射后的样本空间(2d、3d显示)的聚类结果

经过拉普拉斯映射后样本的可分离性比较好,易于聚类。于此相对的是,PCA降维选用的降序特征值即选取最大的k个特征值对应的特征向量,因为PCA的目的是对原数据作旋转变换,将原数据映射到特征基(关于特征基概念见看图就懂:线性代数之特征值分解与奇异值分解),投影到特征基方向上的样本相对比较分散,如下图所示,二维原数据旋转到二维特征基上和降到1维效果图

总之,特征值越大对应的向量空间方差越大,即向量方向上的数据越分散。降维数据肯定会丢失一部分信息,PCA适用于处理高维数据,可以在尽可能保留更多信息的同时对高维数据降维处理,如何保留更多数据信息呢?某种意义上,数据分布越分散(方差)或者说越混乱(熵),能得到的信息越多,PCA通过将数据映射到特征基上(特征基不止一个),然后从中选取k个方差最大的特征基(k个最大特征值对应的特征向量)组成新的特征空间,从而实现降维+保留大部分信息效果。

设有原数据X,为m行n列数据、m个样本n个特征,k为维度个数:

谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。

谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好

如果最终聚类的维度非常高,则由于降维的幅度不够,算法的运行速度和最终聚类效果均不好

聚类效果依赖于相似度矩阵(权重矩阵/邻接矩阵),不同的相似度矩阵得到的最终聚类效果可能差别很大

需指定聚类个数,高斯参数。

高斯混合混合模型(GMM)是一种概率生成模型,模型通过学习先验分布后推导后验分布来实现聚类。当我们做聚类任务的时候,可以根据距离最近原则,将样本聚类到距离其最近的聚类中心,如k-means算法,或者将样本聚类到距离某个簇边缘最近的簇,如DBSCAN算法,而GMM是假设样本每个类的特征分布遵循高斯分布,即整个数据集可由不同参数的高斯分布线性组合来描述,GMM算法可以计算出每个样本属于各个簇的概率值并将其聚类到概率值最大的簇。

GMM是以假设数据各个类别的特征分布是高斯分布为基础,所以首要步骤就是先得到各个类别的概率分布密度函数参数,对于一元变量,需要计算各个类别的均值和期望,而对于多元变量,则需要计算均值和协方差矩阵。有如下数据集X,共有m个样本,n项特征,k个类别

高斯概率分布密度函数公式如下:

一元变量:n=1

多元变量:n>1

现有如下数据集,如何使用GMM聚类?

在学习GMM聚类算法前,先从大学概率论课本上的一个例子入手。

例如:投掷一颗骰子,实验的样本空间为:S={1,2,3,4,5,6}。

存在以下事件

证明过程如下:

则事件X={投掷一个骰子出现i点}的概率p(X)为

就是类别,对应y。如下所示:

p(X)是训练集样本出现的概率,公式如下:

GMM首先需要计算每个类别的分布函数的参数,如何估计参数呢?可以采用极大似然估计方法。

极大似然估计,就是利用已知的样本信息,反推最具有可能(最大概率)导致这些样本出现的模型参数值。换句话说,极大似然估计提供了一种通过给定观察数据来估计模型参数的方法,即:模型已定,参数未知。可以这样理解,既然事情(样本)已经发生了,为什么不让这个结果出现的可能性最大呢?这也就是极大似然估计核心。

通过极大似然估计方法来使样本出现的概率p(X)最大从而得到分布函数参数,这样我们可以得到代价函数

由于连乘可能会导致下溢,所以需要取对数。对数函数是一个严格递增的函数,取对数后不会改变数据的相对关系,即对数化后,我们仍然可以获得具有相同临界点的最优化函数,代价函数如下所示

已知多元变量的高斯分布公式如下

可以得到

综上,GMM代价函数的最终公式如下

通过求解代价函数,就可以得到各个类别的高斯分布函数参数,进而能计算样本属于某个类别的概率,从而实现聚类,公式如下

以上过程其实就是一个建模过程,建模过程包括如下

在得到代价函数后,我们还要确定这个代价函数是否具有凸性,因为凸函数有一个好性质,若代价函数是凸函数,则其局部最优解也是全局最优解。若无法得到凸代价函数,则尝试更换模型或者使用迭代算法来逼近全局最优解。

EM(期望最大)算法是一个迭代算法,其思想就是多次迭代来估计参数,直到算法收敛。EM算法就是一个迭代逼近过程,若目标函数为非凸函数,则EM算法不能保证收敛至全局最优解,且EM算法的求解结果与初值的选择有较大关系,该算法对初值敏感。

EM算法求解参数思路可以将其理解为对两个未知变量的方程求解。首先固定其中一个未知数,求另一个未知数的偏导数,之后再反过来固定后者,求前者的偏导数,反复迭代直到目标函数值不变、收敛。EM算法就是相互迭代,求出一个稳定值,用于在无法直接找到参数的情况下寻找模型的最大似然估计(MLE)。它包括两个步骤:期望步骤和最大化步骤。在聚类问题中,步骤如下

具体步骤如下

3、重复1、2步骤,直到算法收敛。

关于均值μ:

关于协方差矩阵如何计算:给定如下训练集X:m*2,假设有k个类别,则

GMM假设生成数据的是一种混合的高斯分布,为模型找到最大似然估计。与将数据点硬分配到聚类的K-means方法(假设围绕质心的数据呈圆形分布)相比,它使用了将数据点软分配到聚类的方法(即概率性,因此更好)。速度:它是混合模型学习算法中的最快算法;无偏差性:由于此算法仅最大化可能性,因此不会使均值趋于零,也不会使聚类大小具有可能适用或不适用的特定结构。(A)通过使用软分配捕获属于不同聚类的数据点的不确定性,(B)对圆形聚类没有偏见。即使是非线性数据分布,它也能很好地工作,具有较强的鲁棒性

该算法也叫做均值漂移,在目标追踪中应用广泛。本身其实是一种基于密度的聚类算法。

1、算法思路:

主要思路是:计算某一点A与其周围半径R内的向量距离的平均值M即迁移向量,更新该点下一步的迁移位置(A=M+A)。当该点不再移动时(norm(Mnew-Mold)

2、如何计算迁移向量M

step1:随机选择一点为初始簇心点(不完全随机:不能把噪声点/离群点作为初始簇心,以防乒乓效应)

step2:根据初始半径R,选择以R为半径的圆的范围内的点分别与簇心点的向量的平均值作为迁移向量M

3、如何迁移

根据迁移向量M,更新簇心

4、如何收敛

迁移向量M前后变化量小于阈值且样本点(除了离群点)均已归类,则停止运行

5、如何成簇

norm(Mnew-Mold)>TH时:判断norm(M)TH:说明当前簇未成形,需要继续迁移norm(Mnew-Mold)

当迁移向量长度接近0时,需要扩大簇半径即扩大搜索范围,看看扩大范围后,簇内点是否增加,即迁移向量增量是否大于阈值Th,若小于阈值,则没必要继续迁移(当前簇已稳定),反之继续进行迁移计算。

关于调整簇半径策略:根据当前簇成员调整簇半径

7、扩展

计算均值的迁移向量-->计算核函数形式的迁移向量

与kmeans相比,均值迁移无需指定簇个数,自动发现簇个数,需指定初始半径(带宽)(或者算法自动计算)。算法相对k-means分类结果比较稳定

算法分类结果易受噪声点(离群点)干扰,若初始簇心点为离群点,可能会发生乒乓效应,算法无限循环,需数据预处理(过滤噪声点)或者改变距离计算方法。

适合聚类球状类簇,不能发现一些混合度较高,非球状类簇

计算复杂度高

R半径非自适应的menshift聚类算法聚类结果取决于半径(带宽)的设置,半径太小,收敛太慢,簇类个数过多;半径太大,一些簇类可能会丢失。

训练数据X,

例如有下数据

各个样本点之间的距离:

1、每个样本都视为一个簇

2、计算各个样本点之间的距离(相似度),生成m*m的距离矩阵dis

3、寻找最近的两个簇(寻找矩阵dis中的非0元素中的最小值对应的索引,i1,i2),将它们归为一类(计算两个点/簇的均值means,如何归为同一类?-->X[[i1,i2],:]=menas),本算法中衡量距离方法:计算样本点到簇心的距离->average

a=copy.deepcopy(X)whilelen(set(a[:,0]))>1:#whilelen(set(a[:,0]))>ki,j=np.unravel_index(np.argmin(dis),dis.shape)#获取多维矩阵xx值对应的索引listIJ=findRow(a,i1,i2)#在X中寻找与a[i1,:],a[i2,:]样本点相同的所有样本点对应的索引means=np.mean(X[listIJ,:],axis=0)#计算最近的样本点/簇的均值a[listIJ,:]=means#赋予相同的均值即视为归为同一类Tree[iter]=copy.deepcopy(a)#生成聚类树#聚类树:每一层都是一个分类结果,簇数量由多到少。优点:

一次性得到聚类树,每一层均为分类结果。算法相对k-means分类结果比较稳定。

相似度规则(距离衡量)容易定义

可以发现类别的层次关系

计算复杂度高,不适合数据量大的

由于类聚类之间的距离(相似度)衡量方法不同,算法分类结果易受噪声点(离群点)干扰,需数据预处理(过滤噪声点)或者改变距离计算方法。

THE END
1.大数据的算法有哪些2.聚类算法:聚类算法用于将数据集划分为不同的群组,常见的聚类算法有K均值算法、层次聚类算法和DBSCAN算法等。 3. 关联规则挖掘:关联规则挖掘算法用于发现数据集中的关联关系,常见的关联规则挖掘算法有Apriori算法和FP-growth算法等。 4.推荐系统算法:推荐系统算法用于根据用户的历史行为和偏好,向用户推荐个性化的信息,https://wenku.baidu.com/view/ccc4ae9ff9d6195f312b3169a45177232f60e4e7.html
2.算法工程师必知必会10大基础算法!快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。 事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被https://mp.weixin.qq.com/s?__biz=MzAxMzA2MDYxMw==&mid=2651574486&idx=2&sn=147bf60dcce6aea92a70778ed6f90dea&chksm=80572fbcb720a6aadabcdb78d6fd1b608228d05d33a8e75c419b3ce128111c545992b7eed228&scene=27
3.数据挖掘的常见算法有哪些?数据挖掘的常见算法有哪些? 数据挖掘是一种通过从大量数据中提取知识和信息的方法,以支持业务决策、市场分析和科学研究等领域。在数据挖掘过程中,算法是最重要的组成部分之一。以下是常见的数据挖掘算法。 1.分类算法 分类算法是一类用于将数据样本分为不同类别的算法。这些算法通常使用监督学习方法,其中模型基于已标记https://www.cda.cn/bigdata/202782.html
4.常见的经典算法有哪些Python常见的经典算法有哪些 在计算机科学领域,有一些经典算法被广泛应用于各种问题的解决。这些算法经过长期的研究和实践,被证明是高效且有效的。本文将介绍几个常见的经典算法,并提供相应的Python源代码。 一、冒泡排序算法(Bubble Sort) 冒泡排序是一种简单但效率较低的排序算法。它的基本思想是通过相邻元素之间的比较和交https://download.csdn.net/blog/column/12405713/133216600
5.什么是哈希算法?常见的哈希算法有哪些?区块链技术区块链这篇文章主要介绍了什么是哈希算法?常见的哈希算法有哪些?的相关资料,需要的朋友可以参考下本文详细内容介绍 哈希算法是一种数学函数或者算法,它可以将任意长度的数据(称为“消息”)转换为固定长度的字符串(称为“哈希值”或者简称“哈希”)。哈希算法的作用是将数据进行一次性的加密,从而生成一个唯一且不可逆的标识https://www.jb51.net/blockchain/891421.html
6.什么是哈希算法?常见的哈希算法有哪些?常见的哈希算法有哪些? 币界网报道: 哈希算法,也被称为散列算法,是一种将输入数据转换为固定长度的输出值的算法。它通过对输入数据进行一系列复杂的计算和操作,生成一个唯一的哈希值。哈希算法的最大特点是快速和高效,能够快速地确定数据是否被篡改或者检索数据。https://www.528btc.com/college/1695140495130670.html
7.机器学习常见算法类型都有哪些算法是程序员在学习软件编程开发技术的时候需要重点掌握的一个编程开发技术知识,而今天我们就通过案例分析来了解一下,机器学习常见算法类型都有哪些。 1.分类算法 这是一种监督学习方法。有很多算法帮助我们解决分类问题,比如K近邻、决策树、朴素贝叶斯、贝叶斯网络、逻辑回归、SVM等算法。人工神经网络和深度学习也往往用https://www.douban.com/note/782408490/
8.常见的排序算法有哪些?如何实现这些算法?常见的排序算法有哪些?如何实现这些算法? 1.背景介绍 在计算机科学与数学中,排序算法(Sorting algorithm)是一种能将一串资料依照特定排序方式进行排列的一种算法。 最常用到的排序方式是数值顺序以及字典顺序。 有效的排序算法在一些算法(例如搜寻算法与合并算法)中是重要的, 如此这些算法才能得到正确解答。 排序算法也https://www.pianshen.com/article/7707638722/
9.加密算法可以归结为哪几类常见的加密算法有哪些对称加密是指加密和解密使用同一个密钥的加密方式,其中最常见的算法包括DES、3DES、AES等。 2.非对称加密 非对称加密是指加密和解密使用不同密钥的加密方式,常规算法包括RSA、DSA、ECC等。 3.哈希函数 哈希函数是指将任意长度的消息压缩成固定长度摘要的函数,常见算法有MD5、SHA-1、SHA-256等。 https://www.eefocus.com/e/528368.html
10.互联网公司最常见的面试算法题有哪些?? 目录 收起 算法考察趋势 高频题 对于数组,可能会重点考察以下题目:对于链表,可能会重点考察以下https://www.zhihu.com/question/24964987/answer/1848770106
11.互联网公司最常见的面试算法题有哪些?来自爱可可《互联网公司最常见的面试算法题有哪些? - 知乎》 O互联网公司最常见的面试算法题有哪些? - 知乎 ?收藏 127 30 ?41 评论 o p 同时转发到我的微博 按热度 按时间 正在加载,请稍候互联网科技博主 3 公司 北京邮电大学 ü 简介: 北邮PRIS模式识别实验室陈老师 商务合作https://weibo.com/1402400261/EAC0M6nE1
12.常用的加密方式有哪些?采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。 对称加密的优缺点:优点是算法公开、计算量小、加密速度快、加密效率高,安全、可认证;缺点是BS网络传输关系,密钥过多难维护https://nic.hnuu.edu.cn/10043/2023/0029457.html
13.常见的推荐算法有哪些及它们的优缺点。腾讯云开发者社区常见的推荐算法有哪些及它们的优缺点。 大家好,我是贤弟! 常见的推荐算法包括以下几种: 一、基于内容的推荐算法 基于内容的推荐算法是将用户的历史偏好和物品的属性进行比较,从而为用户推荐相似的物品。算法主要思想是在物品的内容描述中提取特征向量,并计算不同物品之间的相似度,然后推荐与用户过去喜欢的物品相似的https://cloud.tencent.com/developer/news/1278222
14.关于查找有哪些常见的算法?查找算法有两种:一种只作查找操作,我们称之为静态查找。一种在查找过程种同时插入或删除数据元素,我们称之为动态查找。 静态查找 它的功能如下: 查询某个“特定的”数据元素是否在查找表中; 检索某个“特定的”数据元素和各种属性。 常见的查找方法有:顺序查找、折半查找、插值查找、斐波那契查找等,容我细细讲来https://www.jianshu.com/p/6c1afbeb9b96