信息擴散原理及實現(matlab)

信息擴散方法是爲了彌補信息不足而考慮優化利用樣本模糊信息的一種對樣本進行集值化的模糊數學處理方法。最原始的形式是信息分配方法;最簡單的信息擴散函數是正態擴散函數。信息擴散方法可以將一個分明值的樣本點,變成一個模糊集。或者說,是把單值樣本點,變成集值樣本點。

信息擴散原理:
已知論域 UU
U={u1,u2,...,um} U= \left\{ u_1, u_2, ..., u_m \right\}

一個單值觀測樣本點 xxf(uj)=1h2πe(xuj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}可以將其所攜帶的信息擴散給 UU 中的所有點。

f(uj)=1h2πe(xuj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} 中,hh 爲擴散係數,可根據樣本中的最大值 bb 和最小值 aa 及樣本點個數 nn 來確定。

s=max1jm{f(uj)} s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\}


μx(uj)=f(uj)s \mu_x(u_j)=\frac{f(u_j)}{s}

就將單值樣本點 xx 變成 μx(uj)\mu_x(u_j) 爲隸屬函數的模糊子集 χ\chi
在進行風險評估時,爲了使每一個集值樣本點的地位均相同,需對s=max1jm{f(uj)}s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\}作適當的調整,所得的模糊子集也不再是μx(uj)=f(uj)s\mu_x(u_j)=\frac{f(u_j)}{s}中的最大隸屬度爲 11 的正規化模糊子集。
設對第 ii 個樣本點 xix_i 按照f(uj)=1h2πe(xuj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}進行擴散,得
fi(uj)=1h2πe(xuj)22h2 f_i(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}


Ci=j=1mfi(uj) C_i=\sum_{j=1}^m f_i(u_j)

相應的模糊子集的隸屬函數是
μx(uj)=fi(uj)Ci \mu_x(u_j)=\frac{f_i(u_j)}{C_i}

μx(uj)\mu_x(u_j) 爲樣本點 xix_i 的歸一化信息分佈。

q(uj)=i=1nμxi(uj) q(u_j)=\sum_{i=1}^n \mu_{x_i}(u_j)

再令
Q=j=1mq(uj) Q=\sum_{j=1}^m q(u_j)

QQ 事實上就是各 uju_j 點上樣本點數的總和,從理論上講,必有 Q=nQ=n(計算中可能存在一些誤差)。
p(uj)=q(uj)Q p(u_j)=\frac{q(u_j)}{Q}

即樣本點落在 uju_j 處的頻率值,可以作爲概率的估計值。超越 uju_j 的概率值爲
P(uj)=k=jmp(uk) P(u_j)=\sum_{k=j}^m p(u_k)

P(uj)P(u_j) 即爲超越概率估計值。

例:
XX == {\left \{\right. 2.5875,-2.5875, 2.5621,-2.5621, 1.1896,-1.1896, 1.1882,-1.1882, 1.2074,-1.2074, 1.7865,-1.7865, 1.0498,-1.0498, 2.0894,-2.0894, 1.6859,-1.6859, 1.3128,-1.3128, 1.1729,-1.1729, 1.9419,-1.9419, 1.6125,-1.6125, 1.9118,-1.9118, 2.5795,-2.5795, 1.2603-1.2603 }\left.\right \}
試以U={u1,u2,,u7}U = \left\{ u_1, u_2, …, u_7 \right\} == {3,2.5,2,,0}\left\{ -3, -2.5, -2, …, 0 \right\}爲論域;
h=2.68511.0498+2.5875161=0.2753h = 2.6851 * \frac{-1.0498 + 2.5875}{16 - 1} = 0.2753爲擴散系統,使用正態擴散方法進行估計
matlab代碼如下:

x = [-2.5875, -2.5621, -1.1896, -1.1882, -1.2074, -1.7865, -1.0498, -2.0894, -1.6859, -1.3128, -1.1729, -1.9419, -1.6125, -1.9118, -2.5795, -1.2603];
u = [-3, -2.5, -2, -1.5, -1, -0.5, 0];

xlength = length(x);
ulength = length(u);
maxX = max(x);
minX = min(x);

if xlength == 5
    h = 0.8146 * (maxX - minX);
elseif xlength == 6
    h = 0.5690 * (maxX - minX);
elseif xlength == 7
    h = 0.4560 * (maxX - minX);
elseif xlength == 8
    h = 0.3860 * (maxX - minX);
elseif xlength == 9
    h = 0.3362 * (maxX - minX);
elseif xlength == 10
    h = 0.2986 * (maxX - minX);
elseif xlength > 10
    h = 2.6851 * (maxX - minX) / (xlength - 1);
else
    h = 0;
end

f = zeros(xlength, ulength);
C = zeros(xlength, 1);
q = zeros(ulength, 1);
for i = 1 : xlength
    for j = 1 : ulength
        f(i, j) = 1.0 / (h * sqrt(2 * pi)) * exp(-(x(i) - u(j)) ^ 2 / (2 * h ^ 2));
        C(i) = C(i) + f(i, j);
    end
end

for i = 1 : xlength
    for j = 1 : ulength
        f(i, j) = f(i, j) / C(i);
        q(j) = q(j) + f(i, j);
    end
end
Q = sum(q);
p = q ./ Q;
P = zeros(ulength, 1);
for i = 1 : ulength
    for j = i : ulength
        P(i) = P(i) + p(j);
    end
end

輸出結果爲:

u -3 -2.5 -2 -1.5 -1 -0.5 0
p 0.0419 0.1583 0.2251 0.3114 0.2674 0.0157 4.9511e-05
P 1 0.9581 0.7999 0.5748 0.2634 0.0157 4.9511e-05
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章