评价模型:CRITIC客观赋权法


1.算法原理介绍

  CRITIC方法是一种客观权重赋权法,其基本思路是确定指标的客观权数以两个基本概念为基础。一是对比强度,它表示同一指标各个评价方案取值差距的大小,以标准差的形式来表现。二是评价指标之间的冲突性,指标之间的冲突性是以指标之间的相关性为基础,如两个指标之间具有较强的正相关,说明两个指标冲突性较低。
  CRITIC方法的主要原理是通过对比强度和指标之间的冲突性来确定指标的客观权数,从而实现对评价方案的客观权重赋值。该方法适用于判断数据稳定性,并且适合分析指标或因素之间有着一定的关联的数据。

2.算法步骤

2.1 数据标准化

  设有 m m m个待评对象, n n n个评价指标,可以构成数据矩阵 X = ( x i j ) m × n X=(x_{ij})_{m\times n} X=(xij)m×n,设数据矩阵内元素经过标准化处理过后的元素为 x i j ′ x^{'}_{ij} xij

  • 对于正向指标: x i j ′ = x i j − min ⁡ ( x j ) max ⁡ ( x j ) − min ⁡ ( x j ) x_{i j}^{\prime}=\frac{x_{i j}-\min \left(x_{j}\right)}{\max \left(x_{j}\right)-\min \left(x_{j}\right)} xij=max(xj)min(xj)xijmin(xj)
  • 对于负向指标: x i j ′ = max ⁡ ( x j ) − x i j max ⁡ ( x j ) − min ⁡ ( x j ) x_{i j}^{\prime}=\frac{\max \left(x_{j}\right)-x_{i j}}{\max \left(x_{j}\right)-\min \left(x_{j}\right)} xij=max(xj)min(xj)max(xj)xij

2.2 计算信息承载量

  • 首先计算第 j j j项指标的对比强度: σ j = ∑ i = 1 m ( x i j ′ − x ˉ j ′ ) m − 1 \sigma_{j}=\sqrt{\frac{\sum_{i=1}^{m}\left(x_{i j}^{\prime}-\bar{x}_{j}^{\prime}\right)}{m-1}} σj=m1i=1m(xijxˉj)

  • 然后计算评价指标之间的冲突性
    冲突性反映的是不同指标之间的相关程度,若呈现显著正相关性,则冲突性数值越小。设指标𝑗与其余指标矛盾性大小为 f j f_j fj,则 f j = ∑ i = 1 m ( 1 − r i j ) f_{j}=\sum_{i=1}^{m}\left(1-r_{i j}\right) fj=i=1m(1rij)
    其中 r i j r_{ij} rij表示指标 i i i与指标 j j j之间的相关系数,这里使用的是皮尔逊相关系数。

  • 最后计算信息承载量 C j = σ j f j C_{j}=\sigma_{j} f_{j} Cj=σjfj

    2.3 计算权重和得分

    计算权重: w j = C j ∑ j = 1 n C j w_{j}=\frac{C_{j}}{\sum_{j=1}^{n} C_{j}} wj=j=1nCjCj
    可见信息承载量越大权重越大。
    计算得分: S i = ∑ j = 1 n w j x i j ′ S_{i}=\sum_{j=1}^{n} w_{j} x_{i j}^{\prime} Si=j=1nwjxij

    3.案例分析

    假设你想购买一台新电视,考虑了以下指标:

  • 屏幕尺寸(英寸)——正向指标:尺寸越大,观看体验可能越好。

  • 价格(美元)——负向指标:价格越高,对于购买者来说可能越不吸引人。

  • 电视的能源效率(每年的电量消耗,以kWh为单位)—— 负向指标:消耗的电量越多,运行成本越高。

  • 用户评分(5星制中的星数) ——正向指标:评分越高,产品质量可能越好。
    具体数据如下表所示:

屏幕尺寸价格能源效率用户评分
电视A50500754.5
电视B55650804.8
电视C658001204.2
电视D45450654.0
电视E60700904.6

首先对数据进行标准化处理:

% 电视决策矩阵
decision_matrix = [
    50, 500, 75, 4.5;  % 电视A
    55, 650, 80, 4.8;  % 电视B
    65, 800, 120, 4.2; % 电视C
    45, 450, 65, 4.0;  % 电视D
    60, 700, 90, 4.6;  % 电视E
];
%数据标准化处理
for i=2:3
    decision_matrix(:, i) = (max(decision_matrix(:, i)) - decision_matrix(:, i))/(max(decision_matrix(:, i)) - min(decision_matrix(:, i)))
end
for i=[1,4]
    decision_matrix(:, i) = (decision_matrix(:, i)-min(decision_matrix(:, i)))/(max(decision_matrix(:, i)) - min(decision_matrix(:, i)))
end
% 数据标准化
norm_matrix = zscore(decision_matrix)

或者:

% 电视决策矩阵
decision_matrix = [
    50, 500, 75, 4.5;  % 电视A
    55, 650, 80, 4.8;  % 电视B
    65, 800, 120, 4.2; % 电视C
    45, 450, 65, 4.0;  % 电视D
    60, 700, 90, 4.6;  % 电视E
];
% 对负向指标进行处理,将其转换为正向指标
decision_matrix(:, 2) = max(decision_matrix(:, 2)) + 1 - decision_matrix(:, 2)
decision_matrix(:, 3) = max(decision_matrix(:, 3)) + 1 - decision_matrix(:, 3)
% 数据标准化
norm_matrix = zscore(decision_matrix)

标准化结果:
在这里插入图片描述然后再根据算法步骤计算权重:

% 计算标准间的相关系数
R = corrcoef(norm_matrix);

% 确定冲突度和信息量
n = size(norm_matrix, 2); % 标准的数量
conflict = zeros(1, n);
for i = 1:n
    conflict(i) = std(norm_matrix(:, i)) * (1 - sum(R(i, :)) / (n - 1));
end

% 计算权重
weights = conflict / sum(conflict);

% 显示结果
disp('指标的权重:');
disp(weights);

计算结果:
在这里插入图片描述最后计算每个电视的得分:
在这里插入图片描述完整代码:

% 电视决策矩阵
decision_matrix = [
    50, 500, 75, 4.5;  % 电视A
    55, 650, 80, 4.8;  % 电视B
    65, 800, 120, 4.2; % 电视C
    45, 450, 65, 4.0;  % 电视D
    60, 700, 90, 4.6;  % 电视E
];
%数据标准化处理
for i=2:3
    decision_matrix(:, i) = (max(decision_matrix(:, i)) - decision_matrix(:, i))/(max(decision_matrix(:, i)) - min(decision_matrix(:, i)))
end
for i=[1,4]
    decision_matrix(:, i) = (decision_matrix(:, i)-min(decision_matrix(:, i)))/(max(decision_matrix(:, i)) - min(decision_matrix(:, i)))
end

% 对负向指标进行处理,将其转换为正向指标
% decision_matrix(:, 2) = max(decision_matrix(:, 2)) + 1 - decision_matrix(:, 2)
% decision_matrix(:, 3) = max(decision_matrix(:, 3)) + 1 - decision_matrix(:, 3)
% 数据标准化
norm_matrix = zscore(decision_matrix)

% 计算标准间的相关系数
R = corrcoef(norm_matrix);

% 确定冲突度和信息量
n = size(norm_matrix, 2); % 标准的数量
conflict = zeros(1, n);
for i = 1:n
    conflict(i) = std(norm_matrix(:, i)) * (1 - sum(R(i, :)) / (n - 1));
end

% 计算权重
weights = conflict / sum(conflict);

% 显示结果
disp('指标的权重:');
disp(weights);

% 根据标准化的决策矩阵和权重计算每台电视的得分
scores = norm_matrix * weights';

% 显示每台电视的得分
disp('每台电视的得分:');
for i = 1:size(scores, 1)
    fprintf('电视%d 的得分: %.2f\n', i, scores(i));
end

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抱抱宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值