本博客后将进行代码的实操和论文的阅读。以清风老师的课件为学习教材。
文章目录
1.AHP层次分析法实践—适用于评价影响模型
1.1 实现步骤
层次分析法第一步: 分析系统中各因素之间的关系,建立系统的递阶层次结构。
层次分析法第二步: 对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。
层次分析法第三步: 由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)
(不满足的话,人为修改,凑答案,你懂的)
层次分析法第四步: 根据权重矩阵计算得分,并进行排序。
1.2 论文分析
构建层次结构模型,对模型进行求解。构建准则层的判断矩阵。
分别针对准则层1、2和3对方案层进行判断矩阵的求解。
求出各方案层所占的权重。最好还是按照清风老师说的,三种方法都使用一下。
最后对该模型做一个简单的分析。
2. TOPSIS法—综合评价方法
TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
2.1 实现步骤
不同类型的指标都要转化为极大型指标,而且不同的类型的原数据有不同的转化规则。
加入权重的模型:
加入权重后的模型:
2.2 论文分析
2.3 基于熵权法对TOPSIS的修正
一定要注意:此处将权重作为计算信息熵中的概率。
总结: 熵权法是基于指标的方差自主的确定准则层和目标层的权重,降低了层次分析法的主观性。但缺点也很明显,如果某一项指标的方差很低,但他的重要性远超过其他指标,那么数据量0和1的差距就非常大了。
3. 模糊综合评价
3.1 论文阅读
3.2 注意事项!
确定权重向量A的方法有:主观法,客观法(变异系数法(适用于大方差、常用)、质量分数法)
模糊综合评价矩阵R中的不同行反映了被评价事物从不同的指标评价对各等级的隶属程度。用权向量 A将不同的行进行综合就可得到被评价事物从总体上对各等级的隶属程度即模糊综合评价结果。通常采用所谓"模糊合成”来实现。
确定权重向量A的常用方法是前面介绍的变异系数法, 而处理评价指标获取评价矩阵R的常用方法有相对偏差法和相对优属度法。这两种方法简单、实用,在建模竞赛中可考虑与灰色关联分析结合使用。
3.3 部分代码分享
clc;clear;
%% 相对优属度法
A = [ 5.20 10.08 5.25 9.72 6.60;
5.20 6.70 4.20 5.25 3.75;
4.73 5.71 3.82 5.54 3.30;
0.473 1.599 0.473 1.313 0.803];%行为评价指标,列为方案
A = A' % 转置 标准化
[m,n]=size(A);%找出多少行多少列
%% 变异系数法求指标权重
x=mean(A);
s=std(A);
v=s./x;
v2=sum(v);
w=zeros(1,4);
for i=1:4
w(i)=v(i)/v2; %权向量
end
w
%%
% % % 效益型 % % % 第二、三列
for j = 1:n
if j == 2
max2 = max(A(:,2));
for i = 1 : m
A(i, 2) = A(i, 2)/max2;
end
A(:,2) = A(:,2);
end
if j == 3
max3 = max(A(:,3));
for i = 1 : m
A(i, 3) = A(i, 3)/max3;
end
A(:,3) = A(:,3);
end
end
%%
% % % 成本型 % % %
for j = 1:n
if j == 1
min1 = min(A(:,1));
for i = 1 : m
A(i, 1) = min1/A(i, 1);
end
A(:,1) = A(:,1);
end
if j == 4
min4 = min(A(:,4));
for i = 1 : m
A(i, 4) = min4/A(i, 4);
end
A(:,4) = A(:,4);
end
end
%%
% % % 固定型 % % % 假设第五列是固定型,有一个最优值
for j = 1:n
if j == 5
min1 = abs(min(A(:,1)) - 最优值);
for i = 1 : m
A(i, 1) = min1/abs(A(i, 5) - 最优值);
end
A(:,1) = A(:,1);
end
end
%%
R = A
w = w'
FF = R*w
4. 灰色关联分析
4.1 实现步骤
4.2 论文分析
基于灰色关联分析和超限学习机的高炉铁水硅含量预测_崔博
4.3 代码
%% 灰色关联分析用于系统分析
clear;clc
load gdp.mat % 导入数据
Mean = mean(gdp); % 求出每一列的均值以供后续的数据预处理
gdp = gdp ./ repmat(Mean,size(gdp,1),1); %size(gdp,1)=6, repmat(Mean,6,1)可以将矩阵进行复制,复制为和gdp同等大小,然后使用点除(对应元素相除),这些在第一讲层次分析法都讲过
disp('预处理后的矩阵为:'); disp(gdp)
Y = gdp(:,1); % 母序列
X = gdp(:,2:end); % 子序列
absX0_Xi = abs(X - repmat(Y,1,size(X,2))) % 计算|X0-Xi|矩阵(在这里我们把X0定义为了Y)
a = min(min(absX0_Xi)) % 计算两级最小差a
b = max(max(absX0_Xi)) % 计算两级最大差b
rho = 0.5; % 分辨系数取0.5
gamma = (a+rho*b) ./ (absX0_Xi + rho*b) % 计算子序列中各个指标与母序列的关联系数
disp('子序列中各个指标的灰色关联度分别为:')
disp(mean(gamma))
5. 灰色预测分析
5.1 实现步骤
灰色GM_1_1_模型在专利申请量预测中的应用_马元鑫
5.2 论文分析
在构建模型前要进行级比检验。
5.3 代码
y=input('请输入数据');
n=length(y);
yy=ones(n,1);
% % 对原始数据进行累加 % %
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
% % 构造累加矩阵B与常数向量YN % %
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:(n-1)
YN(j)=y(j+1);
end
% % 求解灰参数 % %
YN=YN';
A=(BT*B)\BT*YN;
a=A(1);
u=A(2);
% % 将参数带入预测模型进行数据预测 % %
t=u/a;
t_test=input('输入需要预测的个数');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
legend('初始数据','预测数据')
title('GM(1,1)');
xlabel('XXX');ylabel('YYY')
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);