夜雨聆风学习资料网

ARTICLE · 1222489

初高中数学建模·第17期|熵权法:把数据差异算成权重

初高中数学建模·第17期|熵权法:把数据差异算成权重

启思数模  ·  数学建模36期  ·  17/36

上一期用AHP整理重要性判断。这一期,我们从数据差异出发,完整建立并检验一个熵权评价模型。

一、把评价目标写成可计算的问题

同一月份,四个社区的雨水收集点都在为绿地供水。谁运行得更好?D回用水最多,A的供水成功率最高,B维护最省时。三张单项榜单给不出一个共同的答案。

我们把目标限定为:在基本安全与水质要求已经满足的条件下,比较四个收集点当月的回用成效、供水可靠性和维护投入,得到一张综合排序表。先写清评价范围,才能判断最后的名次回答了什么。

下表全部为教学模拟数据。假设各点集水面积与灌溉需求相近,观测月份、供水任务与记录口径一致;每点模拟100次供水请求,按计划完成的次数除以100,得到成功率。真实项目需要先核对这些条件,不能把不同服务规模的点直接混在一起。

三项数据还要有清楚的定义:回用量记录真正用于灌溉的雨水,不把收集后又排走的水算进去;成功率按请求次数统计,并非回用量占总需求量的比例,各次请求的水量可以不同;维护工时记录完成同类巡检、清洗与检修任务所需的人时,不能把少做必要维护当作节约。

原始矩阵 X:行是收集点,列是指标

点位
回用量 m³/月 ↑
成功率 % ↑
维护工时 小时/月 ↓
A
20
100
12
B
30
99
6
C
40
98
9
D
50
90
10

用X表示这张4行3列的数据表,xᵢⱼ表示第i个点在第j项指标上的原始数值。前两列越大越好,第三列越小越好。我们暂用加权和作为综合模型,接下来要解决两个问题:怎样得到可相加的得分,怎样确定权重。

数据表可以让我们讨论本月四点的相对表现,却不能直接决定下一处设施该建在哪里。后一个问题还需要位置、造价与覆盖范围等新信息。把问题收窄,正是为了让模型的输入与要回答的问题对应起来。

本期计算路线

X → Z → P → e → d → w → S

字母依次表示:X是原始值,Z是同向得分,P是列比例,e是熵,d是差异系数,w是权重,S是综合分。

图1|同月、相近规模的四个雨水收集点。全部数值为教学模拟;箭头表示评价方向。

二、X→Z:先统一方向和尺度

20立方米、100%和12小时不能直接相加。本期采用同向极差标准化,把每列的最弱表现映射为0、最优表现映射为1,中间值按在两端之间的位置换算。这样三列都变成“越大越好”的无量纲得分。

越大越好的指标

zᵢⱼ=(xᵢⱼ-本列最小值) ÷ (本列最大值-本列最小值)

越小越好的指标

zᵢⱼ=(本列最大值-xᵢⱼ) ÷ (本列最大值-本列最小值)

以回用量为例,最小20、最大50,极差为30。A、B、C、D依次换算为(20-20)/30、(30-20)/30、(40-20)/30、(50-20)/30,即0、1/3、2/3、1。维护工时方向相反,B用时6小时最少,所以得到(12-6)/(12-6)=1。

同向极差矩阵 Z

点位
回用量得分
成功率得分
维护得分
A
0
1
0
B
1/3
9/10
1
C
2/3
4/5
1/2
D
1
0
1/3

这里的0只表示处在本组这一列的低端。A仍回用了20立方米雨水,D仍完成了90%的供水请求;它们并没有“毫无价值”。标准化也隐含了一项假设:在本次比较的范围内,得分随原指标线性变化。

这里还做了一项建模选择:每列都用本组最小值与最大值作参照,给满0到1的区间。若真实任务有明确的达标线或饱和点,例如超过某个水平后收益增长很慢,就应另建有实际含义的评分函数。本期先固定这条线性规则,再研究数据怎样生成权重。

当某列最大值等于最小值时,分母为0,这一列无法按此式转换。我们将在练习中处理这种情形,不用随意添加小数来掩盖问题。

三、Z→P→e:把一列差异写成熵

