AHP的CRITIC权重法
时间: 2025-06-26 11:18:41 浏览: 20
### AHP-CRITIC 权重法的计算方法
AHP(Analytic Hierarchy Process,层次分析法)是一种经典的主观赋权方法,而CRITIC(Criteria Importance Through Inter-criteria Correlation)法则属于一种客观赋权方法。两者可以结合使用,在构建多层次结构模型的基础上,利用CRITIC法对底层指标进行客观权重分配。
#### CRITIC 法的核心原理
CRITIC法通过衡量两个维度——**对比强度**和**冲突性**来确定指标的重要性。具体而言:
- **对比强度**反映了某一指标的数据变化范围大小,通常由标准差表示。
- **冲突性**则描述了该指标与其他指标之间的独立性,通常用相关系数矩阵中的负数部分求和得出[^2]。
最终,CRITIC法通过对上述两者的乘积并归一化处理,获得各指标的权重。
#### 结合 AHP 的应用流程
在实际操作中,可以通过以下方式实现 AHP 和 CRITIC 的结合:
1. 使用 AHP 构建目标体系框架,并完成高层次的目标分解;
2. 对于低层次的具体指标,采用 CRITIC 法计算其客观权重;
3. 将 CRITIC 得到的结果作为输入参数融入 AHP 中的整体权重计算过程。
以下是具体的 Python 实现示例:
```python
import numpy as np
from scipy.stats import entropy
def calculate_critic_weights(data_matrix):
"""
计算 CRITIC 权重
:param data_matrix: 指标的标准化后的数据矩阵 (n_samples, n_features)
:return: 各指标对应的 CRITIC 权重向量
"""
# Step 1: 计算对比强度 Sj (标准差)
std_devs = np.std(data_matrix, axis=0)
# Step 2: 计算冲突性 Cij (相关系数矩阵)
corr_matrix = np.corrcoef(data_matrix.T)
conflicts = 1 - abs(corr_matrix).sum(axis=0) / (corr_matrix.shape[0] - 1)
# Step 3: 计算综合评分 Vj = Sj * Cij
v_scores = std_devs * conflicts
# Step 4: 归一化得到权重 Wj
weights = v_scores / v_scores.sum()
return weights
# 示例数据集
data = np.array([
[8, 7, 9],
[6, 5, 8],
[7, 6, 7],
[8, 8, 6]
])
weights = calculate_critic_weights(data)
print(f"Critic Weights: {weights}")
```
此代码实现了 CRITIC 权重的自动化计算功能。其中 `calculate_critic_weights` 函数接收经过预处理的标准分数形式的数据矩阵作为输入,返回每列对应指标的权重值。
最后一步是将这些权重嵌入至整个 AHP 流程之中,形成完整的决策支持链条。
---
###
阅读全文
相关推荐



















