» »

Napovedovanje s pomočjo nevronskih mrež

Napovedovanje s pomočjo nevronskih mrež

GaS ::

Zivjo! Zanima me sledeca stvar; ali obstaja kaksen ne prevec zapleten program, ki bi mi na podlagi dolocenih vhodnih podatkov izracunal oz. napovedal nove vrednosti? Recimo v Excelu je ze implementerana funkcija Forecast, vendar za samo 2 spremenljivke se mi zdi. Imam 3 vhodne podatke in en izhodni podatek. Program naj bi se naucil glede na vrednosti vhodnih in izhodnih podatkov ki jih ze imam, nato pa bi glede na nove vhodne izracunal nove izhodne podatke.

Je kaksne tak program oz. kako bi lahko to realiziral v Excelu? Sam se sprobal NeuroSolutions 4 vendar je stvar zelo kompleksna in bi se najprej moral naucit sam program kako deluje..Ne rabim tako zakomplicirane stvari:))

Thomas ::

Link.

Ohka ti pomagam ...

snow ::

Mi daš training dato, pa par podatkov, ki jih je treba predvidevat?
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Gundolf ::

Kaj pa če poiščeš program po imenu Weka?

GaS ::

Hmm..moram priznat da se ne spoznam na tele nevronske mreze:\ Zdej sm instaleral Weka, tko da morm probat mal to zadevo..Drgac imam pa take podatke; dneve v tednu oznacene z 1-7, datum, ter povprecno temperaturo tega dneva. Output je pa neka kolicina porabljene energije glede na dan v tednu(vikend/praznik/navadni delovni dan) ter glede na temperaturo. Datum je pa odvisn predvsem od letnega casa. Namrec output ni enak poleti in pozimi..A ni kaksna enostavna pot da naredim to v Excelu?

OwcA ::

Zakaj svojega problema ne prevedeš na problem 2 spremenljivk, temperature in datuma, slenji tako implicitno vsebuje dan v tednu in ne kompliciraš?
Otroška radovednost - gonilo napredka.

GaS ::

Ja sej bi..sam bom kasneje potreboval se ucinek vetra pa se par drugih stvari bo treba upostevat,tako da v vsakem primeru bi potreboval neko enostavno resitev kako narest to..Ce obstaja seveda.Pa to stvar ubistvu fotr rab, zato sm mislu ce se da narest da je vse v excelu, ker da bo zdej se v nevemkaj pretvarju pa z tremi razlicnimi programi naredu predn bo ksn rezultat..Sej ves kako je to..Ko bi najrajs sam klknu enkrat pa da mu vse nardi pa sprinta pa se en komad zapoje:D

OwcA ::

Potem ti pa ne preostane drugega kot, da se seznaniš s kakšno izmed predlaganih rešitev.
Otroška radovednost - gonilo napredka.

snow ::

Ehe, če bi excel mel tole kar ti rabiš, bi bil tud kul :)

Z neural netsi je tako.. moraš dost pozit kako boš podal input vector, pa kaka bo struktura mreže. Najbrž obstajajo kakšni dobri programi, tudi kakšne dobre zastonjske najdeš, sam moraš vseeno poznati delovanje nevronske mreže. Saj so gotovo, kakšne dost avtomatske zadeve, ampak za tole bi ali rabu ful nekih stvari naštimat v programu, alpa si napisat en program, da bi tvoje podatke pretvoru v ene bolj normalne za nevronsko mrežo.
Kak bi blo potrebno imet tvojo zadevo skodirano?

IN1) Dnevi v tednu(7 inputov):
pon 1 0 0 0 0 0 0
tor 0 1 0 0 0 0 0
sre 0 0 1 0 0 0 0
.
.
.

IN2) Praznik (1 input)
je praznik - 1
ni praznik - 0

IN3) Povprečna temperatura (1 input)
cifra pač (pametno je pred uporabo standarizirat te vrednosti na srednjo vrednost 0 in standardno deviacijo 1)

OUT1) Količina energije... cifra.


Maš pa še eno možnost.
GP (genetic programming).
Evolucijska zadeva, ki ti spiše formulo/program, s povezavo inputov in outputa.
En program, za katerega si mislim, da dost dobro dela: http://www.gepsoft.com/gepsoft/Demos/in...


Aja pa seveda bi bil Critticall več kot primeren za ta job :) To moraš pa Thomasa gnjavit. Oziroma maš neregistrirano verzijo na na www.critticall.com. To bo najbrž še najlažje. Zevoluirat predictorja. :D
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

