数模美赛赛前准备——评价类问题
一、层次分析法
1.1 适用情况
- 指标未定——需要自己查询资料;
- 各指标所占权重未定——两两比较,得到判断矩阵;
- 指标的数量并不多(最多不得超过15个);
1.2 详细步骤
1.2.1 确定指标(准则层)
- 查文献:知网、万方、百度/谷歌学术
- 搜索:虫部落
- 自己定
1.2.2 确定权重(准则层)
两两比较各指标对于最终评价目标的重要性:
每进行一次比较,将标度值和它的倒数按照主对角线填入判断矩阵:
例:花费比景色重要,标度为2,则在(花费,景色)填2,(景色,花费)填1/2;
1.2.3 一致性检验(准则层)
一致矩阵的性质:各行成倍数关系;秩一定为1;有一个特征值为n (n为方阵的阶数,这里判断矩阵只可能为方阵)、其余特征值为0;且特征值n对应的特征向量刚好就是一致矩阵的第一列。
引理:n阶正互反矩阵A为一致矩阵时,当且仅当最大特征值 λmax=n;A非一致时,一定有 λmax>n;λmax为最大特征值。
一致性检验的步骤:
注:对非一致矩阵进行修正,只需要将其向各行成倍数的形式修改即可
主要代码:
1 | [V,D] = eig(A); % 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量 |
1.2.4 计算权重(准则层)
1.2.4.1 算数平均法
1 | %%%%%%%%%%%%%%%%%%%%% 将判断矩阵A归一化 %%%%%%%%%%%%%%%%%%%%%%%%% |
1.2.4.2 几何平均法
1 | Prduct_A = prod(A,2); % 求各行所含元素的和,得到一个n行1列的列向量 |
1.2.4.3 特征值法
1 | [V,D] = eig(A); % 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量 |
强烈建议三种方法都使用:
为了保证结果的稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算个方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论更全面、更有效。
此步骤之后,就得到了准则层各指标对应的权重(选一种算法对应的一列即可):
1.2.5 确定权重(方案层)
按照与准则层相同的步骤,确定方案层的权重:
- 按照确定准则层的标度,以同样的方式确定某个准则下方案层的标度,并得到该准则下的判断矩阵;
- 一致性检验;
- 计算权重——算术平均法、几何平均法、特征值法;
此步骤之后,就得到了方案层各方案在某一指标下对应的权重(可理解为该指标下的相对满意度)。
1.2.6 汇总结果并计算得分
将准则层权重和各准则下方案层的权重汇总,得到下表:
将各指标对应权重乘上某个方案在此指标下的权重并求和,得到该方案的得分。如:
类似可算出北戴河和桂林的得分。
1.3 模型拓展
待续
二、TOPSIS(优劣解距离法)
2.1 适用情况
准则层指标及方案层对应于准则层的权重已知,准则层指标的权重未知(多采用层次分析法求出)。
2.2 详细步骤
2.2.1 指标正向化
指标类型:
- 极大型指标:越大越好;
- 极小型指标:越小越好;
- 中间型指标:如 PH 值为 7 最好,越往两边越不好;
- 区间型指标:落在某个区间最好,如体温在 36~37℃ 最好;
指标正向化,即将各类指标转为极大型指标。
2.2.1.1 极小型指标
1 | function [posit_x] = Min2Max(x) |
2.2.1.2 中间型指标
1 | function [posit_x] = Mid2Max(x,best) |
2.2.1.3 区间型指标
1 | function [posit_x] = Inter2Max(x,a,b) % a为区间下界,b为区间上界 |
2.2.1.4 完整代码
1 | function [posit_x] = Positivization(x,type,i) |
2.2.2 标准化矩阵
2.2.2.1 不带权重的指标
1 | Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1); % 求矩阵每一列元素的平方和,将平方和开方,并复制扩展n行 |
注:标准化方法不唯一,还可以为:x-x的均值/标准差,其主要目的是为了去除量纲的影响。
2.2.2.2 带权重的指标
可用层次分析法计算出每个指标的权重,详细请见本文的 “1.2.2 确定权重(准则层)”至 “1.2.4 计算权重(准则层)”。
但是层次分析法的主观性较强,更推荐使用熵权法进行修正。
2.2.3 计算得分并归一化
2.2.3.1 不考虑指标权重
代码实现:
1 | D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5; % D+ 与最大值的欧式距离向量; |
sort 举例:
2.2.3.2 考虑指标权重
注意:在计算得分时带上权重和在标准化矩阵中带上权重是几乎等效的,但是不可以在计算距离和标准化矩阵这两部都带上权重!(我这么想的,不知道对不对)
2.3 模型拓展
待续