基本原理

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

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

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

熵权法步骤

第一步:指标的归一化处理(异质指标同质化):由于各项指标的计量单位并不统一,因此在用他们计算综合指标前,先要进行标准化处理,即把指标的绝对值转化为相对值,从而解决各项不同质指标值的同质化问题。

另外,正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于正向、负向指标需要采用不同的算法进行数据标准化处理。

正向指标:xij′=xij−min⁡{x1j,…,xnj}max⁡{x1j,…,xrj}−min⁡{x1j,…,xnj}x_{i j}^{\prime}=\frac{x_{i j}-\min \left\{x_{1 j}, \ldots, x_{n j}\right\}}{\max \left\{x_{1 j}, \ldots, x_{r j}\right\}-\min \left\{x_{1 j}, \ldots, x_{n j}\right\}}xij′​=max{x1j​,…,xrj​}−min{x1j​,…,xnj​}xij​−min{x1j​,…,xnj​}​

负向指标:xij′=max⁡{x1j,…,xnj}−xijmax⁡{x1j,…,xrj}−min⁡{x1j,…,xnj}x_{i j}^{\prime}=\frac{\max \left\{x_{1 j}, \ldots, x_{n j}\right\}-x_{i j}}{\max \left\{x_{1 j}, \ldots, x_{r j}\right\}-\min \left\{x_{1 j}, \ldots, x_{n j}\right\}}xij′​=max{x1j​,…,xrj​}−min{x1j​,…,xnj​}max{x1j​,…,xnj​}−xij​​

第二步:计算第j项指标下第i个样本值占该指标的比重 pij=xij∑i=1nxij,i=1,⋯,n,j=1,⋯,mp_{i j}=\frac{x_{i j}}{\sum_{i=1}^{n} x_{i j}}, \quad i=1, \cdots, n, j=1, \cdots, mpij​=∑i=1n​xij​xij​​,i=1,⋯,n,j=1,⋯,m

第三步:计算第j项指标的熵值 ej=−k∑i=1npijln⁡(pij),j=1,⋯,me_{j}=-k \sum_{i=1}^{n} p_{i j} \ln \left(p_{i j}\right), \quad j=1, \cdots, mej​=−ki=1∑n​pij​ln(pij​),j=1,⋯,m 其中 k=1/ln⁡(n)>0k=1 / \ln (n)>0k=1/ln(n)>0 ,满足 ej≥0e_{j} \geq 0ej​≥0。

第四步:计算信息熵冗余度(差异) dj=1−ej,j=1,⋯,md_{j}=1-e_{j}, \quad j=1, \cdots, mdj​=1−ej​,j=1,⋯,m

第五步:计算各项指标的权重 wj=dj∑j=1mdj,j=1,⋯,mw_{j}=\frac{d_{j}}{\sum_{j=1}^{m} d_{j}}, \quad j=1, \cdots, mwj​=∑j=1m​dj​dj​​,j=1,⋯,m

第六步:计算各样本的综合得分 si=∑j=1mwjxij,i=1,⋯,ns_{i}=\sum_{j=1}^{m} w_{j} x_{i j}, \quad i=1, \cdots, nsi​=j=1∑m​wj​xij​,i=1,⋯,n 其中, xijx_{i j}xij​ 为标准化后的数据。

脚本实现

数据读入。

library(forecast)
library(XLConnect)
sourui <- read.csv("E:/R/operation/train.csv",header = T)

部分数据展现

索引列删除

sourui$案例 <- NULL

第一步:归一化处理。

min.max.norm <- function(x){(x-min(x))/(max(x)-min(x))
}max.min.norm <- function(x){(max(x)-x)/(max(x)-min(x))
}sourui_1 <- apply(sourui[,-c(7,11)],2,min.max.norm)  #正向指标
sourui_2 <- apply(sourui[,c(7,11)],2,max.min.norm)   #负向指标sourui_t <- cbind(sourui_1,sourui_2)

第二步:求出所有样本对指标Xj的贡献总量

first1 <- function(data)
{x <- c(data)for(i in 1:length(data))x[i] = data[i]/sum(data[])return(x)
}
dataframe <- apply(sourui_t,2,first1)

第三步:将上步生成的矩阵每个元素变成每个元素与该ln(元素)的积并计算信息熵。

first2 <- function(data)
{x <- c(data)for(i in 1:length(data)){if(data[i] == 0){x[i] = 0}else{x[i] = data[i] * log(data[i])}}return(x)
}
dataframe1 <- apply(dataframe,2,first2)k <- 1/log(length(dataframe1[,1]))
d <- -k * colSums(dataframe1)

第四步:计算冗余度。

d <- 1-d

第五步:计算各项指标的权重。

w <- d/sum(d)
w

最终输出结果展现,输出的为各项指标的权重得分


应用:基于各指标及权重值,可以对每个样本计算线性得分(使用归一化后数据)

实现:

sourui$评分 <- 0 for (i in 1:13){ sourui$评分 <- sourui$评分 + dataframe0[,i] * w1[i,] }

