数学建模学习笔记
1.10
在评价类模型中,对数据预处理比较常见的方法:正向化 无量纲化
常见的无量纲化方法:均值化(除以均值) 初值化
灰色关联度分析和灰色预测
灰色关联分析:求出每个人的每个数据与标准数据的关联程度,然后对每个人求出这个人所有数据关联程度的加权平均,最终就得到了这个人与标准数据的关系(如果标准数据是最优,那么这个人的关系越大越好)
(网卡了之前写的都没了,枯了)
生成数:灰色预测模型中用于尽量从杂乱的数据中发现内在规律
对于一组数据,可能关系并不显著,我们可以对其做(高阶)前缀和,得到的和可能就有比较明显的关系,这也叫累加生成(将灰色序列变成白色)
一阶累加:S'[i]=S[1]+..+S[i]
二阶:S''[i]=S'[1]+..+S'[i]
……
对一般随机的序列,通常可以用多次累加的方法将其用指数函数拟合
如何还原?累减(差分)
均值、非均值、级比生成:
GM模型
因为我们需要通过累加来找关系,发现这与微分积分很像,因此考虑用微分方程来求解这个关系
这里主要研究GM(1,1) 也就是1阶(微分方程),1个变量的微分方程模型
代码:
X0=[2.67,3.13,3.25,3.36,3.56,3.72];
% 求出累加生成数列(一阶前缀和)
X1(1)=X0(1);
for k=2:6
X1(k) = X1(k-1) + X0(k);
end
% 构造 B 和 Y
for k = 2:6
z(k)=(1/2)*(X1(k)+X1(k-1));
end
B=[(-z(2:6))' ones(5,1)];
Y=(X0(2:6))';
% 利用最小二乘法构建系数
alpha = inv(B'*B)*B'*Y;
u = alpha(2) / alpha(1);
v = X0(1) - u;
% 此处 v = X0(1)-miu/a ; u=miu/a
% 预测模型即为 X1(k+1)=ve^{-ak}+u
for n = 0:6
X2(n+1)=v*exp(-alpha(1)*n)+u;
end
X2;
% 得到的X2() 就是预测结果的前缀和
X3(1) = X2(1);
for m=1:6
X3(m+1)=X2(m+1)-X2(m);
end
% X3() 即为最终的预测值
% ======模型检验========
% 1.残差检验 即计算相对误差的平均值 误差为 1% 5% 10%分别为优 合格 勉强
delta=[];
offset=[]; % 相对误差
for m=1:6
delta(m) = abs(X3(m) - X0(m));
offset(m) = delta(m) / X0(m);
end
meankesi = mean(offset); % 求相对误差的平均值
% 最大相对误差为 0.0039 优
% 2. 关联度检验 类似灰色关联中的求法,(注意一下现在每个人就一个数据了)计算出绝对残差序列
% p = 0.5 时,r > 0.6 就是满意的
ita = (min(delta) + 0.5 * max(delta)) ./ (delta + 0.5 * max(delta));
r = mean(ita) % 计算关联系数
% 3. 后验差检验
X0mean = mean(X0);
X0std = std(X0);
daita0mean = mean(ita);
daita0std = std(ita);
C = daita0std / X0std;
e = abs(ita - daita0mean);
另外,灰色预测还可以用于灾变预测:注意预测的是灾害发生的时间(如第几个月)而非灾害对应的数据(如降雨量)
1.11
评价模型
- 常用:层次分析法、熵权法、topsis、CRITIC、组合分析法
通常采用组合分析法:用层次分析法、熵权法和CRITIC法得到的结果可能不同,如何评估总结果?随机权值
在层次分析法(主观生成的权值)的基础上随机一些权值,结合topsis法生成权值,再对以上几种模型进行求解,最后用CRITIC方法合并
1.12~1.14
预测/分类模型 - 神经网络
分成输入层、隐藏层、输出层
隐藏层中的每个结点对上一层(可能是上一个隐藏层,也可能是输入层)的每个结点进行加权求和,然后利用 \(sigmoid(x)=\frac{1}{1+e^{-x}}\) 函数将得到的和进行处理,得到这一层这一个结点的权值,一次类推。再不断修正
可以借助matlab中的神经网络工具箱 APP - neuronet fitting 注意要算每组数据算一行的
预测模型 - 决策树
主要用于二元预测(是、否)
原理:一个人有多个数据,每次按照某一个数据筛,以此类推
如何分层?按照信息熵
信息增益越大,说明越应该先选(这样能知道的信息就多了)
对于连续型数据,可以采用离散化(例如年龄,将其划分为青年/中年/老年 三个阶段),因为决策树只能处理离散型数据
(如果有很多个连续型数据?考虑神经网络)