• 【2024_CUMCM】熵权TOPSIS方法


    目录

    引言

    度量信息量

    例子

    衡量事情可能性的大小——概率

    信息熵

    信息熵越大信息量越小

    熵权法计算步骤

    判断矩阵是否有非负数

    计算j项指标下第i个样本所占的比重 

    计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权 

    熵权法原理


    引言

    熵权topsis法其实应该称为基于熵权法对于topsis模型的修正

    前面我们学过层次分析法,层次分析法最大的缺点是判断矩阵的确定依赖于专家,如果专家的判断存在主观性的话,会对结果产生很大的影响。(主观性太强)

    所以,相对于层次分析法,熵权法是一种较为客观的方法

    依据的原理: 指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低
    (客观 = 数据本身就可以告诉我们权重) 

    度量信息量

    例子

    例如,A平时成绩很差,B平时成绩特别好,在高考的时候,A和B都考上了985,那此时人们对A的惊讶程度会远大于B,那此时也说明了A的行为信息量要远大于B

    也就是说:

    • 越有可能发生的事情信息量越少
    • 越不可能发生的事情信息量越多 
    • (注:这是站在现在看未来) 

    衡量事情可能性的大小——概率

    根据上述可画出图1,然后建立方程

    信息熵

    概率乘以信息量再相加,有点类似我们学过的加权平均数 

    信息熵的本质是对信息量的期望值

    信息熵越大信息量越小

    我们上面说信息熵是信息量的均值,所以很多人看到后会认为是信息熵越大信息量越大,其实不然,解释如下:

    在前面说度量信息量时,我特地标注了我们是站在现在看未来,所以从现在看,A的成绩很差,那如果未来他考上了985,那信息量就很大。

    这里也一样,信息熵越大,我现在拥有的信息量就越多,但是我未来能够获得的信息量就越少,所以应该说信息熵越大信息量越小

    站在现有的角度看未来

    熵权法计算步骤

    判断矩阵是否有非负数

    如果有非负数,需将其化到标准区间,后面计算概率时需保证每一个都是非负数

    1. disp('原来标准化得到的Z矩阵中存在负数,所以需要对X重新标准化')
    2. for i = 1:n
    3. for j = 1:m
    4. Z(i,j) = [X(i,j) - min(X(:,j))] / [max(X(:,j)) - min(X(:,j))];
    5. end
    6. end

    计算j项指标下第i个样本所占的比重 

    将其看作相对熵计算中用到的概率

    计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权 

    信息效用值 = 1 - 信息熵   ——归一化——>   熵权


    熵权法原理

     

    可以用指标的标准差来衡量样本的变异程度,指标的标准差越大,其信息熵越小。  

     下图是蒙特卡罗方法

            蒙特卡洛模拟是一种统计模拟方法,它利用随机数或伪随机数来解决计算问题,尤其是那些难以用解析方法直接解决的问题。

    随机生成一组有 30 个样本且位于区间 [0,1]上的数据,计算其信息熵和标准差; 将上述步骤重复100 次,我们能够得到 100组信息熵和标准差的取值,将其绘制成散点图  

     

    1. n = 30; % 样本个数
    2. N = 100; % 试验的次数
    3. result = zeros(N,2); % 初始化用来保存信息熵和标准差的矩阵,横坐标表示信息熵,纵坐标表示标准差
    4. for i = 1:N
    5. x = rand(n,1); % 随机生成n个位于区间[0,1]上面的样本 (随机数生成是视频第四讲的内容)
    6. p = x / sum(x);
    7. e = -sum(p .* mylog(p)) / log(n); % 计算信息熵
    8. disp(e)
    9. sd = std(x); % 计算标准差(描述性统计是视频第五讲的内容)
    10. disp(sd)
    11. result(i,1) = e;
    12. result(i,2) = sd;
    13. end
    14. plot(result(:,1),result(:,2),'o') %(画图是视频第三讲的内容)
    15. xlabel('信息熵')
    16. ylabel('标准差')
    17. [r,p] = corrcoef(result(:,1),result(:,2))

    可以看出标准差越大,变异程度越大,反映出来的信息量就越大,信息熵越小

  • 相关阅读:
    空间曲线方程和空间曲面方程
    Neodynamic Barcode Professional for Windows Forms 14.0
    Pthread 并发编程(三)——深入理解线程取消机制
    linux C/C++ socket编程
    统计学中,Z值与T值怎么换算
    MPLS综合实验
    网络攻击近在咫尺:数据加密与SSL成为信息安全之盾
    JavaIO详解(磁盘操作、字节操作、字符操作、对象操作、网络操作、NIO)
    SQLAlchemy学习-2.query() 查询数据
    【Unity】加速Unity编辑器模式启动时间
  • 原文地址:https://blog.csdn.net/2302_81240667/article/details/140363167