正在加载中...

展开本页目录
算法教程CRITIC权重法分析系统

CRITIC权重法分析系统

No.007 · 在线教程

为避免主观赋权对评价结果的干扰,本文采用 CRITIC(Criteria Importance Through Intercriteria Correlation)方法对指标进行客观赋权。该方法同时考虑两个维度:其一为指标在样本中的离散程度(对比强度),其二为指标与其他指标之间…

CRITIC 权重法

1. 方法概述

为避免主观赋权对评价结果的干扰,本文采用 CRITIC(Criteria Importance Through Intercriteria Correlation)方法对指标进行客观赋权。该方法同时考虑两个维度:其一为指标在样本中的离散程度(对比强度),其二为指标与其他指标之间的信息冲突程度(相关冗余的反向表征)。当某指标波动更显著且与其他指标相关性较弱时,其在综合评价中的信息贡献更高,对应权重也更大。

设评价对象数量为 \(n\),指标数量为 \(m\),原始数据矩阵记为

$$ X=(x_{ij})_{n\times m} \tag{1} $$

其中 \(i=1,2,\ldots,n\),\(j=1,2,\ldots,m\)。

2. 指标同向化与标准化

考虑到各指标量纲及偏好方向不同,先进行同向化标准化。对正向、负向和适度指标分别采用如下变换:

正向指标:

$$ y_{ij}=\frac{x_{ij}-\min_i x_{ij}}{\max_i x_{ij}-\min_i x_{ij}} \tag{2} $$

负向指标:

$$ y_{ij}=\frac{\max_i x_{ij}-x_{ij}}{\max_i x_{ij}-\min_i x_{ij}} \tag{3} $$

适度指标(目标值为 \(x_j^*\)):

$$ y_{ij}=1-\frac{|x_{ij}-x_j^*|}{\max_i|x_{ij}-x_j^*|} \tag{4} $$

经处理后得到标准化矩阵 \(Y=(y_{ij})\)。当某指标为常数列(分母为 0)时,程序按稳健规则将该列标准化值置为 1,以保证后续计算可执行。

3. CRITIC 信息量构建与权重求解

首先计算各指标标准差:

$$ \sigma_j=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(y_{ij}-\bar y_j)^2} \tag{5} $$

其次计算指标相关系数矩阵 \(R=(r_{jk})\):

$$ r_{jk}=\frac{\mathrm{cov}(y_{\cdot j},y_{\cdot k})}{\sigma_j\sigma_k} \tag{6} $$

据此定义指标 \(j\) 的冲突性:

$$ C_j=\sum_{k=1}^{m}(1-r_{jk}) \tag{7} $$

定义指标信息量:

$$ I_j=\sigma_j C_j \tag{8} $$

最终客观权重为

$$ w_j=\frac{I_j}{\sum_{j=1}^{m}I_j},\qquad \sum_{j=1}^{m}w_j=1 \tag{9} $$

若出现 \(\sum_j I_j=0\) 的退化情形,程序回退为等权分配 \(w_j=1/m\)。

4. 结果解释框架

CRITIC 权重反映“指标区分能力”与“信息独立性”的综合作用。\(\sigma_j\) 越大,说明该指标对样本差异的刻画能力越强;\(C_j\) 越大,说明该指标与其余指标冗余程度越低、增量信息越高。故权重较高的指标通常是“高波动且低冗余”的关键驱动指标。实证分析中可结合权重排序与相关矩阵联合说明各指标的重要性来源,从而提高结论的可解释性与可信度。

5. 输出结果结构及写作对应关系

程序每次运行后在 results/CRITIC_result_<时间戳>/ 生成独立结果目录,目录内至少包含:

  1. CRITIC分析结果_<时间戳>.xlsx
  2. CRITIC权重图_<时间戳>.png

Excel 固定包含 CRITIC权重结果标准化数据原始数据相关性矩阵图表文件 五个工作表。CRITIC权重结果 可作为正文核心结果表,相关性矩阵 用于解释冲突性来源,标准化数据原始数据 可作为附录中间过程,图表文件 用于建立图表文件名与结果文件的对应关系。

6. 与程序实现一致的边界处理说明

