【建模算法】CRITIC法(Python实现)

这篇具有很好参考价值的文章主要介绍了【建模算法】CRITIC法(Python实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【建模算法】CRITIC法(Python实现)

CRITIC是Diakoulaki(1995)提出一种评价指标客观赋权方法。CRITIC法是一种比熵权法和标准离差法更好的客观赋权法。

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

对比强度是指同一个指标各个评价方案之间取值差距的大小,以标准差的形式来表现。标准差越大,说明波动越大,即各方案之间的取值差距越大,权重会越高;
指标之间的冲突性,用相关系数进行表示,若两个指标之间具有较强的正相关,说明其冲突性越小,权重会越低。
对于CRITIC法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。

一、问题描述

现有中信、光大、浦发、招商四个银行,请对它们的资产收益率、费用利润率、逾期贷款率、资产使用、自有资本率分别进行评价。数据表格如下:

银行 资产收益率 费用利润率 逾期贷款率 资产使用 自有资本率
中信 0.483 13.2682 0 4.3646 5.107
光大 0.4035 13.4909 39.0131 3.6151 5.5005
浦发 0.8979 25.7776 9.0513 4.892 7.5342
招商 0.5927 16.0245 13.2935 4.4529 6.5913

二、CRITIC法评价步骤

step1:指标正向化和标准化

每个指标的数量级不一样,需要把它们化到同一个范围内比较,指标也都需要正向化。此篇把正向化和标准化结合。

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

  • 若 为负向指标(越小越优型指标),数据表格中的逾期贷款率属于此类指标,处理如下:
    x i j ′ = m a x ( x j ) − x i j m a x ( x j ) − m i n ( x j ) x^{\prime}_{ij}=\frac{max(x_j)-x_{ij}}{max(x_j)-min(x_j)} xij=max(xj)min(xj)max(xj)xij

  • 若 为正向指标(越大越优型指标),数据表格中其余所有指标属于此类指标,处理如下:

x i j ′ = x i j − m i n ( x j ) m a x ( x j ) − m i n ( x j ) x^{\prime}_{ij}=\frac{x_{ij}-min(x_j)}{max(x_j)-min(x_j)} xij=max(xj)min(xj)xijmin(xj)

step2:信息承载量计算

CRITIC 法对指标进行权重计算时围绕两个方面进行:对比度和矛盾性。

  • 对比性

用标准差 σ j \sigma_j σj表示第j 项指标的对比性

σ j = ∑ i = 1 m ( x i j ′ − x j ′ ˉ ) m − 1 \sigma_j=\sqrt{\frac{\sum^m_{i=1}(x^{\prime}_{ij}-\bar{x^{\prime}_j})}{m-1}} σj=m1i=1m(xijxjˉ)

  • 矛盾性

矛盾性反映的是不同指标之间的相关程度,若呈现显著正相关性,则矛盾性数值越小。设指标𝑗与其余指标矛盾性大小为 f j f_j fj
f j = ∑ i = 1 m ( 1 − r i j ) f_j=\sum^m_{i=1}(1-r_{ij}) fj=i=1m(1rij)
r i j r_{ij} rij表示指标i 与指标j 之间的相关系数,在此使用的是皮尔逊相关系数,此为线性相关系数。

  • 信息承载量

    设指标𝑗与信息承载量为 C j C_j Cj
    C j = σ j f j C_j=\sigma_jf_j Cj=σjfj

step3:计算权重和评分

信息承载量越大可认为权重越大
w j = C j ∑ j = 1 n C j w_j=\frac{C_j}{\sum^n_{j=1}C_j} wj=j=1nCjCj
计算得分
S i = ∑ j = 1 n w j x i j ′ S_i=\sum^n_{j=1}w_jx^{\prime}_{ij} Si=j=1nwjxij

三、求解结果

得到评分结果如下:
【建模算法】CRITIC法(Python实现)

四、实现代码

Python源码:

import pandas as pd
import numpy as np

#导入数据
data=pd.read_excel('银行数据.xlsx')

#数据正向化标准化处理
label_need=data.keys()[1:]
data1=data[label_need].values
data2=data1.copy()
[m,n]=data2.shape
index_all=np.arange(n)
index=[2] #负向指标位置,注意python是从0开始计数,对应位置也要相应减1
for j in index:
    d_max=max(data1[:,j])
    d_min=min(data1[:,j])
    data2[:,j]=(d_max-data1[:,j])/(d_max-d_min)
#正向指标位置    
index=np.delete(index_all,index) 
for j in index:
    d_max=max(data1[:,j])
    d_min=min(data1[:,j])
    data2[:,j]=(data1[:,j]-d_min)/(d_max-d_min)

#对比性
the=np.std(data2,axis=0)
data3=data2.copy()
#矛盾性
data3=list(map(list,zip(*data2))) #矩阵转置
r=np.corrcoef(data3)   #求皮尔逊相关系数
f=np.sum(1-r,axis=1)
#信息承载量
c=the*f

w=c/sum(c)  #计算权重
s=np.dot(data2,w)
Score=100*s/max(s) #计算得分
for i in range(0,len(Score)):
    print(f"{data['银行'][i]}银行百分制评分为:{Score[i]}")  

参考资料:

【1】吴希.三种权重赋权法的比较分析[J].中国集体经济,2016(34):73-74

【2】客观赋权法——CRITIC权重法:https://tanxg.blog.csdn.net/article/details/106742082文章来源地址https://www.toymoban.com/news/detail-462897.html

到了这里,关于【建模算法】CRITIC法(Python实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模:智能优化算法及其python实现

    优化问题是指在满足一定条件下,在众多方案或参数值中寻找最优方案或参数值,以使得某个或多个功能指标达到最优,或使系统的某些性能指标达到最大值或最小值。优化问题广泛地存在于信号处理、图像处理、生产调度、任务分配、模式识别、自动控制和机械设计等众多

    2024年02月03日
    浏览(31)
  • 数学建模--PageRank算法的Python实现

       P a g e R a n k PageRank P a g e R ank 算法是现代数据科学中用于图链接分析的经典方法,最初由 L a r r y Larry L a rry P a g e Page P a g e 和 S e r g e y Sergey S er g ey B r i n Brin B r in 在1996年提出。两位斯坦福大学研究生认为互联网上的链接结构能够反映页面的重要性,与当时基于

    2024年01月23日
    浏览(27)
  • 数学建模--粒子群算法(PSO)的Python实现

    目录  1.开篇提示 2.算法流程简介 3.算法核心代码 4.算法效果展示 本题中需要处理的问题是:(设置搜索空间维度为20,范围为[-10,10])

    2024年02月10日
    浏览(24)
  • 数学建模--退火算法求解最值的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月09日
    浏览(26)
  • 【数学建模】常用算法-主成分分析PCA的Python实现

    本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 导入包 定义计算协方差矩阵函数 X为输入的数据,m为样本数据的条数,也就是X的行数。 对X进行标准化,方法为:减去均值除以方差,这

    2023年04月08日
    浏览(93)
  • (10-1)Actor-Critic算法:Actor-Critic算法的介绍与原理

    Actor-Critic(演员-评论家)是一种强化学习算法,通常用于解决连续动作空间的问题。其一个重要特点是它允许在学习过程中同时学习策略和价值函数,从而可以有效地处理连续动作空间和高维状态空间的问题。在本章的内容中,将详细讲解Actor-Critic算法的知识,为读者步入后

    2024年04月28日
    浏览(27)
  • 量子退火算法入门(5):旅行商问题的QUBO建模「下篇之Python实现」

    提示:上篇已经讲过了旅行商问题的QUBO建模,这里直接讲两种编程实现: 看过上篇的读者应该已经注意到,因为旅行商问题需要最终返回到初始点的。所以,下面👇的目标函数里,循环进行到 N N N 时,最后一个 x j , t + 1 x_{j,t+1} x j , t + 1 ​ 应该确定回到初始点的。 针对这

    2023年04月14日
    浏览(25)
  • 数学建模--时间序列预测模型的七种经典算法的Python实现

    目录 1.开篇版权提示 2.时间序列介绍  3.项目数据处理 4.项目数据划分+可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指数法  9.时间预测序列经典算法5:Holt线性趋势法

    2024年02月10日
    浏览(30)
  • 数学建模|通过模拟退火算法求解供货与选址问题:问题二(python代码实现)

    今天继续用模拟退火算法供货与选址问题的问题二,如果还没看过问题一的可以看我之前的博客 数学建模|通过模拟退火算法求解供应与选址问题:问题一(python代码实现)-CSDN博客 这里还是把题目放上来(题目来自数学建模老哥的视频): 那么我们可以分析一下,第一问和

    2024年01月16日
    浏览(40)
  • JoyRL Actor-Critic算法

    这里策略梯度算法特指 蒙特卡洛策略梯度算法 ,即 REINFORCE 算法。 相比于 DQN 之类的基于价值的算法,策略梯度算法有以下优点。 适配连续动作空间 。在将策略函数设计的时候我们已经展开过,这里不再赘述。 适配随机策略 。由于策略梯度算法是基于策略函数的,因此

    2024年01月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包