云模型的理解及Matlab实例

云模型基础知识

  • 云模型属于不确定性人工智能范畴,主要用于定性与定量之间的相互转换。自然界中的不确定性从属性角度来说主要有随机性和模糊性
  • 举一个简单的例子,形容一个人是高个子是一件相当模型的事情,因为无法确定身高达到多少算高个子。但可以这样说:身高2m的人,100%属于高个子的人;身高1.7m的人,55%属于高个子的人;身高1.5m的人,10%属于高个子的人(几乎不认为他是高个子)

论域

  • 本例中,高个子是个定性概念,可以理解为身高1.7m的人属于高个子(论域 U U U)的符合程度为0.55

隶属度/确定度

  • 例子中的1,0.55,0.1表示对应的身高属于高个子的隶属度或者确定度,用来度量“属于高个子”这种倾向的稳定程度

云/云滴

  • “云”是指其在论域上的一个分布,可以用联合概率的形式 ( x , μ ) (x,\mu) (x,μ)来类比。比如: x = 2 , μ = 1.0 x=2,\mu=1.0 x=2,μ=1.0表示身高2m的人,100%属于高个子的人
  • 简单来说就是云就是一个种群,一个分布,而云滴就是其中的一个数据,一个具体的点,而这个点出现在这个分布中是有一定的概率的

数字特征

  • 期望:云滴在论域空间分布的期望,是最能够代表定性概念的点值,反映了这个概念的云滴群的云重心,一般用符号Ex表示
  • 熵:不确定性程度,由离散程度和模糊程度共同决定,代表云滴分布的不确定性和模糊性,一般用符号En表示
  • 超熵:用来度量熵的不确定性,亦即熵的熵。超熵越大,说明模型的不确定性越大,云的厚度越大,一般用符号He表示

云模型的理解及Matlab实例_第1张图片

两种发生器

  • 云有两种发生器,正向云发生器和逆向云发生器,分别用来生成足够的云滴和计算云滴的云数字特征(Ex,En,He)

正向云发生器的触发机制

  1. 生成以En为期望,以He2为方差的正态随机数En’
  2. 生成以Ex为期望,以En’2为方差的正态随机数x
  3. 计算隶属度即确定度 μ = e x p ( − ( x − E x ) 2 2 E n ′ 2 ) \mu=exp(-\frac{(x-Ex)^2}{2En^{'2}}) μ=exp(2En2(xEx)2),则 ( x , μ ) (x,\mu) (x,μ)便是相对于论域 U U U的一个云滴
  4. 重复1-3步骤,直到生成足够的云滴

逆向云发生器的触发机制

假设样本 x x x的容量为 n n n

  1. 计算样本均值 X ˉ \bar{X} Xˉ和方差 S 2 S^2 S2
  2. E x = X ˉ Ex=\bar{X} Ex=Xˉ
  3. E n = π 2 × 1 n ∑ 1 n ∣ x − E x ∣ En=\sqrt{\frac{\pi}{2}}\times \frac{1}{n}\sum_1^n|x-Ex| En=2π ×n11nxEx
  4. H e = S 2 − E n 2 He=\sqrt{S^2-En^2} He=S2En2

云模型案例及MATLAB实现

题目

  • 下表为4组选手的成绩,通过分析选出一位发挥最出色的选手

云模型的理解及Matlab实例_第2张图片

分析过程

  1. 发挥出色是一个定性概念,可以认为是论域。表中给出的是定量数据,所以要完成从定量到定性的转变
  2. 由样本数据可以先得到云模型的三个数字特征
  3. 再由数字特征得到更多云滴,行成云图
  4. 比较4组云图的分布

Matlab实现及结果

function [x,y,Ex,En,He] = cloud_transform(y_spor,n)
 % x 表示云滴
 % y 表示隶属度(这里是“钟形”隶属度),意义是度量倾向的稳定程度
 % Ex 云模型的数字特征,表示期望
 % En 云模型的数字特征,表示熵
 % He 云模型的数字特征,表示超熵
 
 % 通过统计数据样本计算云模型的数字特征
 Ex = mean(y_spor);
 En = mean(abs(y_spor-Ex)).*sqrt(pi./2);
 He = sqrt(var(y_spor)-En.^2);

 % 通过云模型的数字特征还原更多的“云滴”
 for q = 1:n
     Enn = randn(1).*He + En ;%randn(n) 返回由标准正态分布的随机数组成的 n×n 矩阵
     x(q) = randn(1).*Enn + Ex ;
     y(q) = exp(-(x(q) - Ex).^2./(2 .* Enn.^2));
 end
 x;
 y;

% 以下是主函数cloud_main.m
clc;
clear all;
close all;
% 每幅图生成N个云滴
N = 1500;
% 射击成绩原始数据,这里数据按列存储所以要转置
Y = [9.5 10.3 10.1 8.1 
10.3 9.7 10.4 10.1 
10.6 8.6 9.2 10.0 
10.5 10.4 10.1 10.1 
10.9 9.8 10.0 10.1 
10.6 9.8 9.7 10.0 
10.4 10.5 10.6 10.3 
10.1 10.2 10.8 8.4 
9.3 10.2 9.6 10.0 
10.5 10.0 10.7 9.9];

for i = 1:size(Y,2)
    subplot(size(Y,2)/2,2,i)%subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区
    % 调用函数
    [x,y,Ex,En,He] = cloud_transform(Y(:,i),N);
    plot(x,y,'r.');
    xlabel('射击成绩分布/环');
    ylabel('确定度');
    title(strcat('第',num2str(i),'人射击云模型还原图谱'));
    % 控制坐标轴的范围
    % 统一坐标轴范围才会在云模型形态上具有可比性
    axis([8,12,0,1]);
end

image.png

结果分析

  1. 先看期望,只有4的期望小于10
  2. 再看熵(云滴分布的不确定程度),2和4的分布跨度较大,基本在8环和9环之间有很明显的分布倾向
  3. 最后看超熵(模型的不确定性程度),3的云滴凝聚抱合程度最高
  4. 综上分析,认为第3位射击手比赛最出色

你可能感兴趣的:(matlab)