数学建模学习笔记

1.10
在评价类模型中,对数据预处理比较常见的方法:正向化 无量纲化

常见的无量纲化方法:均值化(除以均值) 初值化

灰色关联度分析和灰色预测

灰色关联分析:求出每个人的每个数据与标准数据的关联程度,然后对每个人求出这个人所有数据关联程度的加权平均,最终就得到了这个人与标准数据的关系(如果标准数据是最优,那么这个人的关系越大越好)

(网卡了之前写的都没了,枯了)
生成数:灰色预测模型中用于尽量从杂乱的数据中发现内在规律
对于一组数据,可能关系并不显著,我们可以对其做(高阶)前缀和,得到的和可能就有比较明显的关系,这也叫累加生成(将灰色序列变成白色)
一阶累加:S'[i]=S[1]+..+S[i] 二阶:S''[i]=S'[1]+..+S'[i] ……

对一般随机的序列,通常可以用多次累加的方法将其用指数函数拟合
如何还原?累减(差分)

均值、非均值、级比生成:
image
image
image

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 注意要算每组数据算一行

预测模型 - 决策树

主要用于二元预测(是、否)
原理:一个人有多个数据,每次按照某一个数据筛,以此类推
如何分层?按照信息熵
image

image

信息增益越大,说明越应该先选(这样能知道的信息就多了)
image

对于连续型数据,可以采用离散化(例如年龄,将其划分为青年/中年/老年 三个阶段),因为决策树只能处理离散型数据
(如果有很多个连续型数据?考虑神经网络)

决策树例子

posted @ 2023-01-10 16:39  SkyRainWind  阅读(150)  评论(0编辑  收藏  举报