R语言谱聚类、K-MEANS聚类分析非线性环状数据比较

原文链接:http://tecdat.cn/?p=23276

有些问题是线性的,但有些问题是非线性的。我假设,你过去的知识是从讨论和解决线性问题开始的,这是一个自然的起点。对于非线性问题的解决,往往涉及一个初始处理步骤。这个初始步骤的目的是将问题转化为同样具有线性特征的问题。

一个教科书式的例子是逻辑回归,用于获得两类之间的最佳线性边界。在一个标准的神经网络模型中,你会发现逻辑回归(或多类输出的回归)应用于转换后的数据。前面的几层 "致力于 "将不可分割的输入空间转化为线性方法可以处理的东西,使逻辑回归能够相对容易地解决问题。

同样的道理也适用于谱聚类。与其用原始输入的数据工作,不如用一个转换后的数据工作,这将使它更容易解决,然后再链接到你的原始输入。

谱聚类是一些相当标准的聚类算法的重要变体。它是现代统计工具中的一个强大工具。谱聚类包括一个处理步骤,以帮助解决非线性问题,这样的问题可以用我们所喜欢的那些线性算法来解决。例如,流行的K-means。

内容

  • 谱系聚类的动机

  • 一个典型的谱聚类算法

  • 编码实例

谱聚类的动机

"一张图片,胜过万语 千言"(Tess Flanders)。

0bd6402b0eae16628f563cb57ac8a198.png

目标是划分两个不相交的类别。我们的数据就有这种 "两个环 "的形状。你可以看到,由于数据不是线性可分离的,K-means解决方案没有太大意义。我们需要考虑到数据中特别的非线性结构。做到这一点的方法之一是使用数据的特征子空间,不是数据的实际情况,而是数据的相似性矩阵。

典型的谱聚类算法步骤

输入:n个样本点f470c4273f4d144d14b7473cd897440c.png和聚类簇的数目k;

输出:聚类簇c787ab7f3aa518f74a46b67da11fe4e1.png

(1)使用下面公式计算90e894ab7728f2ad4248807e871bf2ee.png的相似度矩阵W;

656cb779424409c659c9fbaa1445fd6d.png

W为6199c7530a0251effbaa0b4301e6dc34.png组成的相似度矩阵。 

(2)使用下面公式计算度矩阵D;

acd69d9facda66d4e1862dc678ecfdd1.png  ,即相似度矩阵W的每一行元素之和 

D为3730bbd96ecded110dcdc23b8c5a34a4.png组成的7f2612d63a861d1c0933256374135ea5.png对角矩阵。

(3)计算拉普拉斯矩阵804d453902aadda5c70d1b15785b7150.png

(4)计算L的特征值,将特征值从小到大排序,取前k个特征值,并计算前k个特征值的特征向量5dab86fc2d4e6aae9d03e69d148fc565.png

(5)将上面的k个列向量组成矩阵97dad2d0afce229c2fff19eb3f174348.png3df1a74cf13f0ef2442702d35d487478.png

(6)令54e0ddf5b4f04613582a69bb997f1f42.png是的第i行的向量,其中efd51a1d46e4e7cfcc3632cac8864127.png

(7)使用k-means算法将新样本点f704d54b80ab1bca00b3f035cbff421e.png聚类成簇7eab8dd5d46a458d8a101e9506fb0e58.png

(8)输出簇d5f8b5b41b14f5ccd7e377ae09bc8b8e.png,其中,3eac15233484d73a355e1a01b4531a2a.png.

上面就是未标准化的谱聚类算法的描述。也就是先根据样本点计算相似度矩阵,然后计算度矩阵和拉普拉斯矩阵,接着计算拉普拉斯矩阵前k个特征值对应的特征向量,最后将这k个特征值对应的特征向量组成69d727ac24f5866f9df976ec6e499bff.png的矩阵U,U的每一行成为一个新生成的样本点,对这些新生成的样本点进行k-means聚类,聚成k类,最后输出聚类的结果。这就是谱聚类算法的基本思想。相比较PCA降维中取前k大的特征值对应的特征向量,这里取得是前k小的特征值对应的特征向量。但是上述的谱聚类算法并不是最优的,接下来我们一步一步的分解上面的步骤,总结一下在此基础上进行优化的谱聚类的版本。

编码示例

环数据在代码中是对象dat。下面的几行只是简单地生成K-means解决方案,并将其绘制出来。

plot(dat, col= kmeans0cluster)

058eb76949e13bc8c5d6ddc72eef36c1.png  

现在是谱聚类解决方案。

# 计算距离矩阵
dist(dat, method = "euclidean", diag= T, upper = T)  
sig=1 # 超参数
#  一个点与自身的距离为零
diag(tmpa) <- 0 #设置对角线为零
# 计算程度矩阵
# 因为D是一个对角线矩阵,所以下面一行就可以了:
diag(D) <- diag(D)^(-0.5)
# 现在是拉普拉斯的问题:
# 特征分解
eig_L <- eigen(L, symmetric= T)
K <- 4 # 让我们使用前4个向量
# 它是相当稳健的--例如5或6的结果不会改变
x <- eig_L$vectors\[,1:K\]
# 现在进行归一化处理:
sqrt( apply(x^2, 1, sum) ) #  临时分母
# 临时分母2:转换为一个矩阵
# 创建Y矩阵
# 在y上应用聚类
# 可视化:
plot(dat, col= spect0$cluster)

00716db85790624d30611d6a40256fd4.png

* 在我们的例子中,96ff3e91a78f8af325b1b7122afaadeb.png的条目不仅是0和1(连接或不连接),而且是量化相似性的数字。

参考资料

Ng, Andrew Y., Michael I. Jordan, and Yair Weiss. “On spectral clustering: Analysis and an algorithm.” Advances in neural information processing systems. 2002.


a2b86651fea2a54a43a49d65fefb69fb.png

点击标题查阅往期内容

R语言实现k-means聚类优化的分层抽样(Stratified Sampling)分析各市镇的人口

R语言聚类有效性:确定最优聚类数分析IRIS鸢尾花数据和可视化

R语言蒙特卡洛方法:方差分量的Metropolis Hastings(M-H)、吉布斯Gibbs采样比较分析

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

matlab使用样条插值重采样估计INR数据研究

R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样

Python、R对小说进行文本挖掘和层次聚类可视化分析案例

R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集

R语言有限混合模型(FMM,finite mixture model)EM算法聚类分析间歇泉喷发时间

R语言用温度对城市层次聚类、kmean聚类、主成分分析和Voronoi图可视化

R语言k-Shape时间序列聚类方法对股票价格时间序列聚类

R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析

R语言复杂网络分析:聚类(社区检测)和可视化

R语言中的划分聚类模型

基于模型的聚类和R语言中的高斯混合模型

r语言聚类分析:k-means和层次聚类

SAS用K-Means 聚类最优k值的选取和分析

用R语言进行网站评论文本挖掘聚类

基于LDA主题模型聚类的商品评论文本挖掘

R语言鸢尾花iris数据集的层次聚类分析

R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归

R语言聚类算法的应用实例

欲阅读全文,请点击左下角“阅读原文”。

fc4d73702be498f0740f4711dc763163.gif

dfbd1e6ac2cc613062659fc3b8aed619.png

968ae774d6c192b16af40d423ed37629.jpeg

30a4e88b59a90a39a3310a361177df9a.png

欲阅读全文,请点击左下角“阅读原文”。

6e45c3e71305b36177487822f9705d1b.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值