客观赋权法——CRITIC权重法

CRITIC法是一种改进的客观权重确定方法,通过评价指标的对比强度和冲突性综合衡量指标权重,适用于多指标评价体系。本文详细介绍CRITIC法的概念、计算步骤及实例,包括无量纲化处理、指标变异性、冲突性、信息量和权重计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

CRITIC法是一种比熵权法和标准离差法更好的客观赋权法。

它是基于评价指标的对比强度指标之间的冲突性来综合衡量指标的客观权重。考虑指标变异性大小的同时兼顾指标之间的相关性,并非数字越大就说明越重要,完全利用数据自身的客观属性进行科学评价。

  • 对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现。标准差越大,说明波动越大,即各方案之间的取值差距越大,权重会越高
  • 指标之间的冲突性,用相关系数进行表示,若两个指标之间具有较强的正相关,说明其冲突性越小权重会越低

对于CRITIC法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。

二、步骤

假设有n个待评价样本,p项评价指标,形成原始指标数据矩阵:
X = ( x 11 . . . x 1 p ⋮ ⋱ ⋮ x n 1 ⋯ x n p ) X=\left( \begin{matrix} x_{11}& ...& x_{1p}\\ \vdots& \ddots& \vdots\\ x_{n1}& \cdots& x_{np}\\ \end{matrix} \right) X=x11xn1...x1pxnp

其中 X i j X_{ij} Xij 表示第 i 个样本第 j 项评价指标的数值。

例如:

GDP就业人数财政支出人均可支配收入
北京xxxxxxxx
上海xxxxxxxx
广州xxxxxxxx
深圳xxxxxxxx

(1)无量纲化处理

为消除因量纲不同对评价结果的影响,需要对各指标进行无量纲化处理处理。

CRITIC权重法一般使用正向化或逆向化处理,不建议使用标准化处理,原因是如果使用标准化处理,标准差全部都变成数字1,即所有指标的标准差完全一致,这就导致波动性指标没有意义。

正向化或逆向化处理:

若所用指标的值越大越好(正向指标:)
x i j ′ = x j − x min ⁡ x max ⁡ − x min ⁡ x'_{ij}=\frac{x_j-x_{\min}}{x_{\max}-x_{\min}} xij=xmaxxminxjxmin
若所用指标的值越小越好(逆向指标:)
x i j ′ = x max ⁡ − x j x max ⁡ − x min ⁡ x'_{ij}=\frac{x_{\max}-x_j}{x_{\max}-x_{\min}} xij=xmaxxminxmaxxj

无量纲化处理总结
在这里插入图片描述
图片来自:数据无量纲化处理(归一化VS标准化)

(2)指标变异性

以标准差的形式来表现

