【机器学习】--谱聚类从初始到应用

一、前述

谱聚类(spectral clustering)是一种基于图论的聚类方法,主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远(或者相似度较低)的两个点之间的边权重值较低而距离较近(或者相似度较高)的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

二、具体原理

1、优点
谱聚类相较于前面讲到的最最传统的k-means聚类方法,谱聚类又具有许多的优点:

1.只需要待聚类点之间的相似度矩阵就可以做聚类了。

2.对于不规则的数据(或者说是离群点)不是那么敏感。

3.k-means聚类算法比较适合于凸数据集(数据集内的任意两点之间的连线都在该数据集以内,简单理解就是圆形,可能不准确),而谱聚类则比较通用。

2、相关概念

相似度矩阵S的构建

构建相似度的矩阵的过程中,可以使用欧氏距离、余弦相似度、高斯相似度等来计算数据点之间的相似度,选用哪个要根据你自己的实际情况来。不过在谱聚类中推荐使用的是高斯相似度,但是我在我的工程中使用的是余弦相似度。

拉普拉斯矩阵
 它的定义很简单,拉普拉斯矩阵。是度矩阵,也就是相似度矩阵的每一行(或者每一列)加和得到的一个对角矩阵。W就是图的邻接矩阵。

相似矩阵

邻接矩阵它是由任意两点之间的权重值组成的矩阵。通常我们可以自己输入权重,但是在谱聚类中,我们只有数据点的定义,并没有直接给出这个邻接矩阵,那么怎么得到这个邻接矩阵呢?
基本思想是,距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,不过这仅仅是定性,我们需要定量的权重值。一般来说我们可以通过样本点距离度量的相似矩阵来获得邻接矩阵。

构建邻接矩阵的方法有三类。-邻近法,K邻近法和全连接法。

    对于-邻近法,它设置了一个距离阈值,然后用欧式距离度量任意两点和的距离。即相似矩阵的,  然后根据和的大小关系,来定义邻接矩阵如下:

    从上式可见,两点间的权重要不就是,要不就是0,没有其他的信息了。距离远近度量很不精确,因此在实际应用中,我们很少使用-邻近法。

    第二种定义邻接矩阵的方法是K邻近法,利用KNN算法遍历所有的样本点,取每个样本最近的k个点作为近邻,只有和样本距离最近的k个点之间的。但是这种方法会造成重构之后的邻接矩阵W非对称,我们后面的算法需要对称邻接矩阵。为了解决这种问题,一般采取下面两种方法之一:

    第一种K邻近法是只要一个点在另一个点的K近邻中,则保留

    第二种K邻近法是必须两个点互为K近邻中,才能保留

    第三种定义邻接矩阵的方法是全连接法,相比前两种方法,第三种方法所有的点之间的权重值都大于0,因此称之为全连接法。可以选择不同的核函数来定义边权重,常用的有多项式核函数,高斯核函数和Sigmoid核函数。最常用的是高斯核函数RBF,此时相似矩阵和邻接矩阵相同:
    在实际的应用中,使用第三种全连接法来建立邻接矩阵是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。

3、算法流程:

               输入:样本集D=,相似矩阵的生成方式, 降维后的维度, 聚类方法,聚类后的维度

    输出: 簇划分

    1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S

    2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D

    3)计算出拉普拉斯矩阵L

    4)求L的最小的个特征值所各自对应的特征向量

    6) 将特征向量组成维的特征矩阵F

    7)对F中的每一行作为一个维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为。

    8)得到簇划分

4、总结

谱聚类算法是一个使用起来简单,但是讲清楚却不是那么容易的算法,它需要你有一定的数学基础。如果你掌握了谱聚类,相信你会对矩阵分析,图论有更深入的理解。同时对降维里的主成分分析也会加深理解。

谱聚类算法的主要优点有:
    1)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到
    2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好
谱聚类算法的主要缺点有:
    1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。
    2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。

三、代码

