08无监督学习——聚类

news/2024/5/20 6:03:09 标签: 聚类, 机器学习

1.什么是聚类任务?

类别:无监督学习
目的:通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。

1.1K均值聚类

步骤:

  • 随机选取样本作为初始均值向量(初始值:k的值【即几个簇】)
  • 分别计算每个样本点到初始均值向量的距离,距离哪个点最近就属于哪个簇
  • 每个簇重新计算中心点,重复第二步直到收敛

距离计算:
距离度量/非距离度量:若它是一个距离度量则应该满足以下性质:

  • 非负性:dist(x,y)>=0
  • 同一性:dist(x,y)=0,当且仅当x=y
  • 对称性:dist(x,y) = dist(y,x)
  • 直递性:dist(x,z) <= dist(x,y)+dist(y,z)

1.1.1 曼哈顿距离

d i s t m a n ( x i , x j ) = ∥ x i − x j ∥ 1 = ∑ μ = 1 n ∣ x i μ − x j μ ∣ {\rm{dis}}{{\rm{t}}_{man}}({x_i},{x_j}) = {\left\| {{x_i} - {x_j}} \right\|_1} = \sum\limits_{\mu = 1}^n {\left| {{x_{i\mu }} - {x_{j\mu }}} \right|} distman(xi,xj)=xixj1=μ=1nxiμxjμ

1.1.2欧氏距离

dist ⁡ e d ( x i , x j ) = ∥ x i − x j ∥ 2 = ∑ u = 1 n ∣ x i u − x j u ∣ 2 \operatorname{dist}_{\mathrm{ed}}\left(\boldsymbol{x}_i, \boldsymbol{x}_j\right)=\left\|\boldsymbol{x}_i-\boldsymbol{x}_j\right\|_2=\sqrt{\sum_{u=1}^n\left|x_{i u}-x_{j u}\right|^2} disted(xi,xj)=xixj2=u=1nxiuxju2

1.1.3 切比雪夫距离

切比雪夫距离定义为两个向量在任意坐标维度上的最大差值。换句话说,它就是沿着一个轴的最大距离。切比雪夫距离通常被称为棋盘距离,因为国际象棋的国王从一个方格到另一个方格的最小步数等于切比雪夫距离。

D ( x , y ) = max ⁡ i ( ∣ x i − y i ∣ ) D(x,y) = \mathop {\max }\limits_i (|{x_i} - {y_i}|) D(x,y)=imax(xiyi)

切比雪夫距离通常用于特定的用例,这使得它很难像欧氏距离或余弦相似度那样作为通用的距离度量。因此,在确定适合用例时才使用它。

1.1.4 闵式距离

给定样本 x i = ( x i 1 ; x i 2 ; … ; x i n ) {x_i} = ({x_{i1}};{x_{i2}}; \ldots ;{x_{in}}) xi=(xi1;xi2;;xin) x j = ( x j 1 ; x j 2 ; … ; x j n ) {x_j} = ({x_{j1}};{x_{j2}}; \ldots ;{x_{jn}}) xj=(xj1;xj2;;xjn),最常用的就是闵可夫斯基距离。

d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dis{t_{mk}}({x_i},{x_j}) = {(\sum\limits_{u = 1}^n {{{\left| {{x_{iu}} - {x_{ju}}} \right|}^p}} )^{{1 \over p}}} distmk(xi,xj)=(u=1nxiuxjup)p1

  • p=1时,闵可夫斯基距离即为曼哈顿距离( Manhattan distance )
  • p=2时,闵可夫斯基距离即为欧式距离( Euclidean distance )
  • p= ∞ \infty 时,闵可夫斯基距离即为切比雪夫距离(Chebyshev Distance )

1.1.5 余弦相似度(Cosine Similarity )

余弦相似度经常被用作抵消高维欧式距离问题。余弦相似度是指两个向量夹角的余弦。