GaS ::

OK, zgleda da je stvar bolj zakomplicirana kot sem si predstavljal na zacetku8-O
Zdej sem si dal dol APS da vidim kako kej stvar deluje..Verjetno bi se dalo tudi v VBAju kej sprogramirat; a se dobijo ksne skripte mogoce? Sicer ti pa itak tale APS ze zgenerira kodo..

Thomas ::

Dej vso dato semle. Sej ni kakšna skrivnost, ane?

GaS ::

itak da ne:D to sm zdej dal v txt (tab seperated). Datum je zdej ubistvu samo mesec(1-12, drugi stolpec). Prvi so dnevi, tretji temperatura, zadnji pa količina.

6 1 4,3 302854,75
7 1 2,9 334041,13
1 1 -0,3 390091,63
2 1 0,9 384208
6 1 -2 374006,88
7 1 -2,1 408329,63
1 1 -3,2 446788,38
2 1 0,1 424050
3 1 0,4 416259,25
4 1 2,3 396976,25
5 1 2,4 343751,38
6 1 1,6 328979,75
7 1 -1,1 389690,13
1 1 -0,5 425906,25
2 1 0,3 424216,38
3 1 -1,3 433991,25
4 1 -2,8 439576,5
5 1 -4,8 459889,38
6 1 -5,5 446777,38
7 1 -6,7 482988
1 1 -2,1 470442,5
2 2 1,2 424070,63
3 2 0,9 417983,5
4 2 0,9 401567,38
5 2 -2 405747,38
6 2 -3,9 397485
7 2 -5,3 445318,5
1 2 -7,2 489119,13
2 2 -7 499130,5
3 2 -6,5 523336
6 2 6,1 317483,38
7 2 4,6 313055,88
1 2 2,7 354767,88
2 2 1,3 386685,75
3 2 1,4 381466,25
4 2 0,3 392737,13
5 2 -0,2 376439,25
6 2 1,1 331123,38
7 2 0,5 375733,88
1 2 -1,4 421059,38
2 2 0,3 405161,63


[naredil kanček bolj berljivo -OwcA]

Zgodovina sprememb…

  • spremenilo: OwcA ()

GaS ::

hmm to vidm da ni najbols prslo..evo tuki: users.volja.net/dvdeus/data/data.txt ali pa data.xls

snow ::

Ok, vse lepo in prav, ampak zdej sem se neki spomnu. A ti bi rad predvideval porabo za naprej recimo a ne? Kdo ti bo pa temperaturo za naprej povedal? Al boš za razne temperature probal al kako?

Pa kakšna dolgoročna napovedovanja za naprej niso nekaj ful zanesljiva.
No saj šlo bi, kak točno bi pa moral probat. Bolj zanesljiva pri nevronskih mrežah je interpolacija (se pravi predvidevanje vrednosti, ki so nekje vmes), ampak mal ekstrapolacije bi tud moglo it :)

Bomo se mal pozabavali, prvo pa mi povej za kolk naprej bi ti te predikcije rad, ter kako s to temperaturo?
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

GaS ::

Ja tocno tako;) Fotr dobi za vsako uro temperaturo, tako da s temperaturo ni problemov.. Drugace pa tako kot si si zamislil. Zdej sm najdu en Forecaster XL za Excel..bom se to probal kako deluje.

GaS ::

Tale Forecaster je kr lustna zadevca.Sicer ni zelo natancen ampak bi ga blo treba mal nastimat se pomoje..

Thomas ::

Vsi podatki so legalni, ki jih že veš. Se pravi, vsak trenutek lahko uporabiš zgodovino in kar še veš.

Tko sem naredil in dal mau računat.



$DECLAREINT month day temper x eror zero characters mm dif prediction prenos
$DIMENSION months[41] days[41] tempers[41] input[41] output[41]
$WEIGHTS commands=0
$PENVAL eror
$RESVAR eror x characters input[]
$invar months(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) days(6,7,1,2,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,6,7,1,2,3,4,5,6,7,1,2) tempers(43,29,-3,9,-20,-21,-32,1,4,23,24,16,-11,-5,3,-13,-28,-48,-55,-67,-21,12,9,9,-20,-39,-53,-72,-70,-65,61,46,27,13,14,3,-2,11,5,-14,3) input(302854,334041,390091,384208,374006,408329,446788,424050,416259,396976,343751,328979,389690,425906,424216,433991,439576,459889,446777,482988,470442,424070,417983,401567,405747,397485,445318,489119,499130,523336,317483,313055,354767,386685,381466,392737,376439,331123,375733,421059,405161) characters (41)
$RETVAR output[]
$MINIMIZE LINES 40
$showvar eror

