【数模】CRITIC客观赋权法(代码实现)

本文介绍了CRITIC算法,一种通过对比强度和指标间冲突性来客观赋予权重的方法。主要内容包括计算熵权的过程,涉及样本矩阵标准化、标准差和相关系数的应用。适合对权重分配有需求的评价体系设计者。

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

前言

关于详细理论介绍大家可以看这篇博客客观赋权法——CRITIC权重法,本文着重于代码实现

概念

CRITIC的全称是Criteria Importance Though Intercrieria Correlation

它的基本思路是确定指标的客观权数以两个基本概念为基础。一是对比强度,它表示同一指标各个评价方案取值差距的大小,以标准差的形式来表现,即标准化差的大小表明了在同一指标内各方案的取值差距的大小,标准差越大各方案的取值差距越大。二是评价指标之间的冲突性,指标之间的冲突性是以指标之间的相关性为基础,如两个指标之间具有较强的正相关,说明两个指标冲突性较低。

输入和输出

计算有n个样本,m个指标的样本所对应的的熵权
输入: Z : nm的矩阵(要经过正向化和标准化处理,且元素中不存在负数)
输出:W:权重,1
m的行向量

指标变异性

以标准差的形式来表现

S=std(Z);

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

指标冲突性

用相关系数进行表示

r=corrcoef(Z);
R=sum(r);

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

信息量

C=S.*R;

C j C_j Cj越大,第 j j j 个评价指标在整个评价指标体系中的作用越大,就应该给其分配更多的权重。

客观权重

W=C./sum(C);
CRITIC客观赋权法是一种CRITIC的改进算法,用于在评价指标具有客观权重时求解各个变量的权重。具体步骤如下: 1. 确定评价指标集合,包括影响变量和被影响变量。 2. 确定各个评价指标的客观权重。 3. 构建判别矩阵,将每个评价指标按照其重要性进行两两比较,得到判别矩阵。 4. 计算每个评价指标的权重,采用CRITIC客观赋权法计算每个变量的权重。 5. 验证权重结果,检验判别矩阵是否满足一致性要求,如不满足则需要重新调整调整判别矩阵。 具体计算步骤如下: 1. 对判别矩阵的每一行进行归一化处理,即将每一行的元素都除以该行元素之和,得到标准化矩阵。 2. 计算平均化矩阵,即将标准化矩阵的每一列乘以其客观权重,再求平均,得到平均化矩阵。 3. 计算权重向量,即将平均化矩阵的每一行元素之和除以矩阵的行数,得到权重向量。 4. 计算一致性指标,即计算判别矩阵的特征向量与权重向量的一致性指标,如一致性比率CR小于0.1,则认为判别矩阵满足一致性要求,否则需要重新调整判别矩阵。 5. 检验结果,将权重向量的元素按照大小排序,即可得到各个变量的权重。 下面是使用Python实现CRITIC客观赋权法求解各个变量的权重的代码: ```python import numpy as np # 定义判别矩阵 D = np.array([[1, 3, 5], [1/3, 1, 3], [1/5, 1/3, 1]]) # 定义客观权重 w0 = np.array([0.3, 0.5, 0.2]) # 归一化处理 n = D.shape[0] A = np.zeros((n, n)) for i in range(n): A[i, :] = D[i, :] / np.sum(D[i, :]) # 计算平均化矩阵 Aw = np.zeros((n, n)) for j in range(n): Aw[:, j] = A[:, j] * w0[j] w = np.mean(Aw, axis=0) # 计算一致性指标 lambda_max = np.max(np.linalg.eigvals(D)) CI = (lambda_max - n) / (n - 1) RI = np.array([0, 0, 0.58]) CR = CI / RI[n-1] # 输出结果 if CR < 0.1: print('一致性指标CR={:.2f},通过检验'.format(CR)) print('各变量的权重为:', w) else: print('一致性指标CR={:.2f},未通过检验,请重新调整判别矩阵'.format(CR)) ``` 其中,`D`为判别矩阵,`w0`为评价指标的客观权重向量,`n`为矩阵的阶数,`A`为标准化矩阵,`Aw`为加权标准化矩阵,`w`为权重向量,`lambda_max`为特征值的最大值,`CI`为一致性指标,`RI`为随机一致性指标,`CR`为一致性比率。根据CR是否小于0.1,判断判别矩阵是否满足一致性要求。如果满足,输出各个变量的权重。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值