CRITIC权重计算公式
时间: 2025-06-12 09:34:10 浏览: 14
### CRITIC 权重计算公式
CRITIC (Criteria Importance Through Inter-criteria Correlation) 方法是一种基于指标间相关性的权重确定方法。该方法通过量化不同指标之间的冲突性和对比强度来评估各个指标的重要性。
#### 计算步骤:
1. **标准化决策矩阵**
首先,对于给定的决策矩阵 \( X \),需要对其进行标准化处理。假设原始决策矩阵为 \( X_{m \times n} \),其中 \( m \) 是备选方案的数量,\( n \) 是评价指标的数量,则标准化后的矩阵 \( R \) 可表示为:
\[
r_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{m} x_{ij}^2}}
\]
这一步骤确保了不同量纲的数据可以相互比较[^3]。
2. **计算标准差**
接下来,计算每个指标的标准差 \( S_j \),这反映了该指标下数值的变化程度:
\[
S_j = \sqrt{\frac{1}{m-1}\sum_{i=1}^{m}(r_{ij}-\bar{r}_j)^2}
\]
3. **计算负相关系数绝对值之和**
对于每一对不同的指标 \( j \) 和 \( k \),计算它们之间皮尔逊相关系数 \( C(j, k) \),并求得第 \( j \) 个指标与其他所有指标的相关系数绝对值总和 \( CC_j \):
\[
CC_j=\sum _{{k=1,k\neq j}}^{n}|C(j,k)|
\]
4. **确定各指标的重要度**
结合上述两步的结果,定义重要度 \( w_j \) 如下:
\[
w_j=S_j(1-\frac{CC_j}{\max(CC)})
\]
其中 \( \max(CC) \) 表示所有 \( CC_j \) 中的最大值。此表达式体现了两个方面的作用:一是高变异性(大标准差),二是低冗余性(小的相关性)。因此,具有较大变化范围且与其他属性关联较少的特征会被赋予更高的权重[^2]。
5. **归一化得到最终权重向量**
将所得的重要度转换成比例形式作为最后的权重分配结果:
\[
W_j=\frac{w_j}{\sum_{j=1}^{n}w_j}, \quad j=1,\ldots,n
\]
```python
import numpy as np
from scipy.stats import pearsonr
def critic_weight(matrix):
# Step 1: Normalize the matrix
norm_matrix = matrix / np.sqrt(np.sum(matrix**2, axis=0))
# Step 2: Calculate standard deviation of each criterion
std_devs = np.std(norm_matrix, ddof=1, axis=0)
# Step 3: Compute correlation coefficients and their absolute sum per column
corr_matrix = np.abs([pearsonr(norm_matrix[:, i], norm_matrix[:, j])[0] for i in range(len(std_devs)) for j in range(i+1, len(std_devs))])
abs_corr_sums = [np.sum(corr_matrix[i*len(std_devs):(i+1)*len(std_devs)-1]) for i in range(len(std_devs))]
# Step 4: Determine importance using contrast intensity & conflict between criteria
max_abs_corr_sum = max(abs_corr_sums or [0])
weights = std_devs * (1 - np.array(abs_corr_sums)/max_abs_corr_sum)
# Step 5: Normalization to get final weight vector
normalized_weights = weights/np.sum(weights)
return normalized_weights
```
阅读全文
相关推荐


















