预测与评价

评价模型

加权平均

一个公式:

\[p=\sum^{n}_{i=1}w_{i}p_{i} \]

Wi = [0.3 0.3 0.2 0.2];%权值
Pi = [95  90  82  85  ;85  95  85  90 ];%单部分评分
P = Wi * Pi'

权值wi难以获得。

层次分析(获取权重)

层次分析:对女星的评价

注意可以更多层

层次分析:构造判断矩阵

{1,2,3,...,9}:代表重要程度,逐渐递增

判断矩阵是一个正互反矩阵:

判断矩阵可能会出现矛盾,A>B,B>C,但以后评价C>A,出现不一致,所以需要一致性检验

层次分析:一致性检验

平均随机一致性指标 RI 是确定的

一致性矩阵的定义:

% n= [ 1    2    3    4    5    6    7    8    9
RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];

n = size(A,1);
[V, D] = eig(A);% 计算特征向量V和特征值D: A*V=V*D 

[lamda, i] = max(diag(D));% 最大特征值lambda及其位置i 
CI=(lamda-n)/(n-1); % 一致性指标 
CR = CI/RI(n);% 一致性比例 ,需要小于0.1

层次分析:层次单排序

  • 对于上一层某因素而言,本层次各因素的重要性的排序

  • 上一层次某因素相对重要性:判断矩阵 A 对应于最大特征 值 \(λ_{max}\) 的特征向量 W。

     
    A = [1/1  2/1  5/1  3/1 
         1/2  1/1  3/1  1/2 
         1/5  1/3  1/1  1/4
         1/3  2/1  4/1  1/1];
    [w, CR] = AHP(A);
    
    function [w, CR] = AHP(A)
    % n= [ 1    2    3    4    5    6    7    8    9
    RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];
    
    n = size(A,1);
    [V, D] = eig(A);% 计算特征向量V和特征值D: A*V=V*D 
    
    [lamda, i] = max(diag(D));% 最大特征值lambda及其位置i 
    CI=(lamda-n)/(n-1); % 一致性指标 
    CR = CI/RI(n);% 一致性比例 ,需要小于0.1
    
    W = V(:,i);% 最大特征值对应的特征向量
    w = W/sum(W);% 归一化 例如:[0.48 0.19 0.07 0.26]'
    

层次分析:层次总排序

在一个因素下,比较各个女明星,得到判断矩阵

% face
A1 = [1/1  1/2  3/1
      2/1  1/1  5/1
      1/3  1/5  1/1];
[w1, CR1] = AHP(A1);

% body
A2 = [1/1  1/3  2/1
      3/1  1/1  5/1
      1/2  1/5  1/1];
[w2, CR2] = AHP(A2);

% voice
A3 = [1/1  2/1  1/5
      1/2  1/1  1/7
      5/1  7/1  1/1];
[w3, CR3] = AHP(A3);

% acting
A4 = [1/1  2/1  1/3
      1/2  1/1  1/5
      3/1  5/1  1/1];
[w4, CR4] = AHP(A4);


CRs = [CR1 CR2 CR3 CR4]
P = [w1 w2 w3 w4] * w

 % ------------------------------------------------------------------------
 
function [w, CR] = AHP(A)
% n= [ 1    2    3    4    5    6    7    8    9
RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];

n = size(A,1);
[V, D] = eig(A);% 计算特征向量V和特征值D: A*V=V*D 

[lamda, i] = max(diag(D));% 最大特征值lambda及其位置i 
CI=(lamda-n)/(n-1); % 一致性指标 
CR = CI/RI(n);% 一致性比例 ,需要小于0.1

W = V(:,i);% 最大特征值对应的特征向量
w = W/sum(W);% 归一化 例如:[0.48 0.19 0.07 0.26]'

层次分析:总代码

function ahpactor

A = [1/1  2/1  5/1  3/1 
     1/2  1/1  3/1  1/2 
     1/5  1/3  1/1  1/4
     1/3  2/1  4/1  1/1];
[w, CR] = AHP(A);

% face
A1 = [1/1  1/2  3/1
      2/1  1/1  5/1
      1/3  1/5  1/1];
[w1, CR1] = AHP(A1);

% body
A2 = [1/1  1/3  2/1
      3/1  1/1  5/1
      1/2  1/5  1/1];
[w2, CR2] = AHP(A2);

% voice
A3 = [1/1  2/1  1/5
      1/2  1/1  1/7
      5/1  7/1  1/1];
[w3, CR3] = AHP(A3);

% acting
A4 = [1/1  2/1  1/3
      1/2  1/1  1/5
      3/1  5/1  1/1];
[w4, CR4] = AHP(A4);


CRs = [CR1 CR2 CR3 CR4]
P = [w1 w2 w3 w4] * w

 % ------------------------------------------------------------------------
 
