模糊综合评价法及Python实现
一、简介
模糊综合评价是以模糊数学为基础,应用模糊关系合成的原理,将一些边界不清,不易定量的因素定量化,进行综合评价的一种方法
例如“年轻”与“年老”、“高”与“矮”、“欢迎”与“不欢迎”等等。凡是涉及到模糊概念的现象,即称之为模糊现象。
模糊综合评价法的特点在于,评价对象逐个进行,对评价对象有唯一的评价值,不受评价对象所处对象集合的影响。
模糊综合评价的数学模型分为一级模型和多级模型,一级模型也称为单层次评价模型。首先对影响总目标的多个因素列出构成一个因素集(评价指标),同时建立评价集(评价等级)。然后进行单因素评判,根据评价集对因素集中每一个因素进行模糊判断,确定每个因素在评价集中对各个评价等级的隶属度的大小,构成模糊矩阵。对因素集中每个因素赋予不同的权重,构成权重向量,从而得出最后的评判结果。
二、模糊综合评价法优缺点
(1)优点
(2)缺点
三、模糊综合评价方法和步骤
模糊综合评价是通过构造等级模糊子集把反映被评事物的模糊指标进行量化(即确定隶属度),然后利用模糊变换原理对各指标综合
(1)确定评价对象的因素域值,即建立指标集
基于评价指标体系
例如
| X1 | X11 | |
| X12 | ||
| X13 | ||
| X2 | X21 | |
| X22 | ||
| X23 | ||
| X3 | X31 | |
| X32 |
设X={X1,X2,⋯,Xm}X=\{X_1,X_2,\cdots ,X_m\}X={X1,X2,⋯,Xm}为待评价对象的 m 种指标,称为第一级评价指标集。
依据第一级评价指标集的具体情况,设定下属的第二级评价指标集
Xi={Xi1,Xi2,⋯,Xit}X_i=\{X_{i1},X_{i2},\cdots ,X_{it}\}Xi={Xi1,Xi2,⋯,Xit},其中i=1,2,…,m。
依次类推,如需要,还可设定下属的第三级、第四级评价指标集,在此只研究到第二级的评价指标集。
(2)确定评语集
设Y={Y1,Y2,⋯,Yn}Y=\{Y_1,Y_2,\cdots ,Y_n\}Y={Y1,Y2,⋯,Yn}为 n 种评语或等级
评语等级是模糊综合评价所必备的要素,必须事先进行确定。评语等级是用来对各个因素进行评价的模糊概念,评语集合是对评价对象作出各种不同评价的一个集合,集合的确定能够使得模糊综合评价得到一个模糊评价向量,通过评语的等级隶属度显示出来,
例如
选择评价等级为5,即设Y={Y1,Y2,⋯,Y5}Y=\{Y_1,Y_2,\cdots ,Y_5\}Y={Y1,Y2,⋯,Y5} ,其中Y表示评语集,Y1Y_1Y1表示很满意,Y2Y_2Y2表示满意, Y3Y_3Y3表示一般, Y4Y_4Y4表示不太满意, Y5Y_5Y5表示很不满意。不同的满意评价代表不同的满意状况
(3)建立模糊关系矩阵R
评价等级设置好之后,接下来就要判断X的每个因素相对于评价等级的隶属程度,隶属程度指的是某一项指标对于某一评价等级的属于程度。进而得到模糊关系矩阵
R=(R∣x1R∣x2⋯R∣xm)=(r11r12⋮rm1r12r22⋮rm2⋯⋯⋮⋯r1nr2n⋮rmn)mnR=\left( \begin{array}{c} \begin{matrix} R|& \text{x}_1\\ R|& x_2\\ \end{matrix}\\ \begin{array}{c} \cdots\\ \begin{matrix} R|& x_m\\ \end{matrix}\\ \end{array}\\ \end{array} \right) =\left( \begin{array}{c} r_{11}\\ r_{12}\\ \vdots\\ r_{m1}\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} r_{12}\\ r_{22}\\ \vdots\\ r_{m2}\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} \cdots\\ \cdots\\ \vdots\\ \cdots\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} r_{1n}\\ r_{2n}\\ \vdots\\ r_{mn}\\ \end{array} \right) _{mn}R=⎝⎜⎜⎛R∣R∣x1x2⋯R∣xm⎠⎟⎟⎞=⎝⎜⎜⎜⎛r11r12⋮rm1r12r22⋮rm2⋯⋯⋮⋯r1nr2n⋮rmn⎠⎟⎟⎟⎞mn
其中m表示指标数,n表示评价等级,rijr_{ij}rij表示因素XiX_iXi对模糊子集(评语)YjY_jYj的隶属度。一般将其归一化处理,使得矩阵行和等于1,即
∑jnrij=1\sum_j^n{r_{ij}}=1 j∑nrij=1
一个被评事物在某个因素XiX_iXi方面的表现,是通过模糊向量
(R∣xi)=(ri1,ri2,⋯⋯,rin)\left( R|x_i \right) =\left( r_{i1},r_{i2},\cdots \cdots ,r_{in} \right) (R∣xi)=(ri1,ri2,⋯⋯,rin)
来刻画的,而在其他评价方法中多是由一个指标实际值来刻画的,因此,从这个角度讲模糊综合评价要求更多的信息
也就是说
在指标集(因素集)中存在某个因素XiX_iXi,i=1,2,…,m,该因素对评语集Y的隶属向量度为ri=(ri1,ri2,⋯,rin)r_i=\left( r_{i1},r_{i2},\cdots ,r_{in} \right)ri=(ri1,ri2,⋯,rin),其中 n 表示 n 种评语或等级,比如上面提到的Y={Y1,Y2,⋯,Y5}Y=\{Y_1,Y_2,\cdots ,Y_5\}Y={Y1,Y2,⋯,Y5} ,此时 n=5。
同理,对于全部因素,都可以构造出与因素对应的隶属度向量,将其组成隶属向量矩阵R
对于模糊评判矩阵的构造,一般有两种情况:第一种是对于主观或者定性指标的模糊评判矩阵构造,可以使用等级比重法;第二种是对于客观或定量指标的模糊评判矩阵的构造,可以使用频率法。
(4)确定指标权重
在模糊综合评价中,确定评价因素的权向量W=(w1,w2,⋯,wm)W=\left( w_1,w_2,\cdots ,w_m \right) W=(w1,w2,⋯,wm)
权向量W中的元素wiw_iwi本质上是因素XiX_iXi对模糊子(对被评事物重要的因素)的隶属度。
在模糊综合评价法中,权重的确定一般需要专家的知识和经验,具有一定的缺陷。通常采用层次分析法来确定各指标的权系数,使其更有合理性,更符合客观实际并易于定量表示,从而提高模糊综合评判结果的准确性
(5)建立一级指标模糊评价
一级模糊评价的建立需要利用模糊合成算子来进行,合成过程如下:
W∘R=(w1,w2,...wm)∘[r11r12⋮rm1r12r22⋮rm2⋯⋯⋮⋯r1nr2n⋮rmn]=(b1,b2,⋯,bn)≜BW\circ R=\left( w_1,w_2,...w_m \right) \circ \left[ \begin{array}{c} r_{11}\\ r_{12}\\ \vdots\\ r_{m1}\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} r_{12}\\ r_{22}\\ \vdots\\ r_{m2}\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} \cdots\\ \cdots\\ \vdots\\ \cdots\\ \end{array}\begin{array}{c} \\ \\ \\ \end{array}\begin{array}{c} r_{1n}\\ r_{2n}\\ \vdots\\ r_{mn}\\ \end{array} \right] =\left( \text{b}_1,b_2,\cdots ,\text{b}_n \right) \triangleq B W∘R=(w1,w2,...wm)∘⎣⎢⎢⎢⎡r11r12⋮rm1r12r22⋮rm2⋯⋯⋮⋯r1nr2n⋮rmn⎦⎥⎥⎥⎤=(b1,b2,⋯,bn)≜B
其中“∘\circ∘” 为模糊合成算子,B=(b1,b2,⋯,bn)B=\left( b_1,b_2,\cdots ,b_n \right)B=(b1,b2,⋯,bn)为模糊评价结果向量,一般需要归一化处理,满足
∑jbj=1\sum_j^{}{b_j}=1 j∑bj=1
一般模糊合成算子有四种:
M(∧,∨),M(∙,∨),M(∙,⊕),M(∧,⊕)M\left( \land ,\lor \right) \text{,}M\left( \bullet ,\lor \right) \text{,}M\left( \bullet ,\oplus \right) \text{,}M\left( \land ,\oplus \right) M(∧,∨),M(∙,∨),M(∙,⊕),M(∧,⊕)
举个简单例子
B=W∘R=(2,0,1)(120311042)B\ =\ W\circ R=\left( 2,0,1 \right) \left( \begin{matrix} 1& 2& 0\\ 3& 1& 1\\ 0& 4& 2\\ \end{matrix} \right) B = W∘R=(2,0,1)⎝⎛130214012⎠⎞
- M(∧,∨)M\left( \land ,\lor \right)M(∧,∨) 表示先取小,再取大。
先取小:
左边第一个与右边第一列的第一个(2和1—取1)
左边第二个与右边第一列的第二个(0和3—取0)
左边第三个与右边第一列的第三个(1和0—取0)
再取大:
(1,0,0)-----取1
同理
(2,0,1)-----取2
(0,0,1)-----取1
最终:
B=W∘R=(2,0,1)(120311042)=(1,2,1)B\ =\ W\circ R=\left( 2,0,1 \right) \left( \begin{matrix} 1& 2& 0\\ 3& 1& 1\\ 0& 4& 2\\ \end{matrix} \right) =\left( 1,2,1 \right) B = W∘R=(2,0,1)⎝⎛130214012⎠⎞=(1,2,1)
- M(∙,∨)M\left( \bullet ,\lor \right)M(∙,∨) 表示先乘,再取大
同上边的计算方法一样,不同的只在于上边是先取小,这里是先相乘
结果为:
B=W∘R=(2,0,1)(120311042)=(2,4,2)B\,\,=\,\,W\circ R=\left( 2,0,1 \right) \left( \begin{matrix} 1& 2& 0\\ 3& 1& 1\\ 0& 4& 2\\ \end{matrix} \right) =\left( 2,4,2 \right) B=W∘R=(2,0,1)⎝⎛130214012⎠⎞=(2,4,2)
-
M(∙,⊕)M\left( \bullet ,\oplus \right)M(∙,⊕) 表示先相乘,再求和
结果为:
B=W∘R=(2,0,1)(120311042)=(2,8,2)B\,\,=\,\,W\circ R=\left( 2,0,1 \right) \left( \begin{matrix} 1& 2& 0\\ 3& 1& 1\\ 0& 4& 2\\ \end{matrix} \right) =\left( 2,8,2 \right) B=W∘R=(2,0,1)⎝⎛130214012⎠⎞=(2,8,2) -
M(∧,⊕)M\left( \land ,\oplus \right)M(∧,⊕)表示先取小,再求和
结果为:
B=W∘R=(2,0,1)(120311042)=(1,3,1)B\,\,=\,\,W\circ R=\left( 2,0,1 \right) \left( \begin{matrix} 1& 2& 0\\ 3& 1& 1\\ 0& 4& 2\\ \end{matrix} \right) =\left( 1,3,1 \right) B=W∘R=(2,0,1)⎝⎛130214012⎠⎞=(1,3,1)
最后,在实际应用中 (∧,∨),(∙,⊕)\left( \land ,\lor \right) \text{,}\left( \bullet ,\oplus \right)(∧,∨),(∙,⊕)算子最为常用。
四种模糊合成算子的特点
(6)建立二级模糊评价
根据以上一级模糊综合评价的结果,作为二级模糊综合评价的关系矩阵,利用前述方法,进一步得到二级模糊综合评价结果。
(7) 模糊评价结果处理
模糊综合评价法中提供了两种可供选择的结果处理方法,这里采用参数加权平均法进行结果的处理计算,具体计算过程如下:
在评判向量B(b1,b2,⋯,bj,⋯,bn)B\left( b_1,b_2,\cdots ,b_j,\cdots ,b_n \right)B(b1,b2,⋯,bj,⋯,bn)中给各评定等级以参数值 c1,c2...,ckc_1,c_2...,c_kc1,c2...,ck,等级由高到低,且间距相等,为了突出优势等级的作用,可用各隶属度的幂加权平均法得到参数加权平均的公式:
C=∑j=1nbjtck∑j=1nbjtC=\frac{\sum\limits_{j=1}^n{b_{j}^{t}c_k}}{\sum\limits_{j=1}^n{b_{j}^{t}}}C=j=1∑nbjtj=1∑nbjtck
其中,t为待定系数,根据具体情况而定,一般可取 t=1,2
最后根据C的取值,根据评价定量分级标准对用户的满意度进行评级,对照表如下:
补充
两种定量化处理都可以
例子1
例子2
最后
模糊综合评价也可以使用软件完成
http://note.youdao.com/noteshare?id=2d89910d18eeb75d77d99737b0eb7d3d
python实现
请参见博文:
模糊层次综合分析法Python实践及相关优缺点分析
总结
以上是生活随笔为你收集整理的模糊综合评价法及Python实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [Leetcode][第93题][JAV
- 下一篇: Python 生成器 迭代器