# !/usr/bin/python
# -*- coding:utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
from sklearn.cluster import spectral_clustering
from sklearn.metrics import euclidean_distances

def expand(a, b):
    d = (b - a) * 0.1
    return a-d, b+d

if __name__ == "__main__":
    matplotlib.rcParams[‘font.sans-serif‘] = [u‘SimHei‘]
    matplotlib.rcParams[‘axes.unicode_minus‘] = False

    t = np.arange(0, 2*np.pi, 0.1)
    data1 = np.vstack((np.cos(t), np.sin(t))).T
    data2 = np.vstack((2*np.cos(t), 2*np.sin(t))).T
    data3 = np.vstack((3*np.cos(t), 3*np.sin(t))).T
    data = np.vstack((data1, data2, data3))

    n_clusters = 3
    m = euclidean_distances(data, squared=True)
    sigma = np.median(m)

    plt.figure(figsize=(12, 8), facecolor=‘w‘)
    plt.suptitle(u‘谱聚类‘, fontsize=20)
    clrs = plt.cm.Spectral(np.linspace(0, 0.8, n_clusters))
    for i, s in enumerate(np.logspace(-2, 0, 6)):
        print(s)
        af = np.exp(-m ** 2 / (s ** 2)) + 1e-6
        y_hat = spectral_clustering(af, n_clusters=n_clusters, assign_labels=‘kmeans‘, random_state=1)
        plt.subplot(2, 3, i+1)
        for k, clr in enumerate(clrs):
            cur = (y_hat == k)
            plt.scatter(data[cur, 0], data[cur, 1], s=40, c=clr, edgecolors=‘k‘)
        x1_min, x2_min = np.min(data, axis=0)
        x1_max, x2_max = np.max(data, axis=0)
        x1_min, x1_max = expand(x1_min, x1_max)
        x2_min, x2_max = expand(x2_min, x2_max)
        plt.xlim((x1_min, x1_max))
        plt.ylim((x2_min, x2_max))
        plt.grid(True)
        plt.title(u‘sigma = %.2f‘ % s, fontsize=16)
    plt.tight_layout()
    plt.subplots_adjust(top=0.9)
    plt.show()

原文地址:https://www.cnblogs.com/LHWorldBlog/p/8728406.html

时间: 2024-10-10 13:55:44

【机器学习】--谱聚类从初始到应用的相关文章

机器学习——谱聚类

谱聚类是基于谱图理论基础上的一种聚类方法,与传统的聚类方法相比: 具有在任意形状的样本空间上聚类并且收敛于全局最优解的优点. 通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据进行聚类的目的; 其本质是将聚类问题转换为图的最优划分问题,是一种点对聚类算法.谱聚类算法将数据集中的每个对象看做图的顶点V,将顶点间的相似度量化为相应顶点连接边E的权值w,这样就构成了一-个基于相似度的无向加权图G(V,E),于是聚类问题就转换为图的划分问题.基于图的最优划分规则就是子图内的相似度最大,子

机器学习(6)之聚类算法(k-means\Canopy\层次聚类\谱聚类)

目录 1 聚类的定义 1.1 距离公式(相似度) 1.2 聚类的思想 2 K-means算法 2.1 K-means算法的思考 2.2 总结 3 二分K-Means算法 4 K-Means++算法 4.1 K-Means||算法 5 Canopy算法 5.1 应用场景 6 Mini Batch K-Means算法 7 层次聚类方法 7.1 AGNES算法中簇间距离 7.2 层次聚类优化算法 8 密度聚类 8.1 DBSCAN算法 8.1.1 基本概念 8.1.2 算法流程 8.1.3 DBSCA

简单易学的机器学习算法——谱聚类(Spectal Clustering)

一.复杂网络中的一些基本概念 1.复杂网络的表示 在复杂网络的表示中,复杂网络可以建模成一个图,其中,表示网络中的节点的集合,表示的是连接的集合.在复杂网络中,复杂网络可以是无向图.有向图.加权图或者超图. 2.网络簇结构 网络簇结构(network cluster structure)也称为网络社团结构(network community structure),是复杂网络中最普遍和最重要的拓扑属性之一.网络簇是整个网络中的稠密连接分支,具有同簇内部节点之间相互连接密集,不同簇的节点之间相互连接