{ x ˉ j = 1 n ∑ i = 1 n x i j S j = ∑ i = 1 n ( x i j − x ˉ j ) 2 n − 1 \left\{ \begin{array}{l} \bar{x}_j=\frac{1}{n}\sum_{i=1}^n{x_{ij}}\\ \\ S_j=\sqrt{\frac{\sum_{i=1}^n{\left( x_{ij}-\bar{x}_j \right) ^2}}{n-1}}\\ \end{array} \right. xˉj=n1i=1nxijSj=n1i=1n(xijxˉj)2

S j S_j Sj 表示第 j 个指标的标准差

在CRITIC法中使用标准差来表示各指标的内取值的差异波动情况,标准差越大表示该指标的数值差异越大,越能放映出更多的信息,该指标本身的评价强度也就越强,应该给该指标分配更多的权重。

(3)指标冲突性

用相关系数进行表示

R j = ∑ i = 1 p ( 1 − r i j ) R_j=\sum_{i=1}^p{\left( 1-r_{ij} \right)} Rj=i=1p(1rij)

r i j r_{ij} rij表示评价指标 i 和 j 之间的相关系数

使用相关系数来表示指标间的相关性,与其他指标的相关性越强,则该指标就与其他指标的冲突性越小,反映出相同的信息越多,所能体现的评价内容就越有重复之处,一定程度上也就削弱了该指标的评价强度,应该减少对该指标分配的权重。

(4)信息量

C j = S j ∑ i = 1 p ( 1 − r i j ) = S j × R j C_j=S_j\sum_{i=1}^p{\left( 1-r_{ij} \right)}=S_j\times R_j Cj=Sji=1p(1rij)=Sj×Rj
C j C_j Cj越大,第 j 个评价指标在整个评价指标体系中的作用越大,就应该给其分配更多的权重。

(5)客观权重

所以第 j 个指标的客观权重 W j W_j Wj 为:

W j = C j ∑ j = 1 p C j W_j=\frac{C_j}{\sum_{j=1}^p{C_j}} Wj=j=1pCjCj

三、例子

GDP就业人数财政支出人均可支配收入
北京xxxxxxxx
上海xxxxxxxx
广州xxxxxxxx
深圳xxxxxxxx

------------------无量纲化处理后------------------

CRITIC权重计算结果

指标变异性指标冲突性信息量客观权重
GDPxxxxxx0.42
就业人数xxxxxx0.23
财政支出xxxxxx0.15
人均可支配收入xxxxxx0.20
### 结合CRITIC权重法和熵权进行多准则决策分析 #### CRITIC权重法概述 CRITIC (Criteria Importance Through Inter-criteria Correlation) 方是一种基于标准间差异性和冲突性的客观赋权方。此方考虑了不同属性之间的关联度以及对比强度来确定各个属性的重要性程度。 #### 熵权概述 熵权则依据信息论中的熵概念,用来衡量系统的无序化程度。在多目标决策领域内,它被广泛应用于评估各评价指标所含有的有用信息量,并据此赋予相应的权重值。当某个特定指标下的方案取值越接近,则说明该指标提供的区分能力较弱;反之则较强[^1]。 #### 组合实施步骤 为了更好地融合这两种方的优点,在实际应用过程中可以采取如下方式: - **数据标准化** 对原始矩阵 \(X\) 进行极差变换或其他适当的方使其数值范围统一,消除因单位不一致带来的偏差。 ```python import numpy as np def normalize_data(X): min_vals = X.min(axis=0) max_vals = X.max(axis=0) ranges = max_vals - min_vals norm_X = (X - min_vals) / ranges return norm_X, ranges, min_vals ``` - **计算熵值** 计算每个指标对应的概率分布并由此得出其熵值\(E_j\), 表达式为: \[ E_{j}=-k \sum P_{ij}\ln(P_{ij}) \] 其中 \(P_{ij}=x'_{ij}/\sum^{m}_{i=1}(x'_{ij})\); k 是常数项 (\(k=\frac{1}{\ln(m)}\)). ```python from math import log def calculate_entropy(norm_X): m, n = norm_X.shape entropy_values = [] for j in range(n): p_ij_sum = sum([norm_X[i][j] for i in range(m)]) e_j = 0 for i in range(m): if norm_X[i][j]!=0: pij = norm_X[i][j]/p_ij_sum try: ln_pij = log(pij) except ValueError: continue e_j += pij * ln_pij entropy_values.append(-e_j*log(e_j)) return entropy_values ``` - **确定冗余度与冲突性** 使用皮尔逊相关系数测量任意两个变量间的线性关系强弱作为冗余度D; 同时定义冲突性C表示两列向量之间变化趋势相反的程度。 \[ D_{jk}=\rho(x'_j,x'_k)=\frac{\operatorname {cov}(x'_j , x'_k ) } {\sigma _{j }\cdot \sigma _{k }} \] \[ C_{j}=\sum ^n_{k=1}|S_{jk}-D_{jk}| \] 这里 S代表的是绝对的相关性(|ρ|). ```python import pandas as pd def compute_conflict_and_redundancy(norm_X): corr_matrix = abs(pd.DataFrame(norm_X).corr().values) conflict_scores = [] redundancy_scores = [] num_cols = len(corr_matrix[0]) for col_index in range(num_cols): s_row = [abs(val) for val in corr_matrix[col_index]] d_row = list(corr_matrix[col_index]) c_score = sum(abs(s_val-d_val) for s_val,d_val in zip(s_row,d_row)) r_score = sum(d_row)-d_row[col_index] conflict_scores.append(c_score/(num_cols-1)) redundancy_scores.append(r_score/(num_cols-1)) return conflict_scores,redundancy_scores ``` - **综合评分及权重分配** 将上述所得的结果结合起来形成最终的加权因子W: \[ W_j=(1-E_j)\times C_j \] 再经过归一化处理即可获得所需的组合权重向量w*. ```python def combine_weights(entropy_values,conflict_scores): combined_weight = [(1-e)*c for e,c in zip(entropy_values,conflict_scores)] total_combined_weight=sum(combined_weight) normalized_combined_weight=[cw/total_combined_weight for cw in combined_weight] return normalized_combined_weight ``` 通过这种方式能够充分利用两种算的优势——既考虑到数据本身的离散特性又兼顾到了特征间的相互作用效应,从而提高了模型对于复杂环境适应能力和准确性[^2].
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值