數(shù)學(xué)建?!M退火優(yōu)化投影尋蹤
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
??在考慮綜合評價的時候,我們使用了各自主觀、客觀的方法去求解權(quán)重,客觀權(quán)重的計算依靠著數(shù)據(jù)本身的分布來決定,有時候會出現(xiàn)各種各樣不可抗拒的意外情況,其中在熵權(quán)法的解釋在就有提到,有時候數(shù)據(jù)的重要程度和分布不一定是相關(guān)的。而投影尋蹤法主要基于評價結(jié)果的方差及相互的絕對誤差對權(quán)值進(jìn)行調(diào)整,得到能反映原數(shù)據(jù)的最佳投影(可以理解為重要程度值),這樣得到的評價值更具有參考性。
一、投影尋蹤是什么?
??投影尋蹤是處理和分析高維數(shù)據(jù)的一類統(tǒng)計方法,其基本思想是將高維數(shù)據(jù)投影到低維(1~3維)子空間上,尋找出反映原高維數(shù)據(jù)的結(jié)構(gòu)或特征的投影,以達(dá)到研究和分析高維數(shù)據(jù)的目的。1974年,美國Stanford大學(xué)的Friedman和Tukey首次將該方法命名為Projection Pursuit,即投影尋蹤。
??投影尋蹤(projection pursuit,簡稱PP)是國際統(tǒng)計界于70年代中期發(fā)展起來的一種新的、有價值的新技術(shù),是統(tǒng)計學(xué)、應(yīng)用數(shù)學(xué)和計算機技術(shù)的交叉學(xué)科。它是用來分析和處理高維觀測數(shù)據(jù),尤其是非正態(tài)非線性高維數(shù)據(jù)的一種新興統(tǒng)計方法。它通過把高維數(shù)據(jù)投影到低維子空間上,尋找出能反映原高維數(shù)據(jù)的結(jié)構(gòu)或特征的投影,達(dá)到研究分析高維數(shù)據(jù)的目的。它具有穩(wěn)健性、抗干擾性和準(zhǔn)確度高等優(yōu)點,因而在許多領(lǐng)域得到廣泛應(yīng)用。
??以上來自于百度百科的解釋,用大白話來說就是把多維數(shù)據(jù)投影到平面、空間上,觀察投影那個比較合適。
二、什么是模擬退火
??模擬退火是一種尋優(yōu)算法,其本質(zhì)思想是其出發(fā)點是基于物理中固體物質(zhì)的退火過程與一般組合優(yōu)化問題之間的相似性。模擬退火算法來源于固體退火原理,是一種基于概率的算法,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內(nèi)部粒子隨溫升變?yōu)闊o序狀,內(nèi)能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達(dá)到平衡態(tài),最后在常溫時達(dá)到基態(tài),內(nèi)能減為最小。
??模擬退火算法本身是比較容易理解的,在這里我放了一些其他博主的文章,幫助大家理解,我自己也是通過這些學(xué)習(xí)平臺去學(xué)習(xí)的。
知乎(智能算法):https://zhuanlan.zhihu.com/p/266874840
B站(清風(fēng)):https://www.bilibili.com/video/BV1hK41157JL?spm_id_from=333.337.search-card.all.click
三、模擬退火優(yōu)化投影尋蹤
??步驟1,2,3屬于投影尋蹤的構(gòu)建,步驟4開始屬于模擬退火尋找最優(yōu)解,需要理解后才能看懂,如果不想看可以直接應(yīng)用也行。
1.數(shù)據(jù)的預(yù)處理
??大家可以發(fā)現(xiàn),做求權(quán)重的第一步大部分都是要做數(shù)據(jù)預(yù)處理的,包括正向化和歸一化。
對于正向指標(biāo)(越大越好),歸一化如下:
x
i
=
x
i
?
min
?
x
i
max
?
x
i
?
min
?
x
i
x_i=\frac{x_i-\min x_i}{\max x_i-\min x_i}
xi?=maxxi??minxi?xi??minxi??
對于負(fù)向指標(biāo)(越小越好),歸一化如下:
x
i
=
max
?
x
i
?
x
i
max
?
x
i
?
min
?
x
i
x_i=\frac{\max x_i- x_i}{\max x_i-\min x_i}
xi?=maxxi??minxi?maxxi??xi??
對于中間指標(biāo)(越靠近某個值越好),歸一化如下:
x
i
=
1
?
∣
x
i
?
x
b
e
s
t
∣
m
a
x
∣
x
i
?
x
b
e
s
t
∣
x_i=1-\frac{{|x_i-x_{best}|}}{max|x_i-x_{best}|}
xi?=1?max∣xi??xbest?∣∣xi??xbest?∣?
??其中
x
b
e
s
t
x_{best}
xbest?為最優(yōu)值
對于區(qū)間指標(biāo)(越靠近某個區(qū)間越好),歸一化如下:
??其中
M
=
m
a
x
(
a
?
m
i
n
(
x
i
)
,
m
a
x
(
x
i
)
?
b
)
M=max{(a-min{(x_i)},max{(x_i)-b})}
M=max(a?min(xi?),max(xi?)?b)
常見的歸一化就是以上幾種,其他的,例如多分位點最優(yōu)的就不再說明。
2.向低維投影
??選取多種角度觀察指標(biāo)數(shù)據(jù),從而能充分挖掘并反映數(shù)據(jù)特征的最佳投影向量。令
a
=
(
a
1
,
a
2
,
.
.
.
,
a
n
)
a=(a_1,a_2,...,a_n)
a=(a1?,a2?,...,an?)為n維的單位向量,表示n個指標(biāo)投影的方向向量,則第
i
i
i個樣本在一維空間上的線性投影為:
Z
i
=
∑
i
=
1
n
x
i
j
a
j
Z_i=\sum_{i=1}^n{x_{ij}a_j}
Zi?=i=1∑n?xij?aj?
3.構(gòu)造投影的指標(biāo)函數(shù)
??設(shè)數(shù)據(jù)的投影值為
Z
i
Z_i
Zi?,基于投影尋蹤,通過構(gòu)造投影的指標(biāo)函數(shù)來求得信息在整體上的分布特征以及局部投影點的分布特征,一般的,信息在整體上分布應(yīng)盡量散開,而局部投影點分布應(yīng)盡量密集,最終用投影指標(biāo)函數(shù)來表示其最大乘積。
max
?
?
G
(
a
)
=
S
a
?
B
a
\max\text{\ }G\left( a \right) =Sa\cdot Ba
max?G(a)=Sa?Ba
??其中Ba是投影值Zi的局部密度,投影值Zi的標(biāo)準(zhǔn)差為Sa,故Ba與Sa可表示為:
B
a
=
∑
i
=
1
n
∑
j
=
1
m
(
R
i
j
?
r
i
j
)
u
(
R
i
j
?
r
i
j
)
Ba=\sum_{i=1}^n{\sum_{j=1}^m{\left( R_{ij}-r_{ij} \right) u\left( R_{ij}-r_{ij} \right)}}
Ba=i=1∑n?j=1∑m?(Rij??rij?)u(Rij??rij?)
S
a
=
∑
i
=
1
n
(
Z
i
?
Z
ˉ
)
/
(
n
?
1
)
Sa=\sqrt{\sum_{i=1}^n{\left( Zi-\bar{Z} \right)}/\left( n-1 \right)}
Sa=i=1∑n?(Zi?Zˉ)/(n?1)?
??上式中,圖片為Zi的均值,u是單位階躍函數(shù),其作用是當(dāng)取值大于0時,值為1;取值小于0時,值為0。R是求求取局部密度的窗口口徑,半徑的選取必須含盡量多的投影點,否則滑動的平均偏差將過大。
r
i
j
r_{ij}
rij?的距離公式為:
r
i
j
=
Z
i
?
Z
j
r_{ij}=Z_i-Z_j
rij?=Zi??Zj?。
4.對投影方向的優(yōu)化
??選用模擬退火算法對目標(biāo)函數(shù)進(jìn)行優(yōu)化,以使求取能反映原數(shù)據(jù)的最佳投影。
目標(biāo)函數(shù)設(shè)置為:
max
?
??
G
(
a
)
=
S
a
?
B
a
\max\text{\,\,}G\left( a \right) =Sa\cdot Ba
maxG(a)=Sa?Ba
s
t
.
{
a
>
0
∑
j
=
1
m
a
j
2
st.\left\{ \begin{array}{l} a>0\\ \sum_{j=1}^m{a_{j}^{2}}\\ \end{array} \right.
st.{a>0∑j=1m?aj2??
??模擬退火基本原理是將高溫粒子緩慢自然冷卻,最終在特定的溫度下達(dá)到熱平衡,且能達(dá)到最低能量狀態(tài)E(i)。E(i)遵循以下規(guī)則。
1)若E(i)≥E(j),則接受該狀態(tài)被下一狀態(tài)轉(zhuǎn)化
2)若E(i)<E(j),則該狀態(tài)有一定概率被接受,概率為:
μ
=
E
(
i
)
?
E
(
j
)
K
T
\mu =\frac{E\left( i \right) -E\left( j \right)}{KT}
μ=KTE(i)?E(j)?
其中,K為波爾茲曼常數(shù),T為粒子的溫度。
基于此規(guī)則,目標(biāo)函數(shù)被模擬退火算法轉(zhuǎn)換為:
{
y
1
=
s
q
r
t
(
b
2
s
u
m
b
2
)
?
b
為
(
0
,
1
)
隨機數(shù)
f
o
r
?
k
=
1
:
n
??
b
(
k
)
=
r
a
n
d
(
)
?產(chǎn)生新解
P
=
{
1
exp
?
(
d
e
l
t
a
?
e
/
T
)
d
e
l
t
a
?
e
>
0
d
e
l
t
a
?
e
≤
0
T
0
=
q
?
T
0
?
\left\{ \begin{array}{l} y_1=sqrt\left( \frac{b_2}{sumb_2} \right) \ b\text{為}\left( 0,1 \right) \text{隨機數(shù)}\\ for\ k=1:n\ \ b\left( k \right) =rand\left( \right) \ \text{產(chǎn)生新解}\\ P=\left\{ \begin{array}{l} 1\\ \exp \left( delta-e/T \right)\\ \end{array}\begin{array}{c} delta-e>0\\ delta-e\le 0\\ \end{array} \right.\\ T_0=q\cdot T_0\\ \end{array} \right. \
?
?
??y1?=sqrt(sumb2?b2??)?b為(0,1)隨機數(shù)for?k=1:n??b(k)=rand()?產(chǎn)生新解P={1exp(delta?e/T)?delta?e>0delta?e≤0?T0?=q?T0???
5.求解投影的評價值
投影評價值:
Z
i
?
=
∑
j
=
1
m
a
j
?
?
x
i
j
Z_{i}^{*}=\sum_{j=1}^m{a_{j}^{*}\cdot x_{ij}}
Zi??=j=1∑m?aj???xij?文章來源:http://www.zghlxwxcb.cn/news/detail-678529.html
四、代碼
clear
clc
%導(dǎo)入數(shù)據(jù),每列為指標(biāo),每行為樣本數(shù)據(jù),計算每個樣本投影評價值
x=[0.81 0.00 0.37 0.00 0.15 0.00 0.97
0.14 0.49 0.00 1.00 1.00 0.59 0.97
0.57 0.43 0.11 0.97 0.00 0.73 0.83
1.00 0.40 0.69 0.50 0.88 1.00 0.60
0.73 0.26 1.00 0.00 0.88 1.00 0.63
0.00 0.74 0.29 0.32 0.45 1.00 0.00
0.84 0.46 0.26 0.71 0.97 0.64 0.50
0.11 1.00 0.37 0.06 0.39 0.50 0.73
0.27 0.09 0.49 0.29 0.94 0.86 0.40
0.70 0.26 0.69 0.38 0.18 0.45 1.00 ];
%矩陣維度計算,目的在于方便后面的計算
[a,b]=size(x);
disp('指標(biāo)類型:正向指標(biāo)為1,負(fù)向指標(biāo)為2,中心指標(biāo)為3,區(qū)間指標(biāo)為4')
disp('如第一個指標(biāo)為區(qū)間指標(biāo),第二個為負(fù)向指標(biāo),第三個為正向指標(biāo),輸入[4,2,1]')
ank=input('請輸入指標(biāo)類型');
max1 = max(x);
min1 = min(x);
%這里的最大最小為什么要乘以個0.98和0.02呢,這里小編直接說結(jié)果把說下吧,
%如果不分別乘以0.98和0.02,那么最終的r矩陣可能會出現(xiàn)0,從而干擾結(jié)果
%這里嚴(yán)格意義上不能稱為歸一化,因為最后結(jié)果不再01之間
%每種歸一化方法都是論文的不同點(創(chuàng)新點)
%這里有其他的歸一化方法,想了解可以聯(lián)系我(QQ:2892053776)
for i=1:b
if ank(i)==1
x(:,i)=(0.98*max1(i)-x(:,i))/(0.98*max1(i)-0.02*min1(i));
elseif ank(i)==2
x(:,i)=(x(:,i)-0.02*min1(i))/(0.98*max1(i)-0.02*min1(i));
elseif ank(i)==3
best=input(['請輸入第',i,'個指標(biāo)的最優(yōu)值']);
M = 0.98*max(abs(x(:,i)-best));
x(:,i) = 1 - abs(x(:,i)-best) / M;
else
best=input(['請輸入第',i,'個指標(biāo)的最優(yōu)區(qū)間,如區(qū)間上限為2,下限為1則輸入:[1,2]']);
a=best(1);b=best(2);
M = 0.98*max([a-min(x(:,i)),max(x(:,i))-b]);
for j = 1: a
if x(j,i) < a
x(j,i) = 1-(0.02*a-x(j,i))/M;
elseif x(j,i) > b
x(j,i) = 1-(x(j,i)-0.98*b)/M;
else
x(j,i) = 1;
end
end
end
end
tic
for k=1:a
%退火尋找最優(yōu)投影方向
temperature=100;%初始溫度
iter=100;%迭代次數(shù)
L=1;%用于記錄迭代的次數(shù)
n=size(x,2);%指標(biāo)個數(shù)
c=suiji(n);%隨機生成初始值,在遺傳算法中就相當(dāng)于初始種群
p=c;
y=Target(x,c);
while temperature>0.01
for i=L:iter
c1=suiji(n);%這里為什么還要隨機呢,目的在于避免算法陷入局部最優(yōu)值這一缺陷
y1=Target(x,c1);%計算目標(biāo)函數(shù)值
delta_e=y1-y;
if delta_e>0
y=y1;
p=c1;
else
if exp(delta_e/temperature)>rand()
y=y1;
p=c1;
end
end
end
L=L+1;
temperature=temperature*0.99;
end
w(k)=y;
e(k,:)=p;
end
toc
%求得各樣本投影值 r
c=e(find(w==max(w)),:)%c記錄的是每個指標(biāo)的權(quán)重值,也就是通過對數(shù)據(jù)分析,賦予了指標(biāo)一個參比性的一個值
%這里的find(w==max(w)是什么意思呢,是找到w矩陣中最后一個最大值的位置,目的也是為了尋找最優(yōu)的結(jié)果
%e記錄的是經(jīng)L次迭代生成的一個參比性值的矩陣
for i=1:a
for j=1:b
r(i,j)=sum(x(i,j).*c(j));%每行每列的評價值
end
end
sum(r,2)%各樣本評價值
function a=suiji(n)
%初始化,隨機給予每個指標(biāo)任意權(quán)重
for k=1:n
b(k)=rand();
end
temp=sum(b.^2);
a=sqrt((b.^2)./temp);
end
function y=Target(x,a)
%計算目標(biāo)函數(shù)值,見模型步驟3
[m,n]=size(x);
for i=1:m
s1=0;
for j=1:n
s1=s1+a(j)*x(i,j);
end
z(i)=s1;
end
Sz=std(z);%方差
R=0.1*Sz;
s3=0;
for i=1:m
for j=1:m
r=abs(z(i)-z(j));
t=R-r;
if t>=0
u=1;
else
u=0;
end
s3=s3+t*u;
end
end
Dz=s3;
y=Sz*Dz;
end
總結(jié)
??以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了模擬退火優(yōu)化投影尋蹤的使用,而投影尋蹤是可以使用其他優(yōu)化算法去結(jié)合使用的,理論上效果其實應(yīng)該都差不多,但是實際運行結(jié)果卻是千差萬別,迭代次數(shù)不一樣,結(jié)果也會有很大區(qū)別,大家有興趣可以試一下。
??本文撰寫借鑒了很多網(wǎng)上的博客的作品,查重照寫肯定是過不了的,所以要抄襲慎重。文章來源地址http://www.zghlxwxcb.cn/news/detail-678529.html
到了這里,關(guān)于數(shù)學(xué)建模——模擬退火優(yōu)化投影尋蹤的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!