一个简单谱聚类的例子

简介: 聚类是一种常见的无监督学习方法,目的在于从原始无标记数据中提取出分类标记。最简单的代表是K-means聚类,下面给出一个简单例子:n=300; c=3; t=randperm(n);x=[randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2; randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]'

聚类是一种常见的无监督学习方法,目的在于从原始无标记数据中提取出分类标记。最简单的代表是K-means聚类,下面给出一个简单例子:

n=300; c=3; t=randperm(n);
x=[randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2;
    randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]';
m=x(t(1:c),:); x2=sum(x.^2,2); s0(1:c,1)=inf;

for o=1:1000
    m2=sum(m.^2,2);
    [d,y]=min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x');
    for t=1:c
        m(t,:)=mean(x(y==t,:));
        s(t,1)=mean(d(y==t));
    end
    if norm(s-s0)<0.001, break, end
    so=s;
end

figure(1); clf; hold on;
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==2,1),x(y==2,2),'rx');
plot(x(y==3,1),x(y==3,2),'gv');

这里写图片描述
一般K-means聚类只能处理线性可分的聚类问题,因为它采用欧式距离作为分类依据。对于非线性问题,我们可以采用核映射方法,用样本的内积来代替欧式距离。然而这种方法的最终聚类结果强力依赖于初始值的选择,当由核函数决定的特征空间维度比较高的时候,这种依赖非常明显。对此,可以使用降维的方法解决该问题,这种方法被称为谱聚类

谱聚类的基本流程是在原始数据中利用局部保持投影法进行降维,然后直接运用K-means方法。下面给出一个简单的例子:

n=500; c=2; k=10;
t=randperm(n); a=linspace(0,2*pi,n/2)';
x=[a.*cos(a), a.*sin(a); (a+pi).*cos(a), (a+pi).*sin(a)];
x=x+rand(n,2); x=x-repmat(mean(x),[n,1]);
x2=sum(x.^2,2);
d=repmat(x2,1,n)+repmat(x2',n,1)-2*x*(x');
[p,i]=sort(d);
W=sparse(d<=ones(n,1)*p(k+1,:)); W=(W+W'~=0);
D=diag(sum(W,2));
L=D-W;
[z,v]=eigs(L,D,c-1,'sm');

m=z(t(1:c),:); z2=sum(z.^2,2); s0(1:c,1)=inf;

for o=1:1000
    m2=sum(m.^2,2);
    [u,y]=min(repmat(m2,1,n)+repmat(z2',c,1)-2*m*(z'));
    for t=1:c
        m(t,:)=mean(z(y==t,:));
        s(t,1)=mean(d(y==t));
    end
    if norm(s-s0)<0.001, break, end
    so=s;
end

figure(1); clf; hold on; axis([-10 10 -10 10])
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==2,1),x(y==2,2),'rx');

这里写图片描述

相关文章
|
8月前
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
|
8月前
|
算法 Java 图计算
图计算中的最短路径算法是什么?请解释其作用和常用算法。
图计算中的最短路径算法是什么?请解释其作用和常用算法。
73 0
|
算法
梯度下降算法详解(从下山比喻、数学推导到代码实现)
梯度下降算法详解(从下山比喻、数学推导到代码实现)
1537 0
|
算法
转:用一个例子说明Floyd算法
弗洛伊德算法(Floyd&#39;s algorithm)是一种用于求带权图中最短路径的算法,适用于带有正负权边的图(但不能有负环)。这种算法也有时被称为弗洛伊德-沃尔什算法。该算法基于动态规划,其时间复杂度为O(V^3),其中V是图中的顶点数。此外,该算法还可用于检测图中的负环并求出传递闭包。
133 2
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
231 0
|
人工智能 开发者
条件概率小例子 | 学习笔记
快速学习条件概率小例子
条件概率小例子 | 学习笔记
|
人工智能 开发者
回归方程求解小例子 | 学习笔记
快速学习回归方程求解小例子
回归方程求解小例子 | 学习笔记
|
编解码 算法 数据挖掘
【数据挖掘】基于方格的聚类方法 ( 概念 | STING 方法 | CLIQUE 方法 )
【数据挖掘】基于方格的聚类方法 ( 概念 | STING 方法 | CLIQUE 方法 )
580 0
【数据挖掘】基于方格的聚类方法 ( 概念 | STING 方法 | CLIQUE 方法 )
|
机器学习/深度学习 算法 前端开发
通俗解释随机森林算法
通俗解释随机森林算法
399 0
通俗解释随机森林算法
|
数据挖掘 机器学习/深度学习
白话LDA隐式狄里克雷分布模型
今天应学弟要求,又回顾了下LDA模型,陡然发现之前弄懂弄通的一些地方竟然开始有些生疏,果然还是得记录总结。 好记性不如烂笔头,于是将LDA模型又从头梳理了一下,有些体会,记录下来 以下尽可能不用代码也不用公式还原LDA模型的思想原貌 LDA全景图 1.
2052 0

热门文章

最新文章