数据分析系列:绩效(效率)评价与python实现(层析分析、topsis、DEA)

数据分析系列:绩效(效率)评价与python实现(层析分析、topsis、DEA)
当分析⼀个项⽬是否可⾏,或多个决策中挑选出最优的⼀个进⾏执⾏,对以往的项⽬或⼈员进⾏绩效评价时,我们需要对⼀项业务或⼈员的绩效(效率)进⾏打分。这就是绩效(效率)评价的⽬标。
假设有下⾯⼀个案例,我们对⼀个进⾏产品进⾏⽤户增长的⼴告投放,假设我们有多个⼴告承接商可以选择。具体的我们应该选择哪⼀个⼴告承接商?这就可以⽤⼀些绩效评价的⽅法解决,可⽤户绩效(效率)评价的⽅法⾮常多,这⾥只介绍层析分析法,topsis,和数据包络分析(DEA),并利⽤python进⾏实现。年降雨量
具体来说,当我们可以观测到每种决策的属性指标时(⽐如某⼀决策⼤拉新转化率、复购率、投⼊成本等),我们可以使⽤层析分析法和topsis⽅法。其中,层析分析法将⽬标拆解为若⼲因素,每个因素的权重主观定义,每个因素⼜由决策的指标特征决定,于是可以通过决策特征带⼊层析⽹络,对决策进⾏评价(层析结构有点类似于神经⽹络)。topsis通过计算每种决策指标特征与最佳/最差决策指标特征的距离来对决策的绩效进⾏打分。
当决策的产出可以观察时(⽐如决策带来的⽤户增长或带来的总价值),我们可以通过⽐较每种决策相同的投⼊时,产出的⼤⼩,产出越⼤越好。或每种决策产出向同时,投⼊的⼤⼩,投⼊越⼩越好。具体的我们可以建⽴数据包络分析模型(DEA),分析每个决策的效率。其中DEA还分为CRS(也称为CCR)
和VRS(也称为BCC)等模型。CRS表⽰规模收益固定模型,VRS表⽰考虑规模收益可变模型。
下⾯对层析分析法、topsis和DEA的进⾏介绍。
⼀、层析分析法
层次分析法(analysis hierarchy process,简称AHP)是⽤系统分析的⽅法,对评价对象依评价⽬的所确定的总⽬标进⾏连续性分解,得到各级(各层)评价⼦⽬标,并以最下层作为衡量⽬标达到程度的评价指标,然后依据这些指标计算出⼀综合评分指数对评价对象的总⽬标进⾏评价,依其⼤⼩来确定评价对象的优劣等级。该法可⽤于⼈事绩效评价等⽅⾯。
层析分析法的基本步骤如下:
1. 建⽴指标体系及层次,构造⽬标图
2. 计算权重系数
3. 计算综合评分指数GI
⽐如我们要对⼏个医院的⼯作质量进⾏评价,我们将医院你的⼯作质量划分为三个⼀级⼦⽬标:膳⾷
供应,护理⼯作和医疗⼯作三⽅⾯。⼀级⼦⽬标右可以划分为⼆级⼦⽬标:其中膳⾷供应由膳⾷质量决定;护理⼯作由护理制度决定;医疗⼯作由医疗制度、医疗质量、病床利⽤三⽅⾯决定。最后⼀层⼦⽬标有我们的统计数据得到。于是我们可以建⽴如下层及分析模型:
每个⽬标由下⼀级⼦⽬标构成,⼀个⾃然的问题是:下⼀级⼦⽬标的权重应该个分配多少?我们可以使⽤Saaty建议评分标准:
对于上⾯医院评价例⼦,我们假设⼀级⼦⽬标对总⽬标的判断矩阵为:
根据判断矩阵,我们计算每个元素的临时权重:
在对临时权重进⾏归⼀化,得到最终权重:
第⼆层⼦⽬标中,只有医疗⼯作被拆分成三个不同⼦⽬标,我们可以按照上⾯⽅式,计算第⼆层和四三层的⼦权重如下:
于是我们得到了每个层次中每个元素的权重(可以看做⾮全连接神经⽹络的权重W)。我们通过连乘可以得到每⼀个底层元素对总评价的权重:
可知,所有权重之和为1。如果我们有了⼏家医院的病床使⽤率等指标,便可以乘以对应权重后相加得到对每家医院的评价。但需要注意的
是,每个底层即我们可以观察得到的指标的量纲必须是统⼀的。
如果我们有六家医院,使⽤上⾯层次分析结果,求得和医院评分图如下(评分本⾝是没意义的,只有进⾏⽐较得到排序才有意义),数据如下:
对于我们层级分析法得到的结果是否有效,可以使⽤判断矩阵的⼀致性校验,其步骤如下:
依照上⾯⽅法,对上⾯第⼀层⼦⽬标判断矩阵进⾏⼀致性校验:
珍妮特 李
CR
得到<0.1,即认为当前层的判断矩阵是有效的。同理我们求得第⼆层和第三层的判断矩阵也是有效的,即认为该层次分析模型得到结果是可信的。
接下来使⽤python对层析分析法的核⼼步骤进⾏实现,具体的,我们对层次分析法如何求解每⼀层的权重,以及判断矩阵的⼀致性检验进⾏实现:
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 27 10:10:24 2020
@author: nbszg
"""
import numpy as np
import pandas as pd
#对判断矩阵进⾏⼀致性检验
def CR_test(determine_mat):
n =len(determine_mat)
reference=np.array([0.0,0.0,0.58,0.90,1.12,1.24,1.32,1.41,1.45])
#求特征值和特征矩阵
eigenvalue, eigenvector = np.linalg.eig(np.mat(determine_mat))
#求最⼤特征值
max_eig = eigenvalue[0]
#计算CI
CI =(max_eig-3)/(3-1)
火焰云播
RI = reference[n-1]
CR = CI/RI
either的用法if CR<0.1:
print('CR value is: {0} , results are credible\n'.format(CR))
else:
print('CR value is: {0} , results are not credible\n'.format(CR))
#计算每个⼦⽬标权重
敦煌学大辞典def weight_cul(determine_mat):
w=np.array([])
n =len(determine_mat)
#计算判断矩阵每⼀⾏乘积
for i in range(n):
w = np.append(w,pow(np.product(determine_mat[i]),1/n))
#进⾏归⼀化
w = w/np.sum(w)
#进⾏判断矩阵的⼀致性检验
CR_test(determine_mat)
#返回⼦⽬标权重
return w
importance = np.array([[1,3,5],[1/3,1,3],[1/5,1/3,1]])
湖南工业大学学报w = weight_cul(importance)
print('factor weight is: {0}'.format(w))
我们使⽤上⾯例⼦的第⼀层进⾏计算,计算结果如下:
可以看到,程序运⾏的结果与前⾯⼿动计算的结果是⼀样的。
⼆、Topsis
Topsis与层析分析⽬标相似,都可以⽤户绩效评价。Topsis基本思想是:基于归⼀化后的原始数据矩阵,采⽤余弦法出有限⽅案中的最优⽅案和最劣⽅案(分别⽤最优向量和最劣向量表⽰),然后分别计算各评价对象与最优⽅案和最劣⽅案间的距离,获得各评价对象与最优⽅案的相对接近程度,以此作为评价优劣的依据。
假设我们都个评价对象,每个评价对象都有
个指标。具体数据形式如下:
每个指标都与我们想要求得的最终绩效评价相关。其中有的指标与最终评价正相关,即指标越⾼,评价越⾼,我们称为⾼优指标。有的呈现负相关,即指标越⾼,评价越低,我们称为低优指标。还有⼀类指标与评价时⾮线性关系的,当指标未到达阈值时,为正相关,当指标超过阈值时,为负相关,我
们称为中性指标。⽐如在做信⽤评价时,收⼊就是⼀个⾼优指标,当前在贷⾦额是⼀个低优指标,持有信⽤卡信⽤卡数我们可以认为是⼀个中性指标,过低(⽩户)或过多(⼤量信⽤卡)都倾向于信⽤降低。在实际应⽤中绝⼤部分指标都是⾼优指标或低优指标。n m

本文发布于:2024-09-25 19:21:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/229763.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指标   评价   得到   决策   矩阵   权重   计算
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议