r语言熵权法求权重(真实案例完整流程)相关推荐

  1. 【人因工程】熵值法求权重正反向化的分析

    目录 一.问题提出 二.问题分析 1. 第一步: 2. 第二步 3. 第三步 三.进一步分析 总结 一.问题提出 所需数据集见链接: 人因工程熵值法求权重正反向化的分析配套数据-数据集文档类资源-CS ...

  2. 多目标决策问题1.1.1:线性加权法——熵权法确定权重

    多目标决策问题是目前数学建模中比较普遍的一类问题, 此类问题要求我们满足多个目标函数最优与决策变量的线性约束条件或非线性约束条件下进行求解, 多目标决策问题主要有主要目标法.线性加权法.分层序列法.步 ...

  3. r语言kmeans聚类(真实案例完整流程)

    K-means介绍 k-means算法简介: K-means算法是IEEE 2006年ICDM评选出的数据挖掘的十大算法中排名第二的算法,排名仅次于C4.5算法.K-means算法的思想很简单,简单来 ...

  4. python决策树及规则解析(真实案例完整流程)

    上一篇博文用随机森林实现了发欺诈模型的构建,但随机森林隶属于集成学习的一种,属于黑箱算法,为了增强模型的解释性,本篇博文采用同样的数据适用决策树算法再次构建模型,并输出可视化二叉树形图以及规则文本,并 ...

  5. R 熵权法计算权重及综合得分

    最近工作中需要根据大数据智能计算,预测或者推荐出供应链付款优先/权重来,以往都是人工根据供应商关系等因素做付款的一个优先级,并不能客观的将付款策略分发到其他供应商,现根据大数据客观计算,记录一下 1, ...

  6. python情感分析(真实案例完整流程)

    情感分析:又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客观分析等. 情感极性分析的目的是对 ...

  7. 利用熵权法确定指标权重

    利用熵权法确定指标权重 1. 熵权法的基本原理 熵权法的基本思路是根据指标变异性的大小来确定客观权重. 一般来说,若某个指标的信息熵越小,表明指标值得变异程度越大,提供的信息量越多,在综合评价中所能起 ...

  8. 基于熵权法对Topsis模型的修正

    基于熵权法对Topsis模型的修正 有n个要评价的对象,m个评价指标的标准化矩阵,可以使用层次分析法给这m个评价指标确定权重 ∑j=1mωj=1\sum_{j=1}^m{\omega_j}=1 j=1 ...

  9. 基于熵权法优劣解距离法_基于优劣解距离法的火电机组单辅机运行状态评估

    龙源期刊网 http://www.qikan.com.cn 基于优劣解距离法的火电机组单辅机运行状 态评估 作者:王瑾石 来源:<中国化工贸易 · 上旬刊> 2019 年第 01 期 摘要 ...

  10. TOPSIS和熵权法的应用(Matlab实现,包括数据预处理)

    TOPSIS法是一种组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距. ①基本过程为归一化后的原始数据矩阵: ②采用余弦法找出有限方案中的最优方案和最劣方案:然后分别 ...

最新文章

  1. GDB attach到进程
  2. 如何处理“已超出域所允许创建计算机账户的最大值”
  3. poj1068解题报告(模拟类)
  4. POJ3714 Raid 平面最近点对
  5. VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池
  6. [转]MySQL实现分页查询
  7. ZedGraph的曲线的LineItem对象的Tag属性存储信息进而在鼠标悬浮时进行显示
  8. python学习(九) 网络编程学习--简易网站服务器
  9. 2014年驾考科目三考试扣分标准(细则)
  10. fabric node enrollAdmin.js 报错SyntaxError: Unexpected token function at createScript (vm.js:56:10)
  11. java jri_Java调用R(二)_JRI | 学步园
  12. 在开发过程中调试报表插件详细教程
  13. linux 实用命令 —— cut、tr、sort、touch
  14. bay——RAC 表空间时数据文件误放置到本地文件系统-介质恢复.txt
  15. 嵌入式Linux开发环境搭建
  16. linux命令行听歌,谁说linux命令行不能听歌?今天就给你们介绍一款神器
  17. 服务器p盘cpu占用率低,硬盘问题导致的CPU占用率100%解决实例
  18. 新浪微博的Tab滑动效果
  19. Matlab Coder优缺点、使用介绍、使用注意
  20. oracle是gbk程序是utf8的,oracle数据库gbk转utf8

热门文章

  1. 怎么修改图片大小尺寸?
  2. DisplayTag1.2
  3. Apache Tomcat 官网下载
  4. ffmpeg系列之编译安卓版ffmpeg库
  5. EasiCSDeep:利用表面肌电信号识别颈椎病的深度学习模型
  6. 百度离线地图下载器+开发Demo(街道、路网、卫星瓦片图)
  7. slickedit 运行java_SlickEdit 一些使用技巧(转载)--一个人的博客
  8. python缠论代码_缠论dll(czsc - 缠中说禅技术分析工具)
  9. 记一次微信APP支付开发返回-1的坑
  10. 软件工程实验报告一软件开发准备及Visio应用