下一步逐列计算比例。每个z除以自己所在列的总和,得到p。回用量列的和为2,成功率列为2.7,维护列为11/6。得到的P每列合计为1,表示计算用的份额,并不是各收集点获胜的概率。

可以先做一道小检查:B的维护比例是1÷(11/6)=6/11,C是(1/2)÷(11/6)=3/11,D是(1/3)÷(11/6)=2/11,加上A的0,恰好合计为1。不同列各算各的比例,不能把整张表的所有数加在一起当分母。

列比例

pᵢⱼ=zᵢⱼ ÷ (z₁ⱼ+z₂ⱼ+…+zₙⱼ)

列比例矩阵 P

点位
回用量比例
成功率比例
维护比例
A
0
10/27
0
B
1/6
1/3
6/11
C
1/3
8/27
3/11
D
1/2
0
2/11

图2(动画)|三项指标逐列完成x→z→p:回用量示范先减20、除30;维护工时先反向处理,再按各列总和求比例。

如果一列比例全是1/4,四个对象分到的份额相同,这列就不能区分它们;比例集中在少数对象上时,区分就更明显。信息熵能刻画这种均匀程度:分布越均匀,熵越高。[1]

标准化熵值

eⱼ=-[p₁ⱼln(p₁ⱼ)+…+pₙⱼln(pₙⱼ)] ÷ ln(n),本例n=4

ln是自然对数,可以使用科学计算器的ln键。它在这里把各个比例转化成可相加的量;除以ln(n),使标准化熵处在0到1之间。对任意四项比例,完全均匀时e=1,全部集中在一项时e=0。

遇到p=0,按极限约定把整个p×ln(p)项记作0,计算时跳过这一项。注意,这不表示ln(0)有定义。回用量的四个比例已知,可以完整展开:

用计算器时,可以先求1/6的对数,再乘回1/6,记录一个完整的乘积;三项算完再相加,最后取负并除以ln(4)。不要只把对数相加,也不要把每项过早截成两位小数,后者会让最后的权重和得分出现不必要的误差。

回用量列完整代入

e₁=-[0+(1/6)ln(1/6)+(1/3)ln(1/3)+(1/2)ln(1/2)] ÷ ln(4)

每项算完再求和

e₁≈-[0-0.2986266-0.3662041-0.3465736] ÷ 1.3862944 ≈ 0.729574

同样计算成功率与维护两列,熵值分别约为0.789507、0.717686。本例成功率列的三个非零份额比较接近,因此熵略高。这里比的是处理后的比例分布,不能拿“相差30立方米”和“相差10个百分点”直接比较大小。

上面“全为1/4”用来说明熵的一般性质。采用本期极差标准化时,每个非常数列至少有一个0,所以实际比例不会恰好全为1/4。我们仍用同一熵公式比较三列,不把某个熵值解释为设备故障概率或服务达标率。

图3|实际三列比例及熵值:看分布如何进入计算,不把原始单位的差直接当作信息量。

四、e→d→w→S:算出权重和综合分

熵权法把“越均匀、越不容易区分”的方向转过来,定义差异系数d=1-e,再把三项d归一化为权重。权重越大,表示该列在当前处理方式下提供的区分信息越多。[2]

差异系数与权重

dⱼ=1-eⱼ;wⱼ=dⱼ ÷ (d₁+d₂+d₃)

从熵值到权重

指标
e
d
w
回用量
0.729574
0.270426
0.354316
成功率
0.789507
0.210493
0.275792
维护
0.717686
0.282314
0.369892

三个d的和约为0.763234。例如回用量权重为0.270426÷0.763234≈0.354316。三项权重之和为1;再将每个点的标准化得分Z乘上对应权重并相加,得到综合分S。注意:P用于计算熵,最终评分使用Z,两张表不能混用。

综合评分模型

Sᵢ=w₁zᵢ₁+w₂zᵢ₂+w₃zᵢ₃

B的完整得分

Sᴮ≈0.354316×(1/3)+0.275792×0.9+0.369892×1

分项贡献相加

Sᴮ≈0.118105+0.248212+0.369892≈0.736210

综合分与排序

点位
综合分
排名
A
0.275792
4
B
0.736210
1
C
0.641790
2
D
0.477614
3