两个方向完全相同的向量的余弦相似度为1,而两个彼此相对的向量的余弦相似度为- 1。注意,它们的大小并不重要,因为这是在方向上的度量。

D ( x , y ) = cos ⁡ ( θ ) = x ⋅ y ∥ x ∥ ∥ y ∥ D(x,y) = \cos (\theta ) = {{x \cdot y} \over {\left\| x \right\|\left\| y \right\|}} D(x,y)=cos(θ)=xyxy

用例:当我们对高维数据向量的大小不关注时,可以使用余弦相似度。列如,对于文本分析,当数据以单词计数表示时,经常使用此度量。例如,当一个单词在一个文档中比另一个单词更频繁出现时,这并不一定意味着文档与该单词更相关。可能是文件长度不均匀或者计数的重要性不太重要。我们最好使用忽略幅度的余弦相似度。

1.1.6 汉明距离(Hamming Distance )

汉明距离是两个向量之间不同值的个数。它通常用于比较两个相同长度的二进制字符串。它还可以用于字符串,通过计算不同字符的数量来比较它们之间的相似程度。

缺点:当两个向量长度不相等时,汉明距离使用起来很麻烦。

用例∶典型的用例包括数据通过计算机网络传输时的错误纠正/检测。它可以用来确定二进制字中失真的数目,作为估计误差的一种方法。此外,你还可以使用汉明距离来度量分类变量之间的距离。

1.2密度聚类(Density-based Spatial Clusteringof Applications with Noise )

基于密度的聚类,此类算法假设聚类结构能通过样本分布的紧密程度确定

密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果

1.3层次聚类(hierarchicalclustering)

试图在不同层次对数据集进行划分,从而形成树形的聚类结构.数据集的划分可采用"自底向上"的聚合策略,也可采用"自顶向下"的拆分策略.

AGNES是一种采用自底向上聚合策略的层次聚类算法.它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。

AGNES算法步骤:
( 1)初始化,每个样本当做一个簇
( 2)计算任意两簇距离,找出距离最近的两个簇,合并这两簇
(3)重复步骤2…
直到,最远两簇距离超过阈值,或者簇的个数达到指定值,终止算法

DIANA算法步骤:
( 1)初始化,所有样本集中归为一个簇
( 2)在同一个簇中,计算任意两个样本之间的距离,找到距离最远的两个样本点a,b,
将a,b作为两个簇的中心;
( 3)计算原来簇中剩余样本点距离a , b 的距离,距离哪个中心近,分配到哪个簇中
( 4)重复步骤2、3…
直到,最远两簇距离不足阈值,或者簇的个数达到指定值,终止算法

层次聚类(Hierarchical Clustering )在生物信息学中的应用

层次聚类是一种比较实用的聚类方法,应用于不同领域的数据分析算法中。
在生物医学信息学领域,层次聚类方法常常用于蛋白质序列数据聚类和基因表达数据的聚类。结构相似的蛋白质,功能也相似,通过聚类将相似功能的蛋白质聚为一类,为研究蛋白质的功能提供帮助。基因表达数据聚类就是将具有相似表达谱的基因聚为一类,称为共表达基因,根据基因的共表达现象推断这些基因的生物学功能,从而对新的基因功能进行注释,对基因的生物学功能研究具有重要意义。

1.4 高斯混合聚类模型

已知样本集D= D = { x 1 , x 2 , . . . , x m } D = \{ {x_1},{x_2},...,{x_m}\} D={x1,x2,...,xm},要将这些样本聚成k类,我们认为样本服从混合高斯分布:

p M ( x ) = ∑ i = 1 k α i ⋅ p ( x ∣ μ i , Σ i ) {p_M}(x) = \sum\limits_{i = 1}^k {{\alpha _i}} \cdot p(x|{\mu _i},{\Sigma _i}) pM(x)=i=1kαip(xμi,Σi)

第一步初始化高斯混合分布的模型参数 α i {{\alpha _i}} αi, μ i {\mu _i} μi, Σ i {\Sigma _i} Σi

