基于蝴蝶算法的投影寻踪模型 - 附代码
摘要:投影寻踪(projection pursuit,PP)是处理和分析高维数据的一类新兴统计方法,其基本思想是将高维数据投影到低维子空间上,并在该子空间上寻找出能够反映原高维数据结构或特征的投影,从而达到研究和分析高维数据的目的 ,在克服“维数祸根”以及解决小样本、超高维等问题中具有明显优势。在实际应用中,投影寻踪模型最佳投影方向 a 的选取对于投影寻踪模型的评估精度及评估结果有着关键性影响。本文利用蝴蝶算法来对最佳投影方向a进行参数寻优。
1.蝴蝶算法
蝴蝶算法原理请参考:https://blog.csdn.net/u011835903/article/details/107855860
2.投影寻踪模型
投影寻踪模型的基本原理是将高维数据通过某种组合投影到低维子空间上,通过极小化投影指标来反映原高维数据结构或特征,并在低维空间上对数据结构进行分析,以达到研究和分析高维数据的
目的,其简要算法过程如下:
步骤 1: 数据预处理。对评估数据集进行归一化处理。
步骤 2: 构造投影指标函数。投影寻踪方法就是将 m 维数据
{
x
i
j
∣
j
=
1
,
2
,
.
.
.
,
m
}
\{x_{ij}|j=1,2,...,m\}
{xij∣j=1,2,...,m}综合乘以
a
=
(
a
1
,
a
2
,
.
.
.
,
a
m
)
a=(a_1,a_2,...,a_m)
a=(a1,a2,...,am)为投影方向的一维投影值
z
i
z_i
zi:
z
i
=
∑
j
=
1
m
a
j
x
i
j
(1)
z_i=\sum_{j=1}^ma_jx_{ij}\tag{1}
zi=j=1∑majxij(1)
式中
x
i
j
x_{ij}
xij 为第
i
i
i组第
j
j
j个评估指标值;
a
a
a为单位向量。
步骤 3: 优化投影指标函数。当投影指标函数取得最大值时,所对应的$a
方向为最能反映数据特征的最优投影方向。因此搜寻最优投影方向问题就转化为非线性最优求解问题,其目标函数
方向为最能反映数据特征的最优投影方向。因此搜寻最优投影方向问题就 转化为非线性最优求解问题,其目标函数
方向为最能反映数据特征的最优投影方向。因此搜寻最优投影方向问题就转化为非线性最优求解问题,其目标函数Q(a)$及约束条件为:
{
m
a
x
Q
(
a
)
=
σ
D
z
s
.
t
.
∑
j
=
1
m
a
j
2
=
1
,
a
j
∈
[
0
,
1
]
(2)
\begin{cases} maxQ(a)=\sigma D_z\\ s.t.\sum_{j=1}^m a_j^2=1,a_j\in[0,1] \end{cases}\tag{2}
{maxQ(a)=σDzs.t.∑j=1maj2=1,aj∈[0,1](2)
其中:
σ
=
∑
i
=
1
n
(
z
i
−
z
a
v
g
)
2
/
(
n
−
1
)
(3)
\sigma = \sqrt{\sum_{i=1}^n(z_i-z_{avg})^2/(n-1)}\tag{3}
σ=i=1∑n(zi−zavg)2/(n−1)(3)
D z = ∑ i = 1 n ∑ j = 1 n ( R − r i j ) o ( R − r i j ) (4) D_z=\sum_{i=1}^n\sum_{j=1}^n(R-r_{ij})o(R-r_{ij})\tag{4} Dz=i=1∑nj=1∑n(R−rij)o(R−rij)(4)
式中: σ σ σ、 D z D_z Dz 分别为投影值 z i z_i zi的标准差和局部密度; z a v g z_{avg} zavg为序列 z i z_i zi?的平均值; R R R为局部密度的窗口半径; r i j r_{ij} rij 为样本之间的距离; o ( τ ) o(τ) o(τ)?为单位阶跃函数,当 τ ≥ 0 τ≥0 τ≥0 时,其值为 1, τ < 0 τ<0 τ<0 时,其值为 0; n n n 为评估样本总数。
3.蝴蝶算法结合投影寻踪
从2节中可以知道,参数a为我们要寻优的对象,于是设置蝴蝶的维度为样本组数。适应度函数为投影寻踪目标函数
Q
(
a
)
Q(a)
Q(a).
f
i
t
n
e
s
s
=
Q
(
a
)
(5)
fitness = Q(a) \tag{5}
fitness=Q(a)(5)
4.测试结果
设置一组[0,1]之间的案例数据如下:
%导入数据,每列为指标,每行为样本数据,计算每个样本投影评价值
data =[0.71 0.00 0.37 0.01 0.15 0.00 0.37
0.14 0.59 0.00 1.08 1.00 0.59 0.97
0.57 0.43 0.11 0.98 0.01 0.73 0.83
1.00 0.40 0.69 0.80 0.28 1.00 0.40
0.73 0.66 1.00 0.00 0.88 0.90 0.53
0.00 0.74 0.29 0.12 0.75 0.06 0.00
0.84 0.86 0.86 0.61 0.97 0.64 0.50
0.11 1.00 0.37 0.08 0.49 0.50 0.73
0.27 0.09 0.49 0.39 0.94 0.86 0.40
0.70 0.36 0.49 0.58 0.18 0.45 1.00 ];
蝴蝶参数设置如下:
SearchAgents_no=30; %种群数量
Max_iteration = 2000;%最大迭代次数
dim = size(data,2);
lb = 0.01;%下边界
ub = 1;%上边界
fobj = @(a) fun(data,a);
[Best_score,Best_pos,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化
投影寻踪结果如下:
5.参考文献
[1]崔东文.鸡群优化算法-投影寻踪洪旱灾害评估模型[J].水利水电科技进展,2016,36(02):16-23+41.