提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
文章目录
前言
一、基本概念了解
1.什么是灰色系统?
2.什么是关联分析?
二、模型原理
三、建模过程
1.找母序列(参考序列)
2.列子序列
3.数据预处理
4.计算灰色关联系数
5.计算关联度
四、代码实现
总结
前言
本文将讲解有关灰色关联算法的原理以及实现,一切代码仅供参考,不可用于比赛!有不足之处欢迎大家提出
一、基本概念了解
1.什么是灰色系统?
系统总共有黑、白、灰三种,我们用颜色的深浅来反映信息量的多少。白色非常明亮清晰,我们就说这个系统是清楚的,信息量充足;黑色给人神秘莫测的感觉,我们就说这个系统是黑洞洞的,信息量太少;则灰色系统就介于黑白之间,说明它是一个信息不完全的系统
这里信息不完全最主要表达的一个意思就是:系统因素不完全明确
2.什么是关联分析?
系统地分析因素——>多种因素谁主要谁次要,哪些影响大哪些小,哪些明显哪些潜在,哪些需发展哪些需抑制
二、模型原理
基本思想:根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序
列之间的关联度就越大,反之就越小。
三、建模过程
基本思路:对一个抽象的系统或现象进行分析,首先要选准反映系统行为特征的数据序列(母序列),称为找系统行为的映射量,用映射量来间接地表征系统行为;然后再找影响系统行为的因素
1.找母序列(参考序列)
能够反映系统的行为特征的数据序列≈因变量Y eg:通过国民平均接受教育的年数来反映教育发达程度,这里教育发达程度就是Y
2.列子序列
由影响系统行为的因素组成的数据序列≈自变量X
一般是一个自变量一列构成矩阵X(当然一行也可以,只需要变换相应的代码即可)
3.数据预处理
目的:去量纲化
操作:先求出每个指标的均值,在用指标中的元素除以其均值
注意:母序列和子序列都要求,而且是分开求!
4.计算灰色关联系数
目的:计算子序列中各个指标与母序列的关联系数
操作:
- 求出两极最小差a和最大差b:将上述经过预处理的Y,X矩阵中对应的母序列与子序列相减取绝对值得到新的矩阵,然后先对每一行求最大(小)值,再对每一列求最大(小)值
- 再求出关联系数
eg:
5.计算关联度
直接利用公式
四、代码实现
%灰色关联分析
%A=[55,24,10;65,38,22;75,40,18;100,50,20]
A = input('输入初始矩阵=') ;%输入初始矩阵
Average = mean(A); %求出每一列的均值以供后续的数据预处理
A = A ./repmat(Average,size(A,1),1); %size()后面跟1为求行数,2为求列数
disp('预处理后的矩阵为:');
disp(A)
Y = A(:,1); %母序列,此时已经知道影响因素
X = A(:,2:end);%子序列
%计算|xo-xi|矩阵(这里xo即为Y
absxo_xi = abs(X- repmat(Y,1,size(X,2)));
%计算两级最小差a
a = min(min(absxo_xi));
%计算两级最大差b
b= max(max(absxo_xi));
%取分辨系数为0.5
rho = 0.5;
%计算子序列中各个指标与母序列的关联系数
garma = (a+rho*b)./(absxo_xi +rho*b);
disp('子序列中各个质保的灰色关联度为:');
disp(mean(garma));
总结
以上就是灰色关联算法的实现,具体的应用还要结合题目进行分析,以上代码仅供参考!