自回归模型的LMS学习曲线-神经网络与机器学习笔记3

对于自回归模型 x(n)=ax(n1)+ϵ(n)
a=0.99 , σ2ϵ=0.02 , σ2x=0.995
利用这个模型参数一组标准数据,然后使用LMS方法求解这个模型中的参数a
为了得到LMS学习曲线,我们将求解过程重复100次,并且每次产生不同的标准数据用于求解,得到100次学习后第n步的平均最小方差 100i=1e2/100 ,来画学习曲线。

python代码如下:

import numpy as np
import matplotlib.pyplot as plt;
plt.close('all');
N=10000;#递归5000次
#生成方差为0.02,期望为0的噪音
var=0.02
eta = 0.001
sigma=np.sqrt(var)
#sigma=var;
E=[]
W=[]
ERR=[]
n=100 #外部迭代100次
for iter in range(0, n):
    #产生随机数
    np.random.seed(iter)
    e=np.random.normal(0,sigma,N)
    xi=[0]
    for i in range(0,N):
        xi.append(0.99*xi[i]+e[i])

    #LMS学习过程
    ee = []
    xi0=0;k=0;M=5000; xi=xi[5000:N]
    x0=k*xi0;
    ee.append(xi[0]-x0)
    k+=eta*ee[0]*x0;
    for i in range(1, M):
        xp=xi[i-1]*k;
        ee.append(xi[i]-xp)
        k+=eta*xi[i-1]*ee[i];

    W.append(k)
    E.append([eei**2 for eei in ee])
    print iter
for p in range(0,len(E[0])):
    sum=0
    for q in range(0,len(E)):
        sum+=E[q][p]
    sum/=len(E)
    ERR.append(sum)

plt.figure()
plt.semilogy(ERR)
plt.show()

运行结果如下:
自回归模型的LMS学习曲线-神经网络与机器学习笔记3_第1张图片

你可能感兴趣的:(machine,learning)