程序对输入和计算过程做了稳健性处理:若数值列存在不可转换值会直接报错;常数列标准化按 1 处理;相关矩阵中的空值按 0 填充;总信息量为 0 时回退为等权;绘图时若最大柱高异常(非正)会使用极小正值兜底,避免图像保存失败。这些处理保证在复杂数据下仍能得到可追溯结果。

7. 与代码实现的对应关系(CRITIC_desktop)

核心实现位于 具体的算法/CRITIC_desktop/core/critic_calculator.pynormalize_data 对应第 2 节,calculate_critic_weights 对应第 3 节,plot_weights 输出权重图,save_to_excel 输出 Excel 与图表文件记录。界面层由 具体的算法/CRITIC_desktop/ui/upload_widget.py 负责创建时间戳结果目录并传入分析参数,具体的算法/CRITIC_desktop/ui/results_widget.py 负责结果页交互(打开目录、打开结果文件、导出复现代码)。

8. 实现说明与注意事项

当前项目中的 CRITIC 模块并不是只输出一个权重向量,而是把标准化、冲突性、信息量和相关性矩阵一并保留。结合 critic_calculator.py 的真实实现,可注意以下几点:

  1. 输入数据默认要求第一列为评价对象名称,其余列为数值型指标;若数值转换失败,程序会直接报错而不是静默跳过。
  2. 指标类型采用 positive / negative / moderate 三种内部标记;适度指标需要配合 optimal_values 使用,若未设置则默认以均值作为参考中心。
  3. 相关性矩阵中的空值会被填充为 0,因此某些极端退化列不会导致流程中断,但解释时应说明其统计含义有限。
  4. 若总信息量 \(\sum_j I_j\) 为 0,程序会回退为等权分配,而不是强行保留异常结果。
  5. 导出 Excel 时并不把图片真正嵌入单元格,而是将 CRITIC权重图_*.png 保存在 xlsx 同目录,并在 图表文件 工作表中记录图表名称与文件名,便于论文和报告引用。

因此,这一实现更适合用作“可复核的客观赋权分析模块”,特别适合在论文附录中展示相关性矩阵和信息量分解结果。

9. 论文写作建议

论文中建议不要只报告最终权重,还应同步说明“为什么某些指标权重大”。最稳妥的写法是把标准差、冲突性和最终信息量三者连起来解释,从而体现 CRITIC 的方法优势。

可直接改写使用的结果段落示例如下:

“本文采用 CRITIC 方法对评价指标进行客观赋权。结果表明,部分指标同时具有较大的标准差和较强的信息冲突性,因此在综合信息量上表现更突出,对应获得更高权重。这说明这些指标不仅能够有效区分样本差异,而且与其他指标存在较强的增量信息。结合相关性矩阵可以进一步发现,权重较低的指标往往与其他指标存在较高冗余性,其对综合评价结果的边际贡献相对有限。”

10. 单篇终审补充

10.1 图题与表题对齐建议

  • 本文档应优先对应真实算法目录 具体的算法/CRITIC_desktop
  • 代表性结果目录建议绑定 具体的算法/CRITIC_desktop/results/CRITIC_result_uiflow_20260307_120001
  • 表题应直接对应 CRITIC分析结果_20260307_120001.xlsx 的真实工作表:CRITIC权重结果标准化数据原始数据相关性矩阵图表文件
  • 图题应优先绑定该目录中的 CRITIC权重图_20260307_120001.png

10.2 终审说明

  • 当前 CRITIC 目录中既保留正式分析结果,也叠加了多轮 CRITIC复现结果_*.xlsx 与对应图,属于历史累计结果目录。
  • 复现脚本实际为 repro_critic_20260307_120001.py。其优先尝试读取历史绝对路径 DEFAULT_SRC_FILE,若不可用则回退为从当前结果文件 CRITIC分析结果_<时间戳>.xlsx原始数据 sheet 反读数据。
  • 因此论文终稿必须如实说明:这个老模块的 repro 口径包含“优先原始文件、失败则从结果表回读原始数据”的历史兼容逻辑,不能简单概括成标准 repro_inputs 复现。

