熵权法
一、直观理解:谁波动大、信息多,谁权重大
熵权法从数据本身出发:若某指标在所有评价对象上取值几乎一样,它区分不出谁好谁坏,信息量少,应给小权重;若取值大起大落,则信息熵低、效用高,给大权重。
像考试:若所有人某题都满分,这题对排名没有贡献;若分数拉开,这题更能区分水平。
注意:熵权反映的是样本内变异的鉴别力,不等于业务上“更重要”。重要但大家都差不多的指标会被压权——这是方法特性,不是 bug,但要在论文里说清。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 有完整数据矩阵;希望减少主观;指标差异明显;与 AHP 组合。 |
| 核心优点 | 计算透明;完全由数据决定;易复现。 |
| 局限与缺点 | 忽略指标业务价值;受样本集合影响(增删对象权重变);异常值拉大极差影响归一化;不处理指标相关冗余。 |
三、核心原理
数据矩阵 , 个对象, 个指标。
1. 正向化与归一化
极大型指标常用
极小型先转为 或取倒数(注意非负)。
2. 比重与熵
3. 权重
综合得分 (或与 TOPSIS 等结合)。
四、关键决策
| 决策点 | 建议 |
|---|---|
| 正向化 | 极小、居中、区间型分别处理 |
| 零值 | 计算加 防 |
| 样本 | 说明对象集合;做删样本灵敏度 |
| 异常值 | 先缩尾/审数,再熵权 |
| 业务约束 | 重要指标设权重上下界或改组合赋权 |
五、MATLAB 示例
% 行=对象,列=指标;假设已全部为极大型
X = [
80 70 90;
75 88 70;
90 65 85;
70 90 75
];
% 若第 2 列为极小型,先转换:
% X(:,2) = max(X(:,2)) - X(:,2);
[m, n] = size(X);
R = zeros(m, n);
for j = 1:n
xmin = min(X(:,j)); xmax = max(X(:,j));
if abs(xmax-xmin) < 1e-12
R(:,j) = 0; % 无区分度
else
R(:,j) = (X(:,j) - xmin) / (xmax - xmin);
end
end
% 熵权
P = R ./ sum(R, 1);
P(P < 1e-12) = 1e-12;
e = -sum(P .* log(P), 1) / log(m);
d = 1 - e;
w = d / sum(d);
disp("信息熵 e:"); disp(e);
disp("权重 w:"); disp(w);
score = R * w';
T = table((1:m)', score, "VariableNames", {"对象","得分"});
T = sortrows(T, "得分", "descend");
disp(T);
六、如何解释结果
- 哪些指标 大、为何(变异大);
- 权重是否与常识冲突,冲突时如何处理;
- 得分排序与敏感性;
- 归一化方式;
- 与主观权重对比。
七、常见误区
1. 未正向化就算熵
方向错误导致“越差权越大”等混乱。
2. 把熵权当重要性的唯一真理
鉴别力 ≠ 偏好重要性。
3. 对象集合一变权重大变却不说明
评价结论依赖参照系。
4. 全 0 列或常数列
权重应为 0,需检查数据。
5. 与相关指标重复计权
熵权不管共线,可配合 CRITIC 或删冗余。
附:建模论文中的写法要点
- 问题对应:用一两句话说明为何该方法匹配题目数据结构与目标(分类/分群/排序/效率)。
- 符号与步骤:按“输入 → 预处理 → 核心计算 → 输出指标”列出编号步骤,公式与代码变量名一致。
- 参数表:列出全部可调参数、取值、选取依据(CV、信息准则、业务约束或灵敏度)。
- 结果呈现:主结果用表格;辅以 1–2 张图(边界、树状图、得分条形图、效率分解等)。
- 稳健性:至少做一种扰动——删点、换权重、换距离、换初值或换阈值,观察结论是否保持。
- 局限:主动写明假设(球状簇、线性可分、CRS、完全补偿等)及适用边界,避免被质询时被动。
若主方法结论与合理基线(如 K-means 对 GMM、加权和对 TOPSIS、CCR 对 BCC)严重冲突,应回到数据质量与指标方向检查,而不是只报告“更好看”的一种结果。
八、小结
熵权法用指标变异的信息效用确定客观权重,透明可复现,但必须与指标业务含义和样本集合一起解读。
适合作为客观基线或与 AHP 组合;单独使用时务必做稳健性与常识校验。