【新书节选】熵权法确定权重及Matlab&R实现
发布网友
发布时间:2024-10-19 08:38
我来回答
共1个回答
热心网友
时间:2024-10-25 00:36
本书是我在机械工业出版社出版的《数学建模:算法与编程实现》新书的原始草稿,面向数学建模入门学习者,解决市面上的数学建模书普遍存在的问题。
本书将编程融入算法,贯彻案例导向的理念,详细讲解算法、案例、编程实现的技术细节,并提炼出建模方法的应用。
欢迎加入本书读者群(QQ:716320758)学习交流。
本文节选自第IV篇评价模型,第8章经典评价模型,第2节主客观赋权法一、基本原理。
在信息论中,熵是对不确定性的度量。不确定性越大,熵越大,信息量越大;不确定性越小,熵越小,信息量越小。
根据熵的特性,可以计算熵值来判断事件的随机性和无序程度,以及指标的离散程度。指标的离散程度越大,对综合评价的影响(权重)越大。
熵权法是一种客观赋权法,仅依赖于数据本身的离散性。
二、熵值法步骤
1. 对[公式]个样本,[公式]个指标,则[公式]为第[公式]个样本的第[公式]个指标的数值([公式])。
2. 指标的归一化处理:异质指标同质化
由于各项指标的计量单位不统一,需进行标准化处理,将指标的绝对值转化为相对值,解决不同质指标值的同质化问题。
正向指标和负向指标数值代表的含义不同,需采用不同算法进行数据标准化处理。
为了方便起见,归一化后的数据[公式]仍记为[公式]。
3. 计算第[公式]项指标下第[公式]个样本值占该指标的比重:
[公式]
4. 计算第[公式]项指标的熵值:
[公式]
其中,[公式].满足[公式]。
5. 计算信息熵冗余度(差异):
[公式]
6. 计算各项指标的权重:
[公式]
7. 计算各样本的综合得分:
[公式]
其中,[公式]为标准化后的数据。
三、Matlab实现
按上述算法步骤,编写MATLAB函数实现熵权法。
注意,熵权法中涉及[公式]运算,所以归一化不能出现0和1,为此,把[0, 1]稍微收缩一下到[0.002, 0.996]。
MATLAB代码:
先定义归一化函数:
再定义熵权法函数:
现有数据shang_datas.mat,为2014年31个省份的就业与劳动保障数据,包含5个指标:社会养老保险参保率、医疗保险参保率、失业保险参保率、工伤保险参保率、工伤事故发生率,其中第5个指标为负向指标。
测试shang函数:
运行结果:
附R语言实现:
测试函数:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。