原文链接: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 的小数据集深度学习图像分类