灰色预测- Verhulst 模型
前两篇博客说到了 G ( 1 , 1 ) G(1,1) G(1,1),和 G ( 1 , N ) G(1,N) G(1,N),通过已有的数据,建立对应的模型,可以实现对未来数据的预测。模型可行的前提是所有的级比 λ ( 0 ) ( k ) \lambda^{(0)}(k) λ(0)(k)均落在 ( e − 2 n + 1 , e 2 n + 1 ) (e^{-\frac{2}{n+1}},e^{\frac{2}{n+1}}) (e−n+12,en+12)。对于非单调的摆动发展序列或具有饱和状态的 S S S 形序列, V e r h u l s t Verhulst Verhulst 模型, G M ( 2 , 1 ) GM(2,1) GM(2,1)模型等更适用。那么什么是 V e r h u l s t Verhulst Verhulst 模型呢?和 G ( 1 , 1 ) G(1,1) G(1,1), G ( 1 , N ) G(1,N) G(1,N)又有什么区别呢?
Verhulst 模型
原始数列
x
(
0
)
=
(
x
(
0
)
(
1
)
,
x
(
0
)
(
2
)
,
.
.
.
,
,
x
(
0
)
(
n
)
)
x^{(0)}=(x^{(0)}(1), x^{(0)}(2),...,, x^{(0)}(n) )
x(0)=(x(0)(1),x(0)(2),...,,x(0)(n)),累加得到的数列为
x
(
1
)
=
(
x
(
1
)
(
1
)
,
x
(
1
)
(
2
)
,
.
.
.
,
,
x
(
1
)
(
n
)
)
x^{(1)}=(x^{(1)}(1), x^{(1)}(2),...,, x^{(1)}(n) )
x(1)=(x(1)(1),x(1)(2),...,,x(1)(n)),其中,
x
(
1
)
=
∑
i
=
α
k
x
(
0
)
(
i
)
,
k
=
α
,
α
+
1
,
.
.
.
n
(1)
x^{(1)}=\sum_{i=\alpha}^k x^{(0)}(i),k=\alpha,\alpha+1,...n \tag{1}
x(1)=i=α∑kx(0)(i),k=α,α+1,...n(1)
其中
α
≤
n
\alpha \le n
α≤n,且为正整数,
(
1
)
(1)
(1)式中,取
α
=
1
\alpha = 1
α=1,称为一般累加过程,记作
1
−
A
G
O
1-AGO
1−AGO。定义
x
(
1
)
x^{(1)}
x(1)的灰导数(实际上就是累减),为:
d
(
k
)
=
x
(
0
)
=
x
(
1
)
(
k
)
−
x
(
1
)
(
k
−
1
)
(2)
d (k)=x^{(0)}=x^{(1)}(k)- x^{(1)}(k-1) \tag{2}
d(k)=x(0)=x(1)(k)−x(1)(k−1)(2)
取
x
(
1
)
x^{(1)}
x(1)的等权重紧邻值,
z
(
1
)
(
k
)
=
0.5
x
(
1
)
(
k
)
+
0.5
x
(
1
)
(
k
−
1
)
,
k
=
2
,
3
,
.
.
.
,
n
(3)
z^{(1)}(k)=0.5 x^{(1)}(k)+0.5 x^{(1)}(k-1) ,k=2,3,...,n \tag{3}
z(1)(k)=0.5x(1)(k)+0.5x(1)(k−1),k=2,3,...,n(3)
定义灰微分方程
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型:
d
(
k
)
+
a
z
(
1
)
(
k
)
=
b
(
z
(
1
)
(
k
)
)
2
(4)
d(k)+az^{(1)}(k)= b(z^{(1)}(k))^2 \tag{4}
d(k)+az(1)(k)=b(z(1)(k))2(4)
即:
x
(
0
)
(
k
)
+
a
z
(
1
)
(
k
)
=
b
(
z
(
1
)
(
k
)
)
2
(5)
x^{(0)}(k)+az^{(1)}(k)=b(z^{(1)}(k))^2 \tag{5}
x(0)(k)+az(1)(k)=b(z(1)(k))2(5)
其中
x
(
0
)
(
k
)
x^{(0)} (k)
x(0)(k) 称为灰导数,a 称为发展系数,
z
(
1
)
(
k
)
z^{(1)} (k)
z(1)(k)称为白化背景值,
b
b
b 称为灰作用量。将
k
=
2
,
3
,
.
.
.
,
n
k=2,3,...,n
k=2,3,...,n的数据带入上面的
(
4
)
(4)
(4)式,得到:
{
x
(
0
)
(
2
)
+
a
z
(
1
)
(
2
)
=
b
(
z
(
1
)
(
2
)
)
2
x
(
0
)
(
3
)
+
a
z
(
1
)
(
3
)
=
b
(
z
(
1
)
(
3
)
)
2
.
.
.
.
x
(
0
)
(
n
)
+
a
z
(
1
)
(
n
)
=
b
(
z
(
1
)
(
n
)
)
2
(6)
\left\{ \begin{matrix} x^{(0)}(2)+az^{(1)}(2)=b(z^{(1)}(2))^2 \\ x^{(0)}(3)+az^{(1)}(3)=b(z^{(1)}(3))^2 \\ .... \\ x^{(0)}(n)+az^{(1)}(n)=b(z^{(1)}(n))^2 \\ \end{matrix} \right. \tag{6}
⎩⎪⎪⎨⎪⎪⎧x(0)(2)+az(1)(2)=b(z(1)(2))2x(0)(3)+az(1)(3)=b(z(1)(3))2....x(0)(n)+az(1)(n)=b(z(1)(n))2(6)
将上面写成矩阵的形式,令
Y = ( x ( 0 ) ( 2 ) , x ( 0 ) ( 3 ) , . . . , x ( 0 ) ( n ) ) T Y = (x^{(0)}(2),x^{(0)}(3),...,x^{(0)}(n))^T Y=(x(0)(2),x(0)(3),...,x(0)(n))T
B = ( − z ( 1 ) ( 2 ) ( z ( 1 ) ( 2 ) ) 2 − z ( 1 ) ( 3 ) ( z ( 1 ) ( 3 ) ) 2 ⋮ ⋮ − z ( 1 ) ( n ) ( z ( 1 ) ( n ) ) 2 ) B =\begin{pmatrix} -z^{(1)}(2) &(z^{(1)}(2) )^2 \\ -z^{(1)}(3) &(z^{(1)}(3) )^2 \\ \vdots & \vdots \\ -z^{(1)}(n) &(z^{(1)}(n) )^2 \\ \end{pmatrix} B=⎝⎜⎜⎜⎛−z(1)(2)−z(1)(3)⋮−z(1)(n)(z(1)(2))2(z(1)(3))2⋮(z(1)(n))2⎠⎟⎟⎟⎞
u
=
(
a
b
)
T
u = \begin{pmatrix} a &b \end{pmatrix}^T
u=(ab)T
称
Y
Y
Y为数据向量,
B
B
B 为数据矩阵,
u
u
u 为参数向量,则
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型可以表示为矩阵方程
Y
=
B
u
Y = Bu
Y=Bu 。
(
6
)
(6)
(6)式可以看出,参数个数为
2
2
2个,方程个数大于
2
2
2,因此利用最小二乘求解待解未知数
u
u
u。最小二乘(使得
J
(
u
^
)
=
(
Y
−
B
u
^
)
T
(
Y
−
B
u
^
)
J(\hat u)=(Y-B\hat u)^T(Y-B\hat u)
J(u^)=(Y−Bu^)T(Y−Bu^)最小)解为:
u
^
=
(
a
^
,
b
^
)
=
(
B
T
B
)
−
1
B
T
Y
(7)
\hat u=(\hat a ,\hat b)=(B^TB)^{-1}B^TY \tag{7}
u^=(a^,b^)=(BTB)−1BTY(7)
Verhulst的白化型
对于 V e r h u l s t Verhulst Verhulst 模型的灰微分方程 ( 5 ) (5) (5),如果将 x ( 0 ) ( k ) x^{(0)} (k) x(0)(k) 的时刻 k = 2 , 3 , . . . n k = 2,3,... n k=2,3,...n视为连续连续的变量 t ,则数列 x ( 1 ) x^{(1)} x(1)就可以视为时间 t t t 的函数,记为 x ( 1 ) = x ( 1 ) ( t ) x^{(1)} = x^{(1)} (t) x(1)=x(1)(t) ,并让灰导数 x ( 0 ) ( k ) x^{(0)} (k) x(0)(k) 对应于导数 d x ( 1 ) d t \frac{d^{x(1)}}{dt} dtdx(1),背景值 z ( 1 ) ( k ) z^{(1)} (k) z(1)(k) 对应于 x ( 1 ) ( t ) x^{(1)} (t) x(1)(t) 。于是得到 V e r h u l s t Verhulst Verhulst 模型的灰微分方程对应的白微分方程为( V e r h u l s t Verhulst Verhulst 模型的白化型):
d x ( 1 ) d t + a x ( 1 ) = b ( x ( 1 ) ) 2 (8) \frac{d^{x(1)}}{dt} +ax^{(1)}=b(x^{(1)})^2 \tag{8} dtdx(1)+ax(1)=b(x(1))2(8)
需要注意的是, V e r h u l s t Verhulst Verhulst 模型的白化型并不是 V e r h u l s t Verhulst Verhulst 模型的灰微分方程离散得到的,仅仅是一种类推。 V e r h u l s t Verhulst Verhulst 模型的白化型是一个真正的微分方程,如果白化型模型精度高,则表明所用数列建立的模型 V e r h u l s t Verhulst Verhulst 模型与真正的微分方程模型吻合较好,反之亦然。
Verhulst预测
式 8 8 8白化方程的解为:
x ( 1 ) ( t ) = a x ( 1 ) ( 1 ) b x ( 1 ) ( 1 ) + ( a − b x ( 1 ) ( 1 ) ) e a t (9) x^{(1)}(t) =\frac {ax^{(1)}(1)} {bx^{(1)}(1)+(a-bx^{(1)}(1))e^{at}} \tag{9} x(1)(t)=bx(1)(1)+(a−bx(1)(1))eatax(1)(1)(9)
则灰色方程对应的解可以得到,即得到 x ( 1 ) x^{(1)} x(1)的预测值 x ^ ( 1 ) \hat x^{(1)} x^(1):
x ^ ( 1 ) ( k + 1 ) = a x ( 1 ) ( 1 ) b x ( 1 ) ( 1 ) + ( a − b x ( 1 ) ( 1 ) ) e a k (10) \hat x^{(1)}(k+1) =\frac {ax^{(1)} (1)} {bx^{(1)}(1)+(a-bx^{(1)}(1))e^{ak}} \tag{10} x^(1)(k+1)=bx(1)(1)+(a−bx(1)(1))eakax(1)(1)(10)
x ( 1 ) x^{(1)} x(1)是由 x ( 0 ) x^{(0)} x(0)累加得到的,因此可以通过累减 x ^ ( 1 ) \hat x^{(1)} x^(1)得到 x ( 0 ) x^{(0)} x(0)的预测值 x ^ ( 0 ) \hat x^{(0)} x^(0),即:
x ^ ( 0 ) ( k + 1 ) = x ^ ( 1 ) ( k + 1 ) − x ^ ( 1 ) ( k ) (10) \hat x^{(0)} (k+1)= \hat x^{(1)} (k+1)-\hat x^{(1)} (k) \tag{10} x^(0)(k+1)=x^(1)(k+1)−x^(1)(k)(10)
可以发现,
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型和
G
(
1
,
N
)
G(1,N)
G(1,N)的模型区别在于构建的灰色模型不同,
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型构建了对
x
x
x的二次项,因此,
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型适用于于非单调的摆动发展序列或具有饱和状态的
S
S
S形序列。
在实际问题中,如果原始数据本身呈
S
S
S 形的过程,这时,可取原始数据为
x
(
1
)
x^{(1)}
x(1) ,其一次累减生成
(
1
—
I
A
G
O
)
(1—IAGO)
(1—IAGO)为
x
(
0
)
x^{(0)}
x(0) ,建立
V
e
r
h
u
l
s
t
Verhulst
Verhulst 模型,直接对
x
(
1
)
x^{(1)}
x(1) 进行预测。