您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Matlab学习系列19.-熵值法确定权重
19.熵值法确定权重一、基本原理在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。二、熵值法步骤1.选取n个国家,m个指标,则xij为第i个国家的第j个指标的数值(i=1,2…,n;j=1,2,…,m);2.指标的归一化处理:异质指标同质化由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令ijijxx,从而解决各项不同质指标值的同质化问题。而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于高低指标我们用不同的算法进行数据标准化处理。其具体方法如下:正向指标:12'1212min{,,...,}max{,,...,}min{,,...,}ijjjnjijjjnjjjnjxxxxxxxxxxx负向指标:12'1212max{,,...,}max{,,...,}min{,,...,}jjnjijijjjnjjjnjxxxxxxxxxxx则'ijx为第i个国家的第j个指标的数值(i=1,2…,n;j=1,2,…,m)。为了方便起见,归一化后的数据'ijx仍记为xij;3.计算第j项指标下第i个国家占该指标的比重:1,1,2...,,1,2...,ijijnijixpinjmx4.计算第j项指标的熵值:1ln()njijijiekpp其中,k=1/ln(n)0.满足ej≥0;5.计算信息熵冗余度:1jjde;6.计算各项指标的权值:1,1,2,...,jjmjjdwjmd7.计算各国家的综合得分:1,1,2,...mijijjswpin三、Matlab实现按上述算法步骤,编写Matlab函数:shang.mfunction[s,w]=shang(x)%函数shang(),实现用熵值法求各指标(列)的权重及各数据行的得分%x为原始数据矩阵,一行代表一个国家,每列对应一个指标%s返回各行得分,w返回各列权重[n,m]=size(x);%n=23个国家,m=5个指标%%数据的归一化处理%Matlab2010b,2011a,b版本都有bug,需如下处理.其它版本直接用[X,ps]=mapminmax(x',0,1);即可[X,ps]=mapminmax(x');ps.ymin=0.002;%归一化后的最小值ps.ymax=0.996;%归一化后的最大值ps.yrange=ps.ymax-ps.ymin;%归一化后的极差,若不调整该值,则逆运算会出错X=mapminmax(x',ps);%mapminmax('reverse',xx,ps);%反归一化,回到原数据X=X';%为归一化后的数据,23行(国家),5列(指标)%%计算第j个指标下,第i个记录占该指标的比重p(i,j)fori=1:nforj=1:mp(i,j)=X(i,j)/sum(X(:,j));endend%%计算第j个指标的熵值e(j)k=1/log(n);forj=1:me(j)=-k*sum(p(:,j).*log(p(:,j)));endd=ones(1,m)-e;%计算信息熵冗余度w=d./sum(d);%求权值ws=w*p';%求综合得分程序测试,现有数据如下:(存为data.txt)114.61.10.7185.034655.30.960.469.0300132.40.970.5473.0410152.11.040.4977.0433103.50.960.6667.038581.01.080.5496.0336179.30.880.5989.044629.80.830.49120.028992.71.150.44154.0300248.60.790.5147.0483115.00.740.65252.045364.90.590.5167.0402163.60.850.58220.049595.71.020.48160.0384139.50.700.59217.047889.90.960.39105.031476.70.950.51162.0341121.80.830.60140.040142.11.080.47110.032678.50.890.4494.028077.81.190.5791.036490.00.950.4389.0301100.60.820.5983.0456执行代码:x=load('data.txt');%读入数据[s,w]=shang(x)运行结果:s=Columns1through90.04310.01030.03710.04040.03690.03220.05070.02290.0397Columns10through180.06930.08780.04660.08600.05030.08000.02340.04560.0536Columns19through230.02720.01810.03640.02020.0420w=0.16600.09810.17570.33480.2254
本文标题:Matlab学习系列19.-熵值法确定权重
链接地址:https://www.777doc.com/doc-4703713 .html