原文链接:http://tecdat.cn/?p=23276
有些问题是线性的,但有些问题是非线性的。我假如,你过来的常识是从探讨和解决线性问题开始的,这是一个天然的终点。对于非线性问题的解决,往往波及一个初始解决步骤。这个初始步骤的目标是将问题转化为同样具备线性特色的问题。
一个教科书式的例子是逻辑回归,用于取得两类之间的最佳线性边界。在一个规范的神经网络模型中,你会发现逻辑回归(或多类输入的回归)利用于转换后的数据。后面的几层 "致力于 "将不可分割的输出空间转化为线性办法能够解决的货色,使逻辑回归可能绝对容易地解决问题。
同样的情理也实用于谱聚类。与其用原始输出的数据工作,不如用一个转换后的数据工作,这将使它更容易解决,而后再链接到你的原始输出。
谱聚类是一些相当规范的聚类算法的重要变体。它是古代统计工具中的一个弱小工具。谱聚类包含一个解决步骤,以帮忙解决非线性问题,这样的问题能够用咱们所喜爱的那些线性算法来解决。例如,风行的K-means。
内容
- 谱系聚类的动机
- 一个典型的谱聚类算法
- 编码实例
谱聚类的动机
"一张图片胜过万语千言"(Tess Flanders)。
指标是划分两个不相交的类别。咱们的数据就有这种 "两个环 "的形态。你能够看到,因为数据不是线性可拆散的,K-means解决方案没有太大意义。咱们须要思考到数据中特地的非线性构造。 做到这一点的办法之一是应用数据的特色子空间,不是数据的理论状况,而是数据的相似性矩阵。
典型的谱聚类算法步骤
输出:n个样本点和聚类簇的数目k;
输入:聚类簇
(1)应用上面公式计算的类似度矩阵W;
W为组成的类似度矩阵。
(2)应用上面公式计算度矩阵D;
,即类似度矩阵W的每一行元素之和
D为组成的对角矩阵。
(3)计算拉普拉斯矩阵;
(4)计算L的特征值,将特征值从小到大排序,取前k个特征值,并计算前k个特征值的特征向量;
(5)将下面的k个列向量组成矩阵,;
(6)令是的第行的向量,其中;
(7)应用k-means算法将新样本点聚类成簇;
(8)输入簇,其中,.
下面就是未标准化的谱聚类算法的形容。也就是先依据样本点计算类似度矩阵,而后计算度矩阵和拉普拉斯矩阵,接着计算拉普拉斯矩阵前k个特征值对应的特征向量,最初将这k个特征值对应的特征向量组成的矩阵U,U的每一行成为一个新生成的样本点,对这些新生成的样本点进行k-means聚类,聚成k类,最初输入聚类的后果。这就是谱聚类算法的根本思维。相比拟PCA降维中取前k大的特征值对应的特征向量,这里获得是前k小的特征值对应的特征向量。然而上述的谱聚类算法并不是最优的,接下来咱们一步一步的合成下面的步骤,总结一下在此基础上进行优化的谱聚类的版本。
编码示例
环数据在代码中是对象dat。上面的几行只是简略地生成K-means解决方案,并将其绘制进去。
plot(dat, col= kmeans0cluster)
当初是谱聚类解决方案。
# 计算间隔矩阵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)
* 在咱们的例子中,的条目不仅是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.
最受欢迎的见解
1.R语言k-Shape算法股票价格工夫序列聚类
2.R语言中不同类型的聚类办法比拟
3.R语言对用电负荷工夫序列数据进行K-medoids聚类建模和GAM回归
4.r语言鸢尾花iris数据集的档次聚类
5.Python Monte Carlo K-Means聚类实战
6.用R进行网站评论文本开掘聚类
7.用于NLP的Python:应用Keras的多标签文本LSTM神经网络
8.R语言对MNIST数据集剖析 摸索手写数字分类数据
9.R语言基于Keras的小数据集深度学习图像分类