KSG TE continued

Rozšíril som KSG estimator TE na ľubovoľné nastavenia parametrov.

\mathbf{T}_{Y\rightarrow X}^{(k,l)}(t)=\mathbf{I}(X_{t}:\mathbf{Y}_{t-u}^{l}\mid\mathbf{X}_{t-1}^{k})

kde

\mathbf{X}_{t-1}^{k}=({X}_{t-1},{X}_{t-1-\tau_{k}},{X}_{t-1-2\tau_{k}},...,,{X}_{t-1-(k-1)\tau_{k}})

\mathbf{Y}_{t-u}^{l}=({Y}_{t-u},{Y}_{t-u-\tau_{l}},{Y}_{t-u-2\tau_{l}},...,,{Y}_{t-u-(l-1)\tau_{l}})

Testovanie môjho estimatora či robí to čo má a či mi to sedi s JIDT

Rendered by QuickLaTeX.com

Pozorovanie:
Je to strašne pomale (pri k=2, \tau_{k}=1, l=2, \tau_{l}=1, sample size N=645, 155 s). Pozeral som sa na dátovú štruktúru k-d tree, ale vraj pri vysoko rozmerných dátach nie je o mnoho rýchlejší ako brute force. Tak neviem či to má vôbec zmysel implementovať.

Použité dáta:
SFI-heartRate_breathVol_bloodOx3.txt

Zdrojaky:
TE.py

 

 

KSG estimator

Prvý nástrel KSG estimatora Transfer Entropy.

Parametre:

Target history embedding length=1
Target history embedding delay=1
Source history embedding length=1
Source history embedding delay=1
Delay from source to target=1
k-nearest neighbours=4

Pozorovania:
Porovnával som hodnoty TE môjho KSG algoritmu a JIDT Liziera na rovnakom datasete. Výsledky: môj=0.073745641982090104; JIDT=0.0737. Vyzerá, že celkom sedí.

Je to pomalé. Časová zložitosť je >\mathrm{O}(N^{2})

To Do:

Zovšeobecnit estimator na ľubovoľné hodnoty parametrov.
Pozrieť sa na optimalnejšie riešenia. (KDTree?)

Použité dáta:
SFI-heartRate_breathVol_bloodOx3.txt

Zdrojáky:
TE.py

 

 

Transfer entropy

Po dlhom čase update.

Odložím si sem len referencie na literatúru, ktorú som štúdoval do teraz. Chcel som sa dostať do teórie informácie a kódovania, aby som lepšie porozumel Shannonovému chápaniu informácie a entropie. Ku tomu mi pomohla táto kniha (lepšie povedané MacKayové prednášky na základe tejto knihy):
David J. C. MacKay – Information Theory, Inference and Learning Algorithms, Cambridge University Press; Sixth Printing 2007 edition (25 Sept. 2003).

Ďalej na teóriu ohľadom Transfer Entropy a rátanie/odhadovanie tieto dve knihy:
Bossomaier, T., Barnett, L., Harré, M., Lizier, J.T. – An Introduction to Transfer Entropy, Springer International Publishing, 2016.
Michael WibralRaul VicenteJoseph T. Lizier – Directed Information Measures in Neuroscience, Springer-Verlag Berlin Heidelberg, 2014.

Na Transfer entropy pri našej úlohe sa zdá najlepšie použiť Kraskov, Stogbauer a Grassberger algoritmus (KSG). Do konca týždňa by som chcel mať napísanú prvú verziu KSG estimatora TE.

 

 

NRMSE a rezervoir size

Pozeral som sa na vplyv veľkosti rezervoiru na NRMSE pri predikciach Mackey-Glass a NARMA pre 3 rôzne počty iterácií OG a ON rezervoirovej matice  (0, 50, 100).

Nastavenia siete:
Počet runov = 10
Leaking rate = 1
reg=0
Počiatočný spektrálny polomer = 0.9
initLen = 100
trainLen = 2000
errorLen = 1000
Win ~ R(-0.01,0.01)
W~ N(0,1)

