目录
一、MVO
1.基本概念
2.算法原理
3.算法的优缺点
4.算法流程
二、DBSCAN
1.基本概念
2.算法原理
3.算法的优缺点
4.算法流程
5.参数设置
6.MATLAB代码
三、MVO优化DBSCAN实现聚类
参考文献
一、MVO
1.基本概念
MVO算法的思想启发于物理学中多元宇宙理论,通过对白/黑洞(宇宙)和虫洞等概念及其相互作用机理的数学化描述实现待优化问题的求解。
白洞:是一个只发射不吸收的特殊天体,并且是诞生一个宇宙的主要成分;
黑洞:刚好与白洞相反,它吸引宇宙中一切事物,所有的物理定律在黑洞中都会失效;
虫洞:连结白洞和黑洞的多维时空隧道,将个体传送到宇宙的任意角落,甚至是从一个宇宙到另一个宇宙,而多元宇宙通过白洞、黑洞、虫洞相互作用达到一个稳定状态。
2.算法原理
MVO算法依据多元宇宙理论的3个主要概念:白洞、黑洞和虫洞来建立数学模型,定义候选解为宇宙,候选解的适应度为宇宙的膨胀率。迭代过程中,每一个候选解为黑洞,适应度好的宇宙依轮盘赌原理成为白洞,黑洞和白洞交换物质(维度更换),部分黑洞可以通过虫洞链接穿越到最优宇宙附近(群体最优附近搜索)。
3.算法的优缺点
3.1优点
主要的性能参数是虫洞存在概率和虫洞旅行距离率,参数相对较少,低维度数值实验表现出了相对较优异的性能。
3.2缺点
求解大规模优化问题的性能较差,算法缺乏跳出局部极值的能力,导致无法寻取全局最优解。
4.算法流程
用MVO算法的伪代码描述其流程如下:
Create random universes (U)
Initialize WER,TDR,Best_universe
SU=Sorted universes
NI=Normalize inflation rate (fitness) of the universes
while the end criterion is not satisfied
Update WEP and TDR;
Evaluate the fitness of all universes
for each universe indexed by i
Black_hole_index=i;
for each object indexed by j
r1=random([0,1]);
if r1<NI(Ui)
White_hole_index=RouletteWheelSelection(-NI);
U(Black_hole_index,j)=SU(White_hole_index,j);
end if
r2=random([0,1]);
if r2<Wormhole_existance_probability
r3= random([0,1]);
r4= random([0,1]);
if r3<0.5
U(i,j)=Best_universe(j)+Travelling_distance_rate*(( ub(j) -lb(j))*r4 + lb(j));
else
U(i,j)=Best_universe(j)-Travelling_distance_rate*(( ub(j) -lb(j))*r4+lb(j));
end if
end if
end for
end for
end while
有关MVO算法的详细介绍请参考:(中文版)MVO算法详解及其伪代码
二、DBSCAN
1.基本概念
DBSCAN是一种基于密度的聚类算法,它有两个重要的参数:Eps为定义密度时的领域半径,MinPts为定义核心点时的阈值。
(1) 核心点:在半径Eps内含有大于或者等于MinPts数目的点 。
(2) 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内 。
(3) 噪音点:既不是核心点也不是边界点的点。
图1 核心点、边界点、噪音点(4) 密度直达:若位于核心点的Eps领域内,则称由密度直达。
(5) 密度可达:对与,若存在序列其中且由密度直达,则称由密度可达。
(6) 密度相连:对与,若存在,使得与均由密度可达,则称与密度相连。
图2 密度直达、密度可达、密度相连如图2所示,虚线代表的是Eps领域,~均为核心点,、分别由密度直达,、分别由密度可达,与密度相连。
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的值。
6.MATLAB代码
%%% 用DBSCAN实现聚类
clear;
close all;
clc;
tic;
%% 待聚类数据集
% 第一组数据
mu1=[0 0]; %均值
S1=[0.1 0;0 0.1]; %协方差
data1=mvnrnd(mu1,S1,100); %产生高斯分布数据
%第二组数据
mu2=[1.25 1.25];
S2=[0.1 0;0 0.1];
data2=mvnrnd(mu2,S2,100);
% 第三组数据
mu3=[-1.25 1.25];
S3=[0.1 0;0 0.1];
data3=mvnrnd(mu3,S3,100);
data=[data1;data2;data3];
%%
% KNN k distance graph, to determine the epsilon
% 对每个数据求第K个最近领域距离,一般将k值设为4.
numData=size(data,1);
Kdist=zeros(numData,1);
[~,Dist]=knnsearch(data(2:numData,:),data(1,:),'dist','euclidean','k',4);
Kdist(1)=Dist(1);
for i=2:numData
[~,Dist] = knnsearch(data([1:i-1,i+1:numData],:),data(i,:)); % 除i行以外的其他行与i进行计算.
Kdist(i)=Dist; % 矩阵Dist与k的个数有关,大小始终为(1*K).
end
[sortKdist,~]=sort(Kdist,'descend');% 将数据集所有点对应的最近领域距离按照降序方式排列,sortKdist是降序排列后的数据.
distX=(1:numData)';
%% 画图
figure(1);
plot(distX,sortKdist,'r+-','LineWidth',2);
grid on;
% 将参数和数据代入DBSCAN函数
epsilon=0.2;
MinPts= 4 ;
labels=DBSCAN(data,epsilon,MinPts);
figure(2);
PlotClusterinResult(data, labels);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
toc;
三、MVO优化DBSCAN实现聚类
虽然可以通过定义K-距离图选择Eps的值,但该方法本身的k值也需要人为设定,导致Eps的值得不到较好的选取。针对Eps值的选取问题,本博客通过MVO优化DBSCAN实现聚类,利用MVO的寻优性能找到合适的Eps值,从而使聚类效果达到最优。
MVO优化DBSCAN实现聚类的源代码包括MVO算法,DBSCAN算法的源代码,以及MVO优化DBSCAN的过程。
代码地址:MVO-DBSCAN
参考文献
[1]Mirjalili S, Mirjalili S M, Hatamlou A. Multi-verse optimizer: A nature-inspired algorithm for global optimization[J]. Neural Computing and Applications, 2016,27(2): 495-513.
[2]赵世杰,高雷阜,徒君等.耦合横纵向个体更新策略的改进MVO算法[J].控制与决策,2018,33(8):1423.
[3]来文豪,周孟然,李大同等.无监督学习AE和MVO-DBSCAN结合LIF在煤矿突水识别中的应用[J].光谱学与光谱分析,2019,39(8):2439.
[4]刘小龙.改进多元宇宙算法求解大规模实值优化问题[J].电子与信息学报,2019,41(7):1667.
[5]聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法
[6]聚类算法初探(五)DBSCAN