function [w, CR] = AHP(A)
% n= [ 1    2    3    4    5    6    7    8    9
RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];

n = size(A,1);
[V, D] = eig(A);% 计算特征向量V和特征值D: A*V=V*D 

[lamda, i] = max(diag(D));% 最大特征值lambda及其位置i 
CI=(lamda-n)/(n-1); % 一致性指标 
CR = CI/RI(n);% 一致性比例 ,需要小于0.1

W = V(:,i);% 最大特征值对应的特征向量
w = W/sum(W);% 归一化 例如:[0.48 0.19 0.07 0.26]'

模糊综合评价

  1. 秃子悖论: 天下所有的人都是秃子
  • 设头发的根数为 n,n = 1 显然为秃子。

  • 若 n = k 为秃子,则 n = k+ 1 亦为秃子。

  1. 模糊概念
  • 从属于该概念到不属于该概念之间无明显分界线。

  • 用隶属程度代替属或不属于,如某人属于秃子的程度为 0.8。

  1. 模糊综合评价要素
  • 因素集:U =
  • 评语集:V = {超棒v1, 很棒v2, 不错v3, 一般v4, 呕心v5
  1. 权重 W 和网友投票 (%) R

​ 权重 W来自:层次分析或者权威数据

​ 苍井的第一行例子为:

​ 颜值:38%的网友认为超棒,34%的网友认为很棒,......

  1. 模糊合成

    代码实现:

    W = [0.4 0.2 0.1 0.3];
    R = [0.38 0.34 0.17 0.11 0.00
         0.26 0.41 0.20 0.13 0.00
         0.27 0.23 0.21 0.15 0.14
         0.14 0.19 0.22 0.12 0.33];
    
    % B = max(R .* W')%新版
    B = max(R .* repmat(W',1,size(R,2)) )
    %repmat 平铺
    

    结果说明:

    B=[B1,B2,B3,B4,B5],

    根据评语集:V = {超棒v1, 很棒v2, 不错v3, 一般v4, 呕心v5}

    如果B2最大,则说明很棒v2,如果B3最大,则说明不错v3。

预测模型

拟合

拟合是最基本的预测方法。

MATALB函数:polyfit / fit 。

时间序列

定义

时间序列:将预测对象按照时间顺序排列而成的序列。

时序预测:根据时序过去的变化规律,推测今后趋势。

时间序列的变化形式

  • 长期趋势变动 Tt

  • 季节变动 St

  • 循环变动 Ct

  • 不规则变动 Rt

模型

  • 加法模型 (\(Tt+St+Ct+Rt\))

  • 乘法模型 (\(Tt*St*Ct*Rt\))

  • 混合模型

移动平均法

有前几个月的收入,预测下一个月的收入,具体取前面N的月的值取一下平均即可。适用波动不大的数据。

 % 近9月企业的收入,求第10月收入 
y = [533.8 574.6 606.9 649.8  705.1, ...  
     772.0 816.4 892.7 963.9 ];
m = length(y);
n = 4;% 最好去波动的周期
c = cumsum(y);%前缀和
yhat = ( c(n:end)-[0 c(1:end-n)] )/n;
%[(y1+...+y4) - 0, (y1+...+y5) - y1, (y1+...+y6) - (y1+y2)]/n
%[cn-0,c(n+1)-c(1),c(n+2)-c(2)........]/n
yhat
S = norm(yhat(1:end-1) - y(n+1:end))/sqrt(m-n)

平滑法

灰色预测

特点

  1. 模型使用的不是原始数据,而是生成数据。
  2. 不需要很多数据,一般只需 ≥ 4 个数据。
  3. 只适用于中短期的预测,只适合指数增长的预测。

GM(1,1) 预测模型

GM(1,1) 表示模型是 1 阶微分方程,且只含 1 个变量。

步骤如图:

代码

t0 = [1999:2003]';
X0 = [89, 99, 109, 120, 135]';% 原始序列 
n = length(X0);
lambda = X0(1:n-1)./X0(2:n);%可行性检验条件
range = minmax(lambda')  % 检验 
exp([-2/(n+1), 2/(n+2)])
X1 = cumsum(X0); % 累加生成序列 
Z1 = (X1(1:n-1)+X1(2:n))/2  % 均值 
B = [-Z1, ones(n-1,1)];
Y = X0(2:n);
u = B\Y; a = u(1); b = u(2);% 最小二乘估计a,b
k = 0:n+4;
xhat1 = (X0(1) - b/a).*exp(-a*k) + b/a;
xhat0 = [X0(1) diff(xhat1)] % 还原 
plot(t0,X0,'o',t0(1)+k, xhat0,'-+')
posted @ 2020-02-10 22:14  pxlsdz  阅读(407)  评论(0编辑  收藏  举报