信息扩散原理及实现(Matlab)
信息扩散方法是为了弥补信息不足而考虑优化利用样本模糊信息的一种对样本进行集值化的模糊数学处理方法。并通过Matlab进行实现。
信息扩散方法是为了弥补信息不足而考虑优化利用样本模糊信息的一种对样本进行集值化的模糊数学处理方法。最原始的形式是信息分配方法;最简单的信息扩散函数是正态扩散函数。信息扩散方法可以将一个分明值的样本点,变成一个模糊集。或者说,是把单值样本点,变成集值样本点。
信息扩散原理:
已知论域 UUU:
U={u1,u2,...,um} U= \left\{ u_1, u_2, ..., u_m \right\} U={u1,u2,...,um}
一个单值观测样本点 xxx 依f(uj)=1h2πe−(x−uj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}f(uj)=h2π1e−2h2(x−uj)2可以将其所携带的信息扩散给 UUU 中的所有点。
在 f(uj)=1h2πe−(x−uj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}f(uj)=h2π1e−2h2(x−uj)2 中,hhh 为扩散系数,可根据样本中的最大值 bbb 和最小值 aaa 及样本点个数 nnn 来确定。
令
s=max1≤j≤m{f(uj)} s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\} s=1≤j≤mmax{f(uj)}
则
μx(uj)=f(uj)s \mu_x(u_j)=\frac{f(u_j)}{s} μx(uj)=sf(uj)
就将单值样本点 xxx 变成 μx(uj)\mu_x(u_j)μx(uj) 为隶属函数的模糊子集 χ\chiχ。
在进行风险评估时,为了使每一个集值样本点的地位均相同,需对s=max1≤j≤m{f(uj)}s=\max_{1\leq j \leq m} \left\{ f(u_j)\right\}s=1≤j≤mmax{f(uj)}作适当的调整,所得的模糊子集也不再是μx(uj)=f(uj)s\mu_x(u_j)=\frac{f(u_j)}{s}μx(uj)=sf(uj)中的最大隶属度为 111 的正规化模糊子集。
设对第 iii 个样本点 xix_ixi 按照f(uj)=1h2πe−(x−uj)22h2f(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}}f(uj)=h2π1e−2h2(x−uj)2进行扩散,得
fi(uj)=1h2πe−(x−uj)22h2 f_i(u_j)=\frac{1}{h\sqrt{2\pi}}e^{-\frac{(x-u_j)^2}{2h^2}} fi(uj)=h2π1e−2h2(x−uj)2
令
Ci=∑j=1mfi(uj) C_i=\sum_{j=1}^m f_i(u_j) Ci=j=1∑mfi(uj)
相应的模糊子集的隶属函数是
μx(uj)=fi(uj)Ci \mu_x(u_j)=\frac{f_i(u_j)}{C_i} μx(uj)=Cifi(uj)
称 μx(uj)\mu_x(u_j)μx(uj) 为样本点 xix_ixi 的归一化信息分布。
令
q(uj)=∑i=1nμxi(uj) q(u_j)=\sum_{i=1}^n \mu_{x_i}(u_j) q(uj)=i=1∑nμxi(uj)
再令
Q=∑j=1mq(uj) Q=\sum_{j=1}^m q(u_j) Q=j=1∑mq(uj)
QQQ 事实上就是各 uju_juj 点上样本点数的总和,从理论上讲,必有 Q=nQ=nQ=n(计算中可能存在一些误差)。
p(uj)=q(uj)Q p(u_j)=\frac{q(u_j)}{Q} p(uj)=Qq(uj)
即样本点落在 uju_juj 处的频率值,可以作为概率的估计值。超越 uju_juj 的概率值为
P(uj)=∑k=jmp(uk) P(u_j)=\sum_{k=j}^m p(u_k) P(uj)=k=j∑mp(uk)
P(uj)P(u_j)P(uj) 即为超越概率估计值。
例:
XXX === {\left \{\right.{ −2.5875,-2.5875,−2.5875, −2.5621,-2.5621,−2.5621, −1.1896,-1.1896,−1.1896, −1.1882,-1.1882,−1.1882, −1.2074,-1.2074,−1.2074, −1.7865,-1.7865,−1.7865, −1.0498,-1.0498,−1.0498, −2.0894,-2.0894,−2.0894, −1.6859,-1.6859,−1.6859, −1.3128,-1.3128,−1.3128, −1.1729,-1.1729,−1.1729, −1.9419,-1.9419,−1.9419, −1.6125,-1.6125,−1.6125, −1.9118,-1.9118,−1.9118, −2.5795,-2.5795,−2.5795, −1.2603-1.2603−1.2603 }\left.\right \}};
试以U={u1,u2,…,u7}U = \left\{ u_1, u_2, …, u_7 \right\}U={u1,u2,…,u7} === {−3,−2.5,−2,…,0}\left\{ -3, -2.5, -2, …, 0 \right\}{−3,−2.5,−2,…,0}为论域;
以h=2.6851∗−1.0498+2.587516−1=0.2753h = 2.6851 * \frac{-1.0498 + 2.5875}{16 - 1} = 0.2753h=2.6851∗16−1−1.0498+2.5875=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 |
更多推荐



所有评论(0)