Skip to contents

Formula: a fixed random recurrent reservoir with a trained linear readout,


  x_t = (1 - a) x_{t-1} + a tanh(W x_{t-1} + W_in u_t)
  yhat_t = v' [1; x_t]

driven in one-step prediction mode (u_t = y_{t-1}, target y_t). Only v is fitted, by ridge regression; W and W_in are fixed and never trained.

Usage

Esnnts(
  y,
  reservoir_size = 20,
  spectral_radius = 0.9,
  leak = 1,
  ridge = 1e-06,
  washout = NULL
)

Arguments

y

Series (at least 3 points).

reservoir_size

Number of reservoir units.

spectral_radius

Target induced infinity norm of W.

leak

Leaking rate a in (0, 1].

ridge

Tikhonov regularisation for the readout.

washout

Initial steps discarded; default min(size, n %/% 4).

Value

List with estimate, mse, nrmse, coef, win, size, washout, nfit, n, method.

Details

The reservoir is generated deterministically – entry k is drawn from van der Corput base PRIMES[k mod 12] – so both language arms build the identical network. W is rescaled so its induced infinity norm equals spectral_radius; ||W||_inf < 1 is Jaeger's sufficient condition for the echo state property (2001, Prop. 3).

References

Jaeger (2001), GMD Report 148; Jaeger & Haas (2004), Science 304(5667):78-80, doi:10.1126/science.1091277.

Examples

V <- c(1, 2, 3, 4, 5, 6, 7, 8)
Esnnts(V)
#> $estimate
#> [1] 7.0546e-06
#> 
#> $mse
#> [1] 7.0546e-06
#> 
#> $nrmse
#> [1] 0.001878111
#> 
#> $coef
#>  [1] -3.4832286 -2.3049146 -3.4839277  0.2421566  1.7260679 18.5277148
#>  [7] -1.6485966 -1.6446963 -0.1735615 -1.2130860 -0.2745477  5.4740249
#> [13] -1.0661551  1.3810187  1.8473452  0.1900802  1.1550616  3.6462748
#> [19] -1.0009390 -2.9113311 -1.9446402
#> 
#> $win
#>  [1] -0.58677686  0.40828402 -0.86851211  0.68975069  0.04725898 -0.58382878
#>  [7] -0.73985432  0.89189189 -0.71875000 -0.90123457 -0.42400000 -0.51020408
#> [13] -0.40495868  0.56213018 -0.75086505  0.79501385  0.13421550 -0.51486326
#> [19] -0.67533819  0.94594595
#> 
#> $size
#> [1] 20
#> 
#> $washout
#> [1] 2
#> 
#> $nfit
#> [1] 5
#> 
#> $n
#> [1] 8
#> 
#> $method
#> [1] "Echo state network (reservoir computing)"
#> 
#> attr(,"class")
#> [1] "morie_rich_result" "list"