第二步计算x 由各混合成分生成的后验概率,即观测数据 x j {x_j} xj由第i个分模型生成的概率 p ( z j = i ∣ x j ) p({z_j} = i|{x_j}) p(zj=ixj),并记为 γ j i {\gamma _{ji}} γji

γ j i = a i ⋅ p ( x j ∣ μ i , Σ i ) ∑ i = 1 k a i p ( x j ∣ μ i , Σ i ) {\gamma _{ji}} = {{{a_i} \cdot p({x_j}|{\mu _i},{\Sigma _i})} \over {\sum\limits_{i = 1}^k {{a_i}p({x_j}|{\mu _i},{\Sigma _i})} }} γji=i=1kaip(xjμi,Σi)aip(xjμi,Σi)

第三步计算新的横型参数:

μ i ′ = ∑ j = 1 m γ j i x j ∑ j = 1 m γ j i Σ i ′ = ∑ j = 1 m γ j i ( x j − μ i ′ ) ( x j − μ i ′ ) T ∑ j = 1 m γ j i α i ′ = ∑ j = 1 m γ j i m \begin{aligned} \boldsymbol{\mu}_i^{\prime} & =\frac{\sum_{j=1}^m \gamma_{j i} x_j}{\sum_{j=1}^m \gamma_{j i}} \\ \boldsymbol{\Sigma}_i^{\prime} & =\frac{\sum_{j=1}^m \gamma_{j i}\left(x_j-\mu_i^{\prime}\right)\left(x_j-\mu_i^{\prime}\right)^{\mathrm{T}}}{\sum_{j=1}^m \gamma_{j i}} \\ \alpha_i^{\prime} & =\frac{\sum_{j=1}^m \gamma_{j i}}{m} \end{aligned} μiΣiαi=j=1mγjij=1mγjixj=j=1mγjij=1mγji(xjμi)(xjμi)T=mj=1mγji

第四步按照新的模型参数重复2,3步,直到满足停止条件

第五步将每个样本按照入 λ j = arg ⁡ max ⁡ i ∈ ( 1 , 2 , . . . , k ) γ j i {\lambda _j} = \mathop {\arg \max }\limits_{i \in (1,2,...,k)} {\gamma _{ji}} λj=i(1,2,...,k)argmaxγji, 划入对应的簇。即对每个样本来自哪个分模型的概率大就划入哪个分模型的簇中,最终就得到了k个聚类

总结:

  • 分层聚类擅长于发现数据中的嵌入式结构。
  • 基于密度的方法在寻找具有相似密度的未知数量的聚类方面表现优异。
  • K-means考虑在整个数据集中找到"共识”,K-means考虑数据集中的每个点,并使用该信息在一系列迭代中进化聚类
  • 高斯混合模型考虑重合数据的聚类

2.性能度量

什么是好的聚类?

目的∶1评估聚类结果的好坏②确立优化的目标

结论︰簇内的样本尺度尽可能彼此相似,簇间的样本尽可能不同。

外部指标∶将聚类结果与某个"参考模型"进行比较,称为"外部指标"”。

a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i < j ) } , b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ ≠ λ j ∗ , i < j ) } , c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ = λ j ∗ , i < j ) } , d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i < j ) } , \begin{aligned} & \left.a=|S S|, \quad S S=\left\{\left(\boldsymbol{x}_i, \boldsymbol{x}_j\right) \mid \lambda_i=\lambda_j, \lambda_i^*=\lambda_j^*, i<j\right)\right\}, \\ & \left.b=|S D|, \quad S D=\left\{\left(\boldsymbol{x}_i, \boldsymbol{x}_j\right) \mid \lambda_i=\lambda_j, \lambda_i^* \neq \lambda_j^*, i<j\right)\right\}, \\ & \left.c=|D S|, \quad D S=\left\{\left(\boldsymbol{x}_i, \boldsymbol{x}_j\right) \mid \lambda_i \neq \lambda_j, \lambda_i^*=\lambda_j^*, i<j\right)\right\}, \\ & \left.d=|D D|, \quad D D=\left\{\left(\boldsymbol{x}_i, \boldsymbol{x}_j\right) \mid \lambda_i \neq \lambda_j, \lambda_i^* \neq \lambda_j^*, i<j\right)\right\}, \\ & \end{aligned} a=SS,SS={(xi,xj)λi=λj,λi=λj,i<j)},b=SD,SD={(xi,xj)λi=λj,λi=λj,i<j)},c=DS,DS={(xi,xj)λi=λj,λi=λj,i<j)},d=DD,DD={(xi,xj)λi=λj,λi=λj,i<j)},