因此排序为B>C>D>A。B的回用量居中,但成功率较高、维护最省时,后两项共同拉高了总分。A只在成功率占优,另两项落在本组低端,所以综合分较低。计算全程保留精度,表格最后才四舍五入。显示值相加可能有末位舍入差。

评分时还可检查两件事:三项权重都不为负且合计为1,因此每个综合分应落在0到1之间;图中各点的未舍入分项相加,应等于该点未舍入的总分。若不符合,就优先检查指标方向、列分母,以及是否误把P拿去评分。

图4(动画)|同一组数据的e→d→w,再将权重分配到四个点的三项贡献,最后合成综合分。

五、用等权模型做一次对照

得到一张榜单还不够。把三项权重都设为1/3,其他数据和标准化规则保持不变,就得到最简单的对照模型。我们要检查:换一种合理的赋权方式,结论究竟变了多少?

等权评分

Sᵢ(等权)=(zᵢ₁+zᵢ₂+zᵢ₃) ÷ 3

两种权重,同一矩阵 Z

点位
等权得分
熵权得分
A
0.333333
0.275792
B
0.744444
0.736210
C
0.655556
0.641790
D
0.444444
0.477614

两种方法都排出B>C>D>A。B领先C的分差,等权时约为0.088889,熵权时约为0.094420。因为维护权重从1/3增至约0.369892,B在维护上的优势得到稍多支持;同时回用量与成功率的权重也一起改变。

这项对照支持一个有限判断:在等权与本例熵权这两种设置下,冠军与完整排序相同。它没有证明熵权一定更准确,也没有证明任何权重下B都会第一。若管理者已有明确的服务优先级,应把那项要求写进模型,而不是仅凭这次排序一致就忽略它。

指标之间的关系也值得检查。例如,把回用量与由它乘固定水价得到的节水金额同时纳入,会把同一类信息重复计入。熵权计算能给出两列的权重,却不会自动提醒你它们其实来自同一份记录;指标选取仍然需要对现实问题的理解。

还可以从代数上看清B为什么领先C:B的回用量得分比C少1/3,成功率多0.1,维护多0.5。因此二者分差可以写成下面的式子。右边为正就由B领先,为负就由C领先。

权重怎样影响B与C的比较

Sᴮ-Sᶜ=-w₁/3+0.1w₂+0.5w₃

代入本例熵权,三项贡献差约为-0.118105、+0.027579、+0.184946,总和为+0.094420。公式把“哪个优势补偿了哪个劣势”写清楚,也说明增加回用量的权重会压缩B的领先优势。

图5|等权与熵权的分数并列比较,标出B与C的分差;两套结果使用同一标准化矩阵。

六、删去D,模型还会给出同样的判断吗

再做一次样本扰动检验:暂时只比较A、B、C。这里不是认定D应该删除,而是追问,评价对象集合改变后,结论有多大变化。为避免偷换计算口径,必须从极差开始全部重算,不能沿用四点模型的标准化得分或权重。

现在回用量范围变为20—40,成功率变为98%—100%,维护工时仍是6—12小时。于是B的回用量得分从1/3变为1/2,成功率得分从0.9变为1/2;C的回用量成为新最大值,成功率成为新最小值。

删D后的 Z′

点位
回用量
成功率
维护
A
0
1
0
B
1/2
1/2
1
C
1
0
1/2

三列的得分和恰好都为3/2。逐列除以它,得到下面的比例;你会发现,三列都是0、1/3、2/3的不同排列。顺序改变不影响各项求和,所以三列熵值相同。

删D后的 P′

点位
回用量
成功率
维护
A
0
2/3
0
B
1/3
1/3
2/3
C
2/3
0
1/3

对象数改为3,熵的分母也要变

e′=-[(1/3)ln(1/3)+(2/3)ln(2/3)] ÷ ln(3) ≈ 0.579380

三项差异相同,因此等权

d′₁=d′₂=d′₃≈0.420620;w′₁=w′₂=w′₃=1/3

逐点重新评分

S′ᴬ=1/3;S′ᴮ=(1/2+1/2+1)/3=2/3;S′ᶜ=(1+0+1/2)/3=1/2