zero=0;
for (x=zero; x<characters; x++) {
day=days[x];
month=months[x];
temper=tempers[x];
mm=input[x];
dif=mm-prediction;
dif=abs(dif);
eror=eror+dif;
prenos=input[x];
output[x]=prenos;
$BES

// This is the area, where Evolution may take place and grow an embryo predictionning code.
$EES
}

Thomas ::

Mau popravljena koda. Dovolimo samo 5 vrstic predictorja, da se razvije, ne štejemo mu pa napake za prva dva dneva. Šele tretji dan, ko ima že nekaj izkušenj. Bolj smiselno.


$DECLAREINT month day temper x eror zero characters mm dif prediction prenos one
$DIMENSION months[41] days[41] tempers[41] input[41] output[41]
$WEIGHTS commands=0
$PENVAL eror
$RESVAR eror x one characters input[]
$invar months(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) days(6,7,1,2,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,6,7,1,2,3,4,5,6,7,1,2) tempers(43,29,-3,9,-20,-21,-32,1,4,23,24,16,-11,-5,3,-13,-28,-48,-55,-67,-21,12,9,9,-20,-39,-53,-72,-70,-65,61,46,27,13,14,3,-2,11,5,-14,3) input(302854,334041,390091,384208,374006,408329,446788,424050,416259,396976,343751,328979,389690,425906,424216,433991,439576,459889,446777,482988,470442,424070,417983,401567,405747,397485,445318,489119,499130,523336,317483,313055,354767,386685,381466,392737,376439,331123,375733,421059,405161) characters (41)
$RETVAR output[]
$MINIMIZE LINES 22
$showvar eror

zero=0;one=1;
for (x=zero; x<characters; x++) {
day=days[x];
month=months[x];
temper=tempers[x];
mm=input[x];
dif=mm-prediction;
dif=abs(dif);
if (x>one) {eror=eror+dif;}
prenos=input[x];
output[x]=prenos;
$BES

// This is the area, where Evolution may take place and grow an embryo code.
$EES
}


GaS ::

Hmm..Vidm da si se zelo zagrel za tole8-O Tole je verjetno misljeno za Criticall?

Thomas ::

Ja, je. Zdej se mi pa računa, ja. 5 vrstic "strict C kode", ki bi karseda dobro predvideli naslednjo vrednost. Bom dal gor čez kakšno uro teh 5 vrstic in kok se zmoti.

Thomas ::

Ergo tole rata, pa imamo okoli 95% napoved.


day+=5;
prediction=day<<day;
prediction+=-6827;
prediction=prediction+prenos;


Dnevu prištej 5, potem šiftaj day za day bitov levo. To je predikcija, ki jo je treba zmanjšati za 6827 in ji prišteti včerajšnjo vrednost.

Hja.

Temperatura je v desetinkah, ne stopinjah!

GaS ::

Uff.. Si se pa potrudil! Hvala ti res. Bom probal da vidmo kako to deluje;)

Hvala še enkrat!

Thomas ::

No, sej se mi je splačalo. Sem odkril šurka pri sebi, če drugega ne! Če boš imel pri implementaciji kakšen problem, samo praši!

gzibret ::

Zelo dober simulator nevronskih mrež je Statistica Neural Networks ( homepage). Vendar za povezavo z excellom rabiš še navadno Statistico (mislim da). Poišči na Donkeyu, sigurno je gor. Pa zraven je zelo dober help. Ta program je za plačat.

Brezplačni program:

Java Neural Network Simulator. Poišči v googlu. Malo bolj neroden, ampak brezplačen. Pa bolj levi help je zraven. Downloadaš lahko tuki.
Vse je za neki dobr!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Verjetnost pri kroglicah

Oddelek: Šola
61596 (1293) Math Freak
»

Odprl sumljiv fajl - kaj zdaj?

Oddelek: Informacijska varnost
81456 (1159) Malcolm_Y
»

[Naloga] : Max kompresija testne datoteke

Oddelek: Programiranje
343105 (2029) StratOS
»

cene permutacij help please

Oddelek: Programiranje
262056 (1663) Sergio
»

matematika - verjetnost

Oddelek: Šola
92300 (2169) losnah

Več podobnih tem