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

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

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

<think>好的,我需要帮助用户理解加权评分算法的实现和原理。首先,我得明确加权评分算法的基本概念。根据用户提供的引用,特别是引用[1]和引用[5],加权评分算法应该涉及不同指标的权重分配和综合计算。比如在评分系统中,各个评价指标的重要性不同,需要赋予不同的权重,然后加权求和得到总分。 接下来,我应该解释其原理。根据引用[1]提到的“修改权重和评价指标的取值范围”,可以说明加权评分的核心在于权重的设定和指标标准化处理。可能需要提到权重的确定方法,比如主观赋值或客观统计方法,如熵权法。同时,引用[5]中的协同过滤算法虽然不同,但涉及用户相似度计算,可能与权重分配有关联,但这里可能不需要深入。 然后是实现步骤。需要分步骤说明,包括确定指标、分配权重、数据标准化、计算加权分。可能需要结合引用[1]中的Python示例,但用户现在的问题是关于加权评分,所以应该给出相应的代码示例。例如,Python中使用列表推导式或numpy进行加权计算。 在应用场景方面,引用[1]提到适应不同场景,引用[3]中的KNN算法应用广泛,但这里应聚焦于评分系统的例子,如学生成绩评估、产品评分等。需要确保例子具体,帮助用户理解实际应用。 注意事项部分,需要强调权重合理性、数据标准化的重要性以及结果可解释性,这些在引用[1]和引用[5]中都有涉及,比如权重调整和结果用于决策。 相关问题部分,需要根据用户提供的引用生成相关的问题。例如,引用[4]提到加权算法在图像融合中的应用,可以生成关于不同领域应用的问题。引用[2]的贝叶斯算法可能涉及权重优化,可以提问优化方法。同时,用户之前的引用中有协同过滤和KNN,可以联系到推荐系统中的加权评分应用。 最后,确保回答结构清晰,分点说明,代码示例正确,并且引用标记正确。检查是否所有数学公式都用了正确的LaTeX格式,例如加权和的公式用$$...$$,行内变量用$...$。例如,总分的计算公式应该用独立公式格式,而权重和评分的小例子用行内格式。</think>### 加权评分算法原理与实现 #### 一、核心原理 加权评分算法通过为不同评价指标赋予权重,综合计算目标对象的最终得分。其数学表达式为: $$ S = \sum_{i=1}^{n} w_i \cdot x_i $$ 其中: - $S$ 为综合得分 - $w_i$ 为第 $i$ 个指标的权重(需满足 $\sum w_i = 1$) - $x_i$ 为第 $i$ 个指标的标准化值 **核心步骤**: 1. **确定评价指标**:如商品评分中的“质量”“价格”“服务”等。 2. **分配权重**:根据指标重要性分配权重(如层次分析法或熵权法[^1])。 3. **数据标准化**:将不同量纲的指标归一化(如 Min-Max 标准化)。 4. **加权求和**:计算综合得分并排序或分类。 --- #### 二、Python 实现示例 以下是一个学生综合成绩评分的案例: ```python def weighted_score(scores, weights): # 数据标准化(假设已处理为0-1范围) normalized_scores = scores # 计算加权总分 total = sum(w * s for w, s in zip(weights, normalized_scores)) return round(total, 2) # 输入:语文(0.8)、数学(0.9)、英语(0.7),权重分别为0.3、0.5、0.2 scores = [0.8, 0.9, 0.7] weights = [0.3, 0.5, 0.2] print("综合得分:", weighted_score(scores, weights)) # 输出:0.3*0.8 + 0.5*0.9 + 0.2*0.7 = 0.83 ``` --- #### 三、应用场景 1. **商品推荐**:结合用户评分、销量、价格等指标生成推荐列表[^5]。 2. **学生评价**:综合考试成绩、课堂表现、作业完成度计算总评。 3. **风险评估**:在金融领域对借款人信用多维度加权评估[^1]。 --- #### 四、注意事项 1. **权重合理性**:需通过专家评估或数据分析确定,避免主观偏差。 2. **数据标准化**:确保指标可比性(如使用 Z-score 或 Min-Max)。 3. **结果可解释性**:需明确权重含义,便于决策者理解[^1][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说好不能打脸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值