用scikit-learn学习谱聚类

在谱聚类(spectral clustering)原理总结中,我们对谱聚类的原理做了总结.这里我们就对scikit-learn中谱聚类的使用做一个总结. 1. scikit-learn谱聚类概述 在scikit-learn的类库中,sklearn.cluster.SpectralClustering实现了基于Ncut的谱聚类,没有实现基于RatioCut的切图聚类.同时,对于相似矩阵的建立,也只是实现了基于K邻近法和全连接法的方式,没有基于$\epsilon$-邻近法的相似矩阵.最后一步的聚类方

聚类分析之谱聚类

聚类根据给定的样本数据集定义一个描述成对数据点相似度的亲合矩阵,并且计算矩阵的特征值和特征向量 , 然后选择合适 的特征向量聚类不同的数据点. 谱聚类可以在任意形状的样本空间聚类,且收敛于全局最优解,因此在处理高维数据方面存在着明显优势.总的来说,该算法存在一些不足之处.算法在聚类之前需要设置具体应用的尺度参数,通常需要一些经验.初始聚类中心对整个聚类效果影响很大,存在初始值敏感问题.很难找到图划分的优化解,聚类数目对于整个聚类效果有很大影响. setp1:计算图的拉普拉斯矩阵L=D-w set

理解矩阵及谱聚类小记

最近看了一些矩阵和谱聚类的知识,特在此简单记录一下.详细可以先看下参考文献. 首先看到的是孟岩写的三篇<理解矩阵>. 一:理解矩阵(一) 1:传统书籍空间的定义:存在一个集合,在这个集合上定义某某概念,然后满足某些性质",就可以被称为空间.孟的空间包含四点:(1). 由很多(实际上是无穷多个)位置点组成:(2). 这些点之间存在相对的关系:(3). 可以在空间中定义长度.角度:4.这个空间可以容纳运动,这里我们所说的运动是从一个点到另一个点的移动(变换),而不是微积分意义上的&quo

从拉普拉斯矩阵说到谱聚类

转载:http://blog.csdn.net/v_july_v/article/details/40738211   0 引言     11月1日上午,机器学习班第7次课,邹博讲聚类(PPT),其中的谱聚类引起了自己的兴趣,他从最基本的概念:单位向量.两个向量的正交.方阵的特征值和特征向量,讲到相似度图.拉普拉斯矩阵,最后讲谱聚类的目标函数和其算法流程.     课后自己又琢磨了番谱聚类跟拉普拉斯矩阵,打算写篇博客记录学习心得, 若有不足或建议,欢迎随时不吝指出,thanks. 1 矩阵基础

谱聚类

欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识!也可以搜索公众号:磐创AI,关注我们的文章. 作者:磐石 简述 图相关的符号符号 相似度矩阵S 拉普拉斯矩阵L性质 谱聚类算法 总结 一.简述 聚类是对探索性数据分析最广泛使用的技术,在现在各个科学领域中处理没有类标的数据时,人们总是想通过确定数据中不同样本的归类,来获取对数据的直观印象.传统的聚类方法有很多,像K-means,single linkage等,但是k

转:谱聚类

广义上来说,任何在算法中用到SVD/特征值分解的,都叫Spectral Algorithm.顺便说一下,对于任意矩阵只存在奇异值分解,不存在特征值分解.对于正定的对称矩阵,奇异值就是特征值,奇异向量就是特征向量. 传统的聚类算法,如K-Means.EM算法都是建立在凸球形样本空间上,当样本空间不为凸时,算法会陷入局部最优,最终结果受初始参数的选择影响比较大.而谱聚类可以在任意形状的样本空间上聚类,且收敛于全局最优解. 谱聚类和CHAMELEON聚类很像,都是把样本点的相似度放到一个带权无向图中,