Voor de benodigde data, zie hier
voor S&P500 aandelen. Formaat: Date, Company, Open, High, Low, Close, Volume.
Voor de zekerheid: het gaat om deze file.
Liefhebbers mogen ook rekenen aan de
bitcoin.
Schrijf vervolgens zonodig een klein
Perl-programma
(voor Perl, zie ook
acht sheets in PDF)
dat de benodigde kenmerken/attributen uit de originele file opslaat
in het gewenste formaat, bijvoorbeeld
alle attributen, of juist een samenspel van enkele.
Alle waardes moeten omgezet worden naar een getal tussen 0 en 1,
bijvoorbeeld door te delen door de maximale waarde van het betreffende attribuut.
Waarden tussen 0 en 1 dus, wellicht gescheiden door spaties.
Dat geldt ook voor de target-waarde.
Probeer bijvoorbeeld
de slotkoers te voorspellen uit de drie andere, al dan niet aangevuld met
het volume. Vergelijk dit met een naieve voorspeller als
de openingskoers. (Probeer eens 3 verborgen knopen, α = 0.1, en
100000000 voorbeelden.)
Ter inspiratie:
converteer.pl.
Tip: maak eerst een netwerk voor het 2-inputs XOR probleem. Gebruik het skelet-programma en bekijk deze hints. Als dat goed gaat, is het tijd voor het echte werk. Zorg er hierbij voor dat de voorbeelden in random volgorde worden aangeboden.
Voor gnuplot zie de eerste opgave.
[Het volgende geldt voor een netwerk met twee inputs ...]
Maak nu een file plot.p met daarin bijvoorbeeld
set xrange [0:1]
set yrange [0:1]
set pm3d
splot sin(2*pi*x)*cos(2*pi*y)
En laad deze file in gnuplot met gnuplot> load "plot.p".
Als je een netwerk hebt om deze functie te benaderen,
kun je het beste aan het eind van je
programma alle benodigde trio's (x,y,netwerkuitvoer) afdrukken in een file
(zeg net.uit;
één trio per regel),
waarbij x met kleine stapjes door het interval [0,1] loopt,
en y idem,
terwijl netwerkuitvoer de bijbehorende
uitvoer van het getrainde netwerk is.
In
gnuplot kun je eenvoudig een grafiekje
van netuitvoer en beoogde functie maken met behulp van:
gnuplot> splot "net.uit", sin(2*pi*x)*cos(2*pi*y)
[En nu weer terug naar algemenere netwerken ...]
Misschien kun je voor netwerken met meer dan twee inputs zo'n mooie 3D plot als volgt maken. Geeft de "gemiddelde fout" bij verschillende aantallen epochs en verschillende aantallen verborgen knopen.
Leg in het verslag ook kort BackPropagation uit, met de formules,
en uiteraard een referentie naar Russell en Norvig. Geef duidelijk
aan welke input je hebt gebruikt.
In te leveren: geprint verslag (in LaTeX gemaakt; de C++-code en eventueel Perl-code als Appendix,
zie verder
hier
voor opmerkingen over het verslag),
en per email: C++- en eventueel Perl-code.
Stuur svp geen emails met LaTeX/PostScript/PDF.
Deadline: dinsdag 21 mei 2013; Den Haag: woensdag 22 mei 2013.
Vragen en/of opmerkingen kunnen worden gestuurd naar: kosters@liacs.nl.
10 april 2013 — http://www.liacs.nl/home/kosters/AI/nn13.html