10.3 全量强化补充

  • 当前文档应绑定的真实算法目录为 具体的算法/CRITIC_desktop,代表性结果目录为 具体的算法/CRITIC_desktop/results/CRITIC_result_uiflow_20260307_120001
  • 该目录中的主工作簿为 CRITIC分析结果_20260307_120001.xlsx,实际工作表固定为 CRITIC权重结果标准化数据原始数据相关性矩阵图表文件
  • 同目录中的主图文件为 CRITIC权重图_20260307_120001.png,可直接对应正文中的“CRITIC 权重分布图”。
  • 需要特别说明的是,这不是“单次运行只保留一组主结果”的干净目录;目录中还叠加保留了大量历史再生产物,包括多份 CRITIC复现结果_*.xlsx 与多张 CRITIC权重图_*.png。因此正文若只引用一个代表目录,必须明确“主结果文件”和“同目录累积的历史 repro 文件”不是同一次导出。
  • 真实复现脚本为 repro_critic_20260307_120001.py,其逻辑不是标准 repro_inputs/... 相对路径加载,而是先尝试一个历史 DEFAULT_SRC_FILE 绝对路径;若该源文件不可用,再从当前结果簿中的 原始数据 工作表回读数据重建输入。
  • 因此这篇文档的复现说明不能写成“脚本读取 repro_inputs 后复算”,而应写成“历史兼容式双路径复现:优先旧原始文件,失败则从结果簿回读原始数据”。这是当前磁盘证据下最准确的口径。
  • 从论文写作映射上看,CRITIC权重结果 适合作为主文结果表,相关性矩阵 适合解释冲突性来源,标准化数据原始数据 更适合作为附录过程表;图表文件 则主要承担图名与图文件路径对照,不应误写成图片嵌入表。
  • 若后续要统一旧算法的复现说明模板,CRITIC 应归入“结果簿回读兼容复现”的特例,而不是归入“标准相对路径 repro_inputs 复现”的常规组。

11. 软件实现核查补充(2026-07)

11.1 当前软件实现口径

本软件当前对应的源码目录为 具体的算法/CRITIC_desktop,核心类为 core/critic_calculator.py 中的 CriticCalculator。软件实现的是 CRITIC 客观赋权:先按指标类型进行标准化,再用指标标准差表示对比强度,用相关性矩阵反映指标间冲突性,最后计算各指标信息量并归一化为权重。

11.2 输入数据和指标类型

上传页支持 Excel/CSV,示例数据位于 uploads/critic_sample.xlsxuploads/critic_sample.csv。数据应以第 1 列作为评价对象,其余列为数值型指标。界面提供“设置指标类型”,支持正向、负向和适度指标;适度指标需要最优值。

CRITIC 的权重受标准化结果、标准差和相关系数共同影响。如果两个指标高度相关,冲突性较低,其边际信息贡献会下降;如果某指标波动较大且与其他指标冲突明显,其权重可能较高。

11.3 输出结果和图表

运行后会创建 results/CRITIC_result_YYYYMMDD_HHMMSS/ 目录。Excel 工作表包括:CRITIC权重结果标准化数据原始数据相关性矩阵图表文件。图表通常为 CRITIC权重图_*.png

阅读结果时,应先查看 CRITIC权重结果 的权重值和权重百分比,再查看 相关性矩阵 解释指标间冲突关系。标准化数据 可用于检查正向化和适度指标处理是否符合预期。

11.4 复现与源码对应关系

结果页会自动或手动导出核心复现脚本,常见文件为 critic_core_repro.py,同时在 repro_inputs/critic_input_snapshot.xlsx 保存输入快照,在 repro_outputs/ 下输出复现结果。对应源码如下:

  • core/critic_calculator.py:数据读取、标准化、CRITIC 权重、相关矩阵、图表和 Excel 导出。
  • ui/upload_widget.py:选择数据文件、加载示例数据、设置指标类型和启动分析。
  • ui/results_widget.py:权重结果、标准化数据、原始数据、相关矩阵展示和复现代码导出。

11.5 适用边界

CRITIC 权重是数据驱动结果,不等同于专家重要性。若样本量少、指标间相关性不稳定或存在异常值,权重可能波动较大。报告中建议把 CRITIC 权重与指标含义、业务约束和敏感性分析一起解释。