编程语言
首页 > 编程语言> > 【数据分析】基于多元宇宙优化DBSCAN聚类matlab源码

【数据分析】基于多元宇宙优化DBSCAN聚类matlab源码

作者:互联网

一、MVO

1.基本概念

MVO算法的思想启发于物理学中多元宇宙理论,通过对白/黑洞(宇宙)和虫洞等概念及其相互作用机理的数学化描述实现待优化问题的求解。

白洞:是一个只发射不吸收的特殊天体,并且是诞生一个宇宙的主要成分;

黑洞:刚好与白洞相反,它吸引宇宙中一切事物,所有的物理定律在黑洞中都会失效;

虫洞:连结白洞和黑洞的多维时空隧道,将个体传送到宇宙的任意角落,甚至是从一个宇宙到另一个宇宙,而多元宇宙通过白洞、黑洞、虫洞相互作用达到一个稳定状态。

2.算法原理

MVO算法依据多元宇宙理论的3个主要概念:白洞、黑洞和虫洞来建立数学模型,定义候选解为宇宙,候选解的适应度为宇宙的膨胀率。迭代过程中,每一个候选解为黑洞,适应度好的宇宙依轮盘赌原理成为白洞,黑洞和白洞交换物质(维度更换),部分黑洞可以通过虫洞链接穿越到最优宇宙附近(群体最优附近搜索)。

3.算法的优缺点

3.1优点

主要的性能参数是虫洞存在概率和虫洞旅行距离率,参数相对较少,低维度数值实验表现出了相对较优异的性能。

3.2缺点

求解大规模优化问题的性能较差,算法缺乏跳出局部极值的能力,导致无法寻取全局最优解。

二、DBSCAN

1.基本概念

DBSCAN是一种基于密度的聚类算法,它有两个重要的参数:Eps为定义密度时的领域半径,MinPts为定义核心点时的阈值。

(1) 核心点:在半径Eps内含有大于或者等于MinPts数目的点 。

(2) 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内 。

(3) 噪音点:既不是核心点也不是边界点的点。

图1 核心点、边界点、噪音点

(4) 密度直达:若\large x_{j}位于核心点\large x_{i}的Eps领域内,则称\large x_{j}\large x_{i}密度直达。

(5) 密度可达:对\large x_{j}\large x_{i},若存在序列\large p_{1},p_{2},...,p_{n},其中\large p_{1}=x_{i},p_{n}=x_{j}\large p_{i+1}\large p_{i}密度直达,则称\large x_{j}\large x_{i}密度可达。

(6) 密度相连:对\large x_{j}\large x_{i},若存在\large x_{k},使得\large x_{j}\large x_{i}均由\large x_{k}密度可达,则称\large x_{j}\large x_{i}密度相连。

图2 密度直达、密度可达、密度相连

如图2所示,虚线代表的是Eps领域,\large x_{1}~\large x_{5}均为核心点,\large x_{2}\large x_{4}分别由\large x_{1}密度直达,\large x_{3}\large x_{5}分别由\large x_{1}密度可达,\large x_{3}\large x_{5}密度相连。

2.算法原理

算法先根据参数Eps和MinPts找出所有核心点,然后以任一核心点为出发点,找出由其密度可达的样本生成聚类簇,直到所有核心点均被访问过为止。

3.算法的优缺点

3.1优点

(1)不需要事先指定聚类的类别数;

(2)可以发现任意形状的类;

(3)能找出数据中的噪音点,且对噪音点不敏感。

3.2缺点

(1)算法的聚类效果依赖于距离公式的选取,由于高维数据存在维数灾难,会对距离的度量标准产生影响;

(2)当数据集中的数据密度不均匀时,参数Eps和MinPts的选取较困难,从而影响聚类的效果。

4.算法流程

图3 DBSCAN算法流程图

5.参数设置

(1)Eps:DBSCAN算法原文中通过定义K-距离图选择Eps的值。K-距离图的定义:给定k邻域参数,对于数据中的每个点,计算对应的第k个最近邻域距离,并将数据集所有点对应的第k个最近邻域距离按照降序方式排序,并绘制成降序排列的k距离图。在K-距离图中第一个谷值点位置对应的k距离值设定为DBSCAN的Eps,能得到较好的聚类效果。

说明:一般将K-距离图中参数k的值设为4。

(2)MinPts:该参数的选取有一个准则,MinPts≥dim+1,其中dim表示待聚类数据的维度。

MinPts设置为1时,每个独立点都是核心点,都可以形成一个簇;MinPts≤2时,与层次距离最近邻域结果相同。因此,MinPts必须选择大于等于3的值。

 
  1. %%% main function:主函数
    
    clc;
    
    clear;
    
    close all;
    
    tic;
    
    % 读取数据
    
    % load('C:\Users\Administrator\Desktop\MATLAb Programming practice\MVO-DBSCAN\X.mat');
    
    load X.mat;
    
    % 数据标签
    
    train_labels=[];
    
    for i=1:3
    
    train_labels=[train_labels;i*ones(100,1)];
    
    end
    
    %% run MVO Algorithm
    
    
    Universes_no=60; %Number of search agents (universes)
    
    Max_iteration=500; %Maximum numbef of iterations
    
    
    % 待优化参数(宇宙)的上、下界和维度
    
    lb=0.01;
    
    ub=0.5;
    
    dim=1;
    
    
    % 定义参数MinPts
    
    MinPts =4;
    
    [Best_score,Best_pos,cg_curve]=MVO(Universes_no,Max_iteration,lb,ub,dim,MinPts,X,train_labels);
    
    
    display(['The best solution obtained by MVO is : ', num2str(Best_pos)]);
    
    display(['The best optimal value of the objective funciton found by MVO is : ', num2str(Best_score)]);
    
    
    %% Run DBSCAN Clustering Algorithm
    
    Eps=Best_pos;
    
    labels=DBSCAN(X,Eps,MinPts);
    
    figure;
    
    PlotClusterinResult(X, labels);
    
    title(['DBSCAN Clustering (\epsilon = ' num2str(Eps) ', MinPts = ' num2str(MinPts) ')']);
    
    toc;
    
    

三、MVO优化DBSCAN实现聚类

虽然可以通过定义K-距离图选择Eps的值,但该方法本身的k值也需要人为设定,导致Eps的值得不到较好的选取。针对Eps值的选取问题,本博客通过MVO优化DBSCAN实现聚类,利用MVO的寻优性能找到合适的Eps值,从而使聚类效果达到最优。

MVO优化DBSCAN实现聚类的源代码包括MVO算法,DBSCAN算法的源代码,以及MVO优化DBSCAN的过程。

 

标签:DBSCAN,Eps,算法,源码,MinPts,聚类,matlab,MVO
来源: https://blog.51cto.com/u_15287693/2984498