Ortonormalizácia

Pozn. v obrázku pre Mackey – Glass sú zle označené osi x= rezervoir size a y=NRMSE

hmm tak OG rezervoirovej matice je časovo náročná. Už pri veľkosti rezervoiru 300 to trva cca 10 min. Možno to nechám rátať cez noc.

Ortogonalizácia

Zdrojaky:

ESBrezervoirSIZE.py

 

 

Bias ESN, OG a ON

Pozeral som sa na vplyv konštatnej jednotky na vstupe do ESN na NRMSE pri predikciach Mackey-Glass a NARMA.
Ďalej som ešte zrušil priame input-output spojenie a pozeral sa na chybu pri tých istých nastaveniach.

Nastavenia siete:
Počet orto iterácií = 100
Počet runov = 10
Veľkosť reservoiru = 100
Leaking rate = 1
reg=0
Počiatočný spektrálny polomer = 0.9
initLen = 100
trainLen = 2000
errorLen = 1000
Win ~ R(-0.01,0.01)
W~ N(0,1)

Ortogonalizácia

   
  

Ortonormalizácia

  
 

Pozn. priemerna chyba pri 100-tej iterácii Mackey – Glass pri ON I/O off bola 0.00052882

Zdrojaky:

ESNbiasOFF.py
ESNogDIRECToff.py

 

 

podmienenosť matice (X*X.T + reg*I)

Pozeral som sa na to prečo je taký veľký rozptyl chýb pri nastavení parametra ridge regresie na 0. Pri rátaní Wout sa ráta inverzia matice (X*X.T + reg*I)  ,ktorá je síce regulárna ,ale zle podmienená. Číslo podmienenosti matice som rátal pomocou numpy.linalg.cond(). Nastavenia parametrov boli ako v #5.

Condition number – wiki link

Ortogonalizácia

  

pozn. pri reg=0 je rozsah zobrazených čísel podmienenosti matice <1e16 – 1e18>

Ortonormalizácia

  

pozn. pri reg=0 je rozsah zobrazených čísel podmienenosti matice <1e12 – 1e18>

 

Záver: Vysoká odchylka chýb pre reg=0 by mohla byť spôsobená veľkou podmienenosťou matice X*X.T.

 

Skúsil som teda pre reg=0 namiesto klasickej inverzie rátať p-inverziu. Dole sú výsledky chýb ako v #5.

Ortogonalizácia

 

Ortonormalizácia

 

 

 

Prieskum “regularization parameter” ridge regresie pri rátaní Wout vs. OG a ON.

Robil som prieskum správania sa chyby predikcií pre OG a ON metódu W  pre 3 rôzne nastavenia regularizačného parametra pri ridge regresii.

Nastavenia parametrov ESN:
Počet orto iterácií = 100
Počet runov = 10
Veľkosť reservoiru = 100
Leaking rate = 1
Počiatočný spektrálny polomer = 0.9
Win ~ R(-0.01,0.01)
W~ N(0,1)

MackeyGlass OG

NARMA OG

MackeyGlass ON

 

NARMA ON

 

Pozrel som sa ešte na súvis  NRMSE, leaking rate a regularizačného parametera pri ridge regresii spolu. Dáta boli MackeyGlass a dve rezervoirové matice W. Jedna pred ON a druhá po 60 iteráciach ON.

leaking rate: 0-1 s krokom 0.1

ridge regularization: 0-1e-2 s krokom 1e-5

 

leaking rate: 0-1 s krokom 0.1

ridge regularization: 0-1e-4 s krokom 1e-7

 

leaking rate: 0-1 s krokom 0.1

ridge regularization: 0-1e-6 s krokom 1e-9

Záver: Vyzerá to tak, že najmenšie chyby pre odhady NARMA a Mackey-Glass dostávame pre a=1 a reg=0. Tiež sa zdá ,že chyba monotónne klesá smerom ku týmto hodnotám parametrov.

 

Zdrojaky:
errorSROGMC.py
errorSRONMC.py
ESNpar.py