http://www.niftyadmin.cn/n/4954197.html

相关文章

windows无法与设备或主DNS服务器通信

今天电脑连上wifi后发现qq可以登录,爱奇艺也可以正常使用,但是就浏览器不能用,不管哪个网站都是无法访问,点击下面的Windows网络诊断后发现是因为windows无法与设备或主DNS服务器通信 1.右下角右键wifi图标,打开网络和internet设置 2.点击网络和共享中心 3. 点击更改适配器设置…

No114.精选前端面试题,享受每天的挑战和学习

文章目录 vue3中的ref、toRef、toRefs说明下TS的优缺点说下函数式组件说下函数式编程 vue3中的ref、toRef、toRefs 下面是对Vue 3中的ref、toRef和toRefs进行比较的表格&#xff1a; reftoReftoRefs参数类型值类型或引用类型响应式对象响应式对象返回值Ref 对象Ref 对象响应式…

C++--深入类和对象(下)

续接上篇&#xff0c;接着来谈我们的类和对象的深入的知识&#xff0c;话不多说&#xff0c;我们即刻出发...... 目录 1.友元 1.1友元函数 输出流运算符的重载 1.2友元类 2.再谈构造函数 2.1构造函数体赋值和初始化列表 构造函数体赋值为何不能叫做初始化&#xff1f; …

Effective C++条款08——别让异常逃离析构函数(构造/析构/赋值运算)

C并不禁止析构函数吐出异常&#xff0c;但它不鼓励你这样做。这是有理由的。考虑以下代码: class Widget { public:// ...~Widget() {}; // 假设这个可能吐出一个异常};void doSomething() {std::vector<Widget> v;// ... } // v在这里被…

Dockerfile创建 LNMP 服务+Wordpress 网站平台

文章目录 一.环境及准备工作1.项目环境2.服务器环境3.任务需求 二.Linux 系统基础镜像三.docker构建Nginx1.建立工作目录上传安装包2.编写 Dockerfile 脚本3.准备 nginx.conf 配置文件4.生成镜像5.创建自定义网络6.启动镜像容器7.验证 nginx 四.docker构建Mysql1. 建立工作目录…

01_Redis单线程与多线程

01——Redis单线程与多线程 一、Redis是单线程还是多线程 在谈Redis的单线程或多线程时&#xff0c;需要根据版本来区分。 在redis 3.x之前&#xff0c;redis是单线程的从redis 4.x开始&#xff0c;redis引入多线程。处理客户端请求时&#xff0c;使用单线程&#xff1b;在异…

大疆mini 3 Pro 手工拍摄倾斜摄影照片, 利用WebODM 制作老房子的模型

最近比较着迷于无人机&#xff0c; 因此也研究了一些无人机图片的处理技术&#xff0c; 对于航空倾斜摄影的图片处理&#xff0c; 发现WebODM 这个开源软件确实不错&#xff0c; 利用手里的大疆mini 3 pro&#xff0c; 手动拍摄了一些关于家里的老房子的照片&#xff0c; 最后果…

绘制原型图的常用工具之墨刀

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.墨刀是什么 二.墨刀的作用 三.墨刀界…