新排序是B>C>A,与原榜单中这三个点的相对顺序一致;B与C的新分差为1/6。结果说明,本次“删去D”的扰动保留了三点的名次,但权重、得分和分差都发生了变化。只能把它作为一次具体检验的证据,不能推广成“随便增删样本都不会影响排名”。

这类检验需要保留完整记录:删了哪个对象、重新计算了哪些量、比较了哪些结果。若在真实资料中发现某点的口径不同,应先依据资料决定能否纳入,再重新估计模型;不能为了获得喜欢的名次,反过来挑选样本。

A的分数从约0.2758变成1/3,也不表示它突然运行得更好了:原始记录一条没变,改变的是参照范围与计分尺。跨月份或跨地区比较时,如果每次都重新标准化,就必须留意这种尺度变化。

这次检验还没有涉及测量误差与月份变化。若要据此安排真实运维资金,下一步可以保留同样的指标定义,用其他月份的数据重复计算,观察结果是否持续;也可以对可能录错的数据作有依据的范围检验。单月教学数据能够展示方法,但不能替真实设施作长期结论。

七、差距缩小十倍,权重为何不变

另设一个情景,每点有1000次请求,成功次数为1000、999、998、990,成功率就是100%、99.9%、99.8%、99%。它不是对原表100次请求记录的改写。新极差只有1个百分点,原来则是10个百分点。

观察新旧数据:新成功率=0.1×原成功率+90。一般地,对正向指标作x′=ax+b且a>0的变换,最小值和最大值也按同一规则改变,代入极差公式可得:

缩放和平移在分子、分母中抵消

z′=[ax+b-(a·最小值+b)] ÷ [(a·最大值+b)-(a·最小值+b)]

约去a后

z′=(x-最小值) ÷ (最大值-最小值)=z

因此成功率列仍是1、0.9、0.8、0。对象集合、其余两列和处理方法不变时,后续P、e、d、w与综合分也全部不变。极差标准化保留了相对位置,却消去了这次绝对差距的压缩。

图6|10个百分点压缩到1个百分点,同向极差得分仍相同;图中同时保留两套真实刻度。

这正是“数据差异”与“价值重要”需要分开的原因。即使各点水质同样合格,水质仍可是一条必须满足的底线;它没能拉开名次,并不代表可以不重视。熵权回答的是选定样本和规则下如何利用差异,服务底线则应先作为约束,不能靠其他高分抵消。

八、留给你一道能算完的练习

保持原来的四个收集点,只把维护工时都改成每月8小时,另外两列不变。请先判断第三列怎样处理,再用前文的差异系数算出新权重、B和C的综合分,并给出四点排序。可以先遮住下面的答案试一遍。

参考答案:维护列极差为0,无法套用标准化公式;本题把它从区分性赋权中剔除。回用量与成功率的Z、P、e不变,只需将两项d重新归一。并不是给维护分配一个很小的假差异。

做题时尤其容易出现一个错误:把第三项权重直接删掉,却保留前两项原权重。这样两项之和只有约0.630108,已经不是约定的单位权重和。重新归一既保持两项之间的比例,又让新的综合分回到同一0到1区间。

新的两项权重

w₁=0.270426/(0.270426+0.210493)≈0.562310;w₂≈0.437690

B与C的得分

Sᴮ≈0.562310/3+0.437690×0.9≈0.581357

Sᶜ≈0.562310×(2/3)+0.437690×0.8≈0.725025

A约为0.437690,D约为0.562310,所以新排序为C>B>D>A。B原先在维护上的优势消失了,C的回用优势变得更有影响。若所有列都相同,这些数据本来就不能区分名次,不必强行让熵权法给出冠军。

一份能解释的建模结果,既要留下原数据与假设,也要交代标准化、权重、得分和检验。读者可以沿着X→Z→P→e→d→w→S复算,才能看出结论依赖哪些选择,以及条件改变后该从哪一步重来。

启思数模|把现实问题,一步步做成数学模型。


参考资料

[1] Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379–423.DOI:10.1002/j.1538-7305.1948.tb01338.x

[2] Chen, P. (2019). On the Diversity-Based Weighting Method for Risk Assessment and Decision-Making about Natural Hazards. Entropy, 21(3), 269.DOI:10.3390/e21030269

相关学习资料