MATLAB熵权法计算权重

在信息论中,熵是对不确定性的一种度量。不确定性越大,熵就越大,包含的信息量越大;不确定性越小,熵就越小,包含的信息量就越小。

根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大。比如样本数据在某指标下取值都相等,则该指标对总体评价的影响为0,权值为0.

熵权法是一种客观赋权法,因为它仅依赖于数据本身的离散性。

熵权法的思想是:变量数值变化越大,变异程度越大,则其权重应该更大;反之权重则越小。这是较为合理的。

二、MATLAB实现

(1)方法一

前提:输入的矩阵已经归一化到0.001-0.999之间(这里不是0-1是因为0-1会出问题)

%B矩阵中的每一列均已经归一化至0-1 B(B==0)=0.0001; B(B==1)=0.9999; [n,m]=size(B); % n个样本, m个指标 %%计算第j个指标下,第i个样本占该指标的比重p(i,j) for i=1:n for j=1:m p(i,j)=B(i,j)/sum(B(:,j)); end end %%计算第j个指标的熵值e(j) k=1/log(n); for j=1:m e(j)=-k*sum(p(:,j).*log(p(:,j))); end d=ones(1,m)-e; %计算信息熵冗余度 w=d./sum(d); %求权值w 主要需要的结果是这个 s=100*w*B\'; %求综合得分

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfpj.html