目录
计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权
熵权topsis法其实应该称为基于熵权法对于topsis模型的修正
前面我们学过层次分析法,层次分析法最大的缺点是判断矩阵的确定依赖于专家,如果专家的判断存在主观性的话,会对结果产生很大的影响。(主观性太强)
所以,相对于层次分析法,熵权法是一种较为客观的方法
依据的原理: 指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低(客观 = 数据本身就可以告诉我们权重)
例如,A平时成绩很差,B平时成绩特别好,在高考的时候,A和B都考上了985,那此时人们对A的惊讶程度会远大于B,那此时也说明了A的行为信息量要远大于B
也就是说:
根据上述可画出图1,然后建立方程
概率乘以信息量再相加,有点类似我们学过的加权平均数
信息熵的本质是对信息量的期望值
我们上面说信息熵是信息量的均值,所以很多人看到后会认为是信息熵越大信息量越大,其实不然,解释如下:
在前面说度量信息量时,我特地标注了我们是站在现在看未来,所以从现在看,A的成绩很差,那如果未来他考上了985,那信息量就很大。
这里也一样,信息熵越大,我现在拥有的信息量就越多,但是我未来能够获得的信息量就越少,所以应该说信息熵越大信息量越小
站在现有的角度看未来
如果有非负数,需将其化到标准区间,后面计算概率时需保证每一个都是非负数
- disp('原来标准化得到的Z矩阵中存在负数,所以需要对X重新标准化')
- for i = 1:n
- for j = 1:m
- Z(i,j) = [X(i,j) - min(X(:,j))] / [max(X(:,j)) - min(X(:,j))];
- end
- end
将其看作相对熵计算中用到的概率
信息效用值 = 1 - 信息熵 ——归一化——> 熵权
可以用指标的标准差来衡量样本的变异程度,指标的标准差越大,其信息熵越小。
下图是蒙特卡罗方法
蒙特卡洛模拟是一种统计模拟方法,它利用随机数或伪随机数来解决计算问题,尤其是那些难以用解析方法直接解决的问题。
随机生成一组有 30 个样本且位于区间 [0,1]上的数据,计算其信息熵和标准差; 将上述步骤重复100 次,我们能够得到 100组信息熵和标准差的取值,将其绘制成散点图
- n = 30; % 样本个数
- N = 100; % 试验的次数
- result = zeros(N,2); % 初始化用来保存信息熵和标准差的矩阵,横坐标表示信息熵,纵坐标表示标准差
- for i = 1:N
- x = rand(n,1); % 随机生成n个位于区间[0,1]上面的样本 (随机数生成是视频第四讲的内容)
- p = x / sum(x);
- e = -sum(p .* mylog(p)) / log(n); % 计算信息熵
- disp(e)
- sd = std(x); % 计算标准差(描述性统计是视频第五讲的内容)
- disp(sd)
- result(i,1) = e;
- result(i,2) = sd;
- end
-
- plot(result(:,1),result(:,2),'o') %(画图是视频第三讲的内容)
- xlabel('信息熵')
- ylabel('标准差')
- [r,p] = corrcoef(result(:,1),result(:,2))
可以看出标准差越大,变异程度越大,反映出来的信息量就越大,信息熵越小