利用熵权法进行数值评分计算——算法过程

news/2024/9/18 10:10:10/ 标签: 算法, 熵权法, 评分算法

1、概述

在软件系统中,研发人员常常遇上需要对系统内的某种行为/模型进行评分的情况。例如根据系统的各种漏洞情况对系统安全性进行评分、根据业务员最近操作系统的情况对业务员工作状态进行打分等等。显然研发人员了解一种或者几种标准评分算法是非常有利于开展研发工作的。

目前流行的评分方法有很多种,诸如wilson评分算法、模糊综合评价法、秩和比评分法等等,本文内容介绍一种容易理解和编码实现的评分算法——熵权评分法。熵权法是一种基于信息论的方法,其核心在于通过计算数据中的熵来评估数据的不确定性。在信息论中,熵是衡量信息不确定性的一个重要指标。当数据集合中的概率分布更加均匀时,信息熵较大,表示数据的不确定性较高;反之,当概率分布更加集中时,信息熵较小,表示数据的不确定性较低‌。

2、计算过程

本文通过一个给员工工作状态评分的示例,介绍熵权法在实际工作中的使用。这个示例中本文不但演示熵权法的每个计算步骤,还通过一个Excel表格对每个计算步骤进行演练。这个示例的背景是,某公司针对员工的工作状态进行打分,这些打分要素包括了“迟到次数”、“食物带入办公区次数”、“遗忘打卡次数”、“下班后电脑未关次数”、“上厕所次数”、“计件质检评分”。
在这里插入图片描述
需要说明的是,熵权法进行编码实现时可以支持对评价维度的扩展。也就是说评价维度的多少并不影响计算步骤,只对某些步骤的计算数值产生影响。

2.1、进行数据标准化

评分指标分为正向指标(正向因子)和负向指标(负向因子)。正向指标是指该数据分值越高,对最后的评分结果影响越正面,例如电视的尺寸数据在电视综合评分中就是一个正向数据——尺寸越大综合评分越高;负向指标是指该数据分值越高,对最后的评分结果影响越负面,例如在网络安全评分场景下,某台终端端口被扫描的次数越多,则终端安全性得分越低。因为评分数据有正向和负向之分,所以评分计算的第一步是将各个评分要素进行标准化处理。处理公式如下所示:

在这里插入图片描述
如上图所示,正向指标和负向指标的数据标准化公式是不一样的,正向指标进行数据标准化的公式可以解释为:从各个评分参与者的正向指标中,取得得分最高的值和得分最低的值,相减后最为分母;使用当前要进行标准化的值,减去得分最低的值,作为分子;以下为计算结果:

在这里插入图片描述

以上图中的迟到次数为例,由于迟到次数是一个负向指标,所以“社畜8197”的迟到次数标准化的计算方式就是:分母为最大得分3 减去 最小得分1;分子为最大得分3 减去 “社畜8197”的次数0,得到结果为1。

另外要说明的是,由于是取得各个分母是各个参与者中的最大值,减去各个参与者中的最小值,所以当最大值和最小值为一样时,分母就可能为0;所以在进行标准化计算时,可以通过分母分子同时+1的方式,修正这种极端情况下的问题。以下是Excel使用的计算公式,可以看到分子分母都加了“1”:

在这里插入图片描述

2.2、求每个数值在评分列中的数值占比(数值比例)

还是以“迟到次数”这个负向指标为例,上一步我们求得了每个参与者“迟到次数”的数据标准值,分别为0.75、0.75、0.5、0.75、0.25、1、1、1;下面我们求每一个数值的数值占比,公式为:
在这里插入图片描述
这个公式很好理解,分母就是所有评分参与者的“迟到次数”数据标准值的和;分子就是某个具体的某个“迟到次数”的标准值。所以求得的数据如下表所示:
在这里插入图片描述

使用Excel文件进行计算过程演练时,可以使用以下公式进行表达:

在这里插入图片描述

2.3、求数值占比与自身(数值占比)对数的积

上一步我们计算出了每一个评分参与者在“迟到次数”这个要素上的数值占比,分别是0.125、0.125、0.0833333、0.125…… 。接下来我们就每个数和自身对数(以2为底)的积。熵权法要求对数的原因在于对数函数能够有效地衡量数据的不确定性,并确保信息的可加性。

X i = P i L o g ( P i ) X_i = P_i Log(P_i) Xi=PiLog(Pi)

在这里插入图片描述

使用Excel文件进行计算过程演练时,可以使用以下公式进行表达:

在这里插入图片描述

这个数值将在下一步正式进行熵值计算时,起到关键作用。

2.4、计算每个评分要素的熵值‌

现在我们开始正式计算每个参与评分的要素的熵值。在本示例中,这些要素分别就是“迟到次数”、“食物带入办公区次数”、“遗忘打卡次数”、“未关电脑次数”等等。熵值的计算公式如下:

在这里插入图片描述

这个公式分为两部分进行理解,其中第一部分就是K值的定义:

K = 1 / L o g ( N ) K = 1 / Log(N) K=1/Log(N)

其中N为参与评分的参与者数量,这个示例中N的值就是8(“牛马3197”、“圣斗士打工者”、“天地会总舵主”、“太上老君丹童”……)。这个公式的第二部分就是“西格玛符号”(∑)描述的求和部分,刚好是对我们2.3小节得到的每个栏目的值进行的求和。所以通过以上公式,我们能得到的计算结果如下图所示:

在这里插入图片描述

同样使用Excel文件进行计算过程演练,可以使用以下公式进行表达:

在这里插入图片描述

其中公式中“B37到B44”的值,就是2.3小节中每一个“迟到次数”通过求对数得到的值。

2.5、计算每个评分要素的权重值

现在我们有了每个评分要素的熵值,基于熵值我们可以求得每个平分要素的权重值——实际上这里的权重值可以理解为每个评分要素的熵值在整个熵值体系中的占比,其公式为:
在这里插入图片描述
其中分母为所有要素熵值的累加(d代表每一个要素的熵值),分子为当前要素的熵值。计算过程的演练表格如下所示:

在这里插入图片描述

2.6、基于权重值转换为10分制/100分制/或者N分制

有了每个评分要素的权重值(基于熵值得出),以及每个评分栏目标准化值(本文2.1小节所描述),就可以进行每个参与者的评分了——这个评分不能是10分制或者100分制或者1000分制的,而是一个得分基数。最后操作者可以根据这个得分基数,转换成自己所需的10分制或者100分制得分——最终用户可以看懂的得分。

得分基数的计算公式为:

在这里插入图片描述
公式是一个西格玛(∑)求和公式,其中每一个从1到m的w值,代表每一个评分要素的值;每一个x的值,代表每一个平分栏目。如果不好理解,可以看下图的解释

在这里插入图片描述

可以看到每个评分参与者的得分分别是:“牛马3197”——0.847662689、“圣斗士打工者”——0.736605139、“天地会总舵主”——0.861913661、“太上老君丹童”——0.763879745、“太乙真人弟子”——0.765103166、“社畜8197”——0.805163424、“超人完整体”——0.776911214、“标准满分参考”——1;

但是最终用户是看不懂这些得分基数的,所以需要一些形式上的计算过程,将基准评分转换为10分制、100分制或者某种最终用户能看懂的分数,如下所示:

在这里插入图片描述
E x c e l 栏目公式 = 100 / R O U N D U P ( M A X ( I 56 : I 62 ) , 3 ) ∗ I 56 Excel栏目公式=100/ROUNDUP(MAX(I56:I62),3)*I56 Excel栏目公式=100/ROUNDUP(MAX(I56:I62),3)I56

以上评分结果,这只是一个形式主义的计算过程,目的是让最终使用者根据日常习惯的计分方式对评分结果进行理解。后文我们将介绍熵权法的编码实现过程。


http://www.ppmy.cn/news/1525104.html

相关文章

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要…

软件设计师の第三章:数据库技术基础

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

已开源!无限场景生成和高效数据迁移:3D金字塔扩散模型斩获ECCV24 Oral

作者主页: https://yuheng.ink/ 论文标题: Pyramid Diffusion for Fine 3D Large Scene Generation 导读: 本文通过设计一种新颖的金字塔扩散模型,为三维室外场景生成提供了一种从粗到细的策略。本文对金字塔扩散模型进行了大量实…

系统设计文档示例

设计文档示例 文章目录 设计文档示例一、整体架构二、业务或功能-模块设计2.1、需求说明2.2、交互流程2.3、页面设计2.4、功能实现逻辑2.4.1 API设计2.4.2 DB设计 三、 配置说明四、开发示例 一、整体架构 系统架构图简要说明部署架构图简要说明功能模块图简要说明技术架构:前…

Reactive 编程-Loom 项目(虚拟线程)

Reactive 编程与 Loom 项目(虚拟线程) Java 项目 Loom 是 Oracle 在 JVM 上的一项重大变革,旨在引入 虚拟线程(Virtual Threads),以简化并发编程。传统的 Java 线程是重量级的,由操作系统管理&…

深入解析C++单例模式:从基础到线程安全的高效实现

引言 在C开发中,单例模式(Singleton Pattern) 是一种常见且重要的设计模式。它确保类的实例在整个程序生命周期中唯一,并提供一个全局访问点。这在日志管理、配置管理等场景中尤为常见。本篇博客将带你深入了解单例模式的实现原理…

单例模式的总结

常规模式:有属性/构造方法/普通方法,也可以在类中执行主方法,也可以在test类中执行主方法 单例模式是什么? 单例模式:类只有1个对象;保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是在内…

uniapp uni-table合并单元格

视图层 <uni-table border stripe emptyText"暂无更多数据" class"table_x"><!-- 表头行 --><uni-tr><uni-th align"center">患者姓名</uni-th><uni-th align"center">透析方式</uni-th>&…

常用设计模式的通俗解释和c语言实现

单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问点。 通俗解释:想象一个公司只能有一个CEO。无论你如何尝试创建新的CEO,你总是会得到同一个人。 #include <stdio.h> #include <stdlib.h>typedef struct {int data; } Singleton;static Singleton* i…

设计模式 23 访问者模式

设计模式 23 创建型模式&#xff08;5&#xff09;&#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式&#xff08;7&#xff09;&#xff1a;适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式行为型模式&#xff…

Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖

前言 每个按钮都要单独定义一个loading变量&#xff0c;并且在接口请求前修改为true&#xff0c;接口响应后再修改为false&#xff0c;封装后这段重复的逻辑就可以统一管理不用每次都写一遍了。 效果 新建一个公共的src\common.ts import { ref } from "vue"expor…

【有啥问啥】探索扫地机器人中的 SLAM 算法:原理、实现与未来展望

探索扫地机器人中的 SLAM 算法&#xff1a;原理、实现与未来展望 随着智能家居的普及&#xff0c;扫地机器人逐渐成为日常生活中的常见家电。其自主导航能力使得它能够在复杂的家庭环境中高效完成清洁任务&#xff0c;而这背后的核心技术之一就是 SLAM&#xff08;Simultaneou…

git的快速合并fast-forward merge详解

文章目录 1. 什么是快进合并&#xff1f;2. 快进合并的前提条件3. 快进合并的工作原理3.1 示例场景&#xff1a;3.2 使用命令&#xff1a;3.3 快进合并的视觉效果&#xff1a; 4. 快进合并的优点5. 快进合并的缺点6. 快进合并 vs 非快进合并6.1 非快进合并&#xff1a;6.2 非快…

【Linux】ps -ef 与 ps aux 的区别及 “|” “grep” 的详解

前言&#xff1a;虽然 ps -ef 与 ps aux 命令都能查看进程运行情况&#xff0c;但两者之间还是有一些细致区别。 一、格式与输出 1、ps -ef/ps -Af&#xff1a; -e是显示所有进程&#xff0c;包括其他用户的进程。-A属于-e别名&#xff0c;功能相同。 -f &#xff1a;显示更…

Android TextView 学习备忘

1.android:gravity 与 android:layout_gravity&#xff1a; Android TextView文本位置_mob649e8166858d的技术博客_51CTO博客https://blog.51cto.com/u_16175509/8597723 2.设置字体样式&#xff1a; android:fontFamily"font/my_custom_font"android:textStyle&qu…

Android SystemUI组件(05)状态栏-系统状态图标显示管理

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注下方 SystemBars分析中状态栏中的部分-系统状态图标显示&管理 即可。 1 系统状态图标显…

SenseGlove机器臂遥操作控制:技术优势与高危作业安全保障

在追求高效与安全的工业时代&#xff0c;高危作业任务始终是行业发展的一大障碍。SenseGlove力反馈手套机器臂遥操作应用案例的出现&#xff0c;凭借其独特的技术优势&#xff0c;为解决这一难题提供了创新性解决方案。 一、技术优势 高精度的力反馈技术&#xff1a;SenseGlove…

CTF——简单的《WEB》

文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述&#xff1a; sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的&#xff0c;不…

基于中心点的目标检测方法CenterNet—CVPR2019

Anchor Free目标检测算法—CenterNet Objects as Points论文解析 Anchor Free和Anchor Base方法的区别在于是否在检测的过程中生成大量的先验框。CenterNet直接预测物体的中心点的位置坐标。 CenterNet本质上类似于一种关键点的识别。识别的是物体的中心点位置。 有了中心点之…

关于Python爬虫的基础知识

爬虫是一种自动获取网页内容的程序或工具。以下是一些关于爬虫的基础知识&#xff1a; 一、爬虫的工作原理 发送请求&#xff1a; 爬虫首先向目标网站发送 HTTP 请求&#xff0c;就像你在浏览器中输入网址并访问一样。请求中包含了一些信息&#xff0c;如请求方法&#xff08;…