Best Practice Trendanalyse mit NN und Lib, wie vorgehen? (Allgemeiner Ablauf)

blaBra

Mitglied
Hi, sagen wir, ich hab drei Werte a, b und c über einen längeren Zeitraum in fünfminütigen Intervallen. Ich kann diese Werte auch sinnvoll zu einem Wert rechnen, zum Beispiel (a+b+c)/3.0=d. Und außerdem 10 Reihen dieser Werte, wobei diese Zeiträume vielleicht korrelieren können...

Wie sollte ich jetzt vorgehen, wenn ich sagen wir ich habe einen Zeitraum von 10 Stunden eine Vorhersage für die nächsten fünf Minuten treffen möchte mit einem NN? Wie muss das NN konstruiert sein, was ist die Ein- und Ausgabe, wie sehen die Trainingsdaten, die Aktualisierungsfunktion und der allgemeine Ablauf aus? Wie müssen Ein- und Ausgabe "geglättet" werden? Welchen Typs ist das NN dafür am besten geeignet?

Und sagen wir, ich habe eine Vorhersage für die nächsten fünf Minuten, die nicht absolut falsch ist, füge ich diese den alten Trainingsdaten hinzu und beginne dann noch mal von vorne? Irgendwie scheint mir das nicht schlüssig zu sein, vielleicht ist es auch absolut trivial ich weiß es nicht.

Hätte vielleicht jemand von euch eine kurze Skizze oder Beispiel dazu? Oder von mir aus etwas zum nachsehen/nachlesen? Das wäre sehr lieb.
 

blaBra

Mitglied
Ok mache ich es konkret, ich möchte eine Vorhersage für Häuserpreise zum Zeitpunkt x bestimmen.

Dabei habe ich Daten gesammelt, diese sind aber nicht alle vollständig, ich muss also erst einmal filtern.

Ein Haus hat dabei drei Parameter a b c, sowie einen aus diesen zusammengesetzten Parameter d.

Nun habe ich Daten gesammelt, und hier ist ein Überblick über die Anzahl der Datensätze:

Code:
1 => Eintrag[n=u, s=Statistik[min=13, max=18, c=6]]
2 => Eintrag[n=t, s=Statistik[min=7, max=18, c=12]]
3 => Eintrag[n=s, s=Statistik[min=2, max=18, c=17]]
4 => Eintrag[n=r, s=Statistik[min=1, max=1, c=1]]
5 => Eintrag[n=q, s=Statistik[min=1, max=6, c=6]]
6 => Eintrag[n=p, s=Statistik[min=1, max=12, c=12]]
7 => Eintrag[n=A, s=Statistik[min=1, max=18, c=18]]
8 => Eintrag[n=B, s=Statistik[min=1, max=18, c=18]]
9 => Eintrag[n=C, s=Statistik[min=1, max=18, c=18]]
10 => Eintrag[n=D, s=Statistik[min=1, max=18, c=18]]
11 => Eintrag[n=E, s=Statistik[min=1, max=18, c=18]]
12 => Eintrag[n=F, s=Statistik[min=1, max=18, c=18]]
13 => Eintrag[n=G, s=Statistik[min=1, max=18, c=18]]
14 => Eintrag[n=H, s=Statistik[min=1, max=18, c=18]]
15 => Eintrag[n=I, s=Statistik[min=1, max=18, c=18]]
16 => Eintrag[n=J, s=Statistik[min=1, max=18, c=18]]
17 => Eintrag[n=K, s=Statistik[min=1, max=18, c=18]]
18 => Eintrag[n=L, s=Statistik[min=1, max=18, c=18]]
19 => Eintrag[n=M, s=Statistik[min=1, max=18, c=18]]
20 => Eintrag[n=N, s=Statistik[min=1, max=18, c=18]]
21 => Eintrag[n=O, s=Statistik[min=1, max=18, c=18]]
22 => Eintrag[n=P, s=Statistik[min=1, max=18, c=18]]
23 => Eintrag[n=Q, s=Statistik[min=1, max=18, c=18]]
24 => Eintrag[n=R, s=Statistik[min=1, max=18, c=18]]
25 => Eintrag[n=S, s=Statistik[min=1, max=18, c=18]]
26 => Eintrag[n=T, s=Statistik[min=1, max=18, c=18]]
27 => Eintrag[n=U, s=Statistik[min=1, max=18, c=18]]
28 => Eintrag[n=V, s=Statistik[min=1, max=18, c=18]]
29 => Eintrag[n=W, s=Statistik[min=1, max=18, c=18]]
30 => Eintrag[n=X, s=Statistik[min=1, max=18, c=18]]
31 => Eintrag[n=Y, s=Statistik[min=1, max=18, c=18]]
32 => Eintrag[n=Z, s=Statistik[min=1, max=18, c=18]]
33 => Eintrag[n=[, s=Statistik[min=1, max=18, c=18]]
34 => Eintrag[n=\, s=Statistik[min=1, max=18, c=18]]
35 => Eintrag[n=], s=Statistik[min=1, max=18, c=18]]
36 => Eintrag[n=^, s=Statistik[min=1, max=18, c=18]]
37 => Eintrag[n=_, s=Statistik[min=1, max=18, c=18]]
38 => Eintrag[n=`, s=Statistik[min=1, max=18, c=18]]
39 => Eintrag[n=a, s=Statistik[min=1, max=18, c=18]]
40 => Eintrag[n=b, s=Statistik[min=1, max=18, c=18]]
41 => Eintrag[n=c, s=Statistik[min=1, max=18, c=18]]
42 => Eintrag[n=d, s=Statistik[min=1, max=18, c=18]]
43 => Eintrag[n=e, s=Statistik[min=1, max=18, c=18]]
44 => Eintrag[n=f, s=Statistik[min=1, max=18, c=18]]
45 => Eintrag[n=g, s=Statistik[min=1, max=18, c=18]]
46 => Eintrag[n=h, s=Statistik[min=1, max=18, c=18]]
47 => Eintrag[n=i, s=Statistik[min=1, max=18, c=18]]
48 => Eintrag[n=j, s=Statistik[min=1, max=18, c=18]]
49 => Eintrag[n=k, s=Statistik[min=1, max=18, c=18]]
50 => Eintrag[n=l, s=Statistik[min=1, max=18, c=18]]
51 => Eintrag[n=m, s=Statistik[min=1, max=18, c=18]]
52 => Eintrag[n=n, s=Statistik[min=1, max=18, c=18]]
53 => Eintrag[n=o, s=Statistik[min=1, max=18, c=18]]

n ist dabei der Name, c die Anzahl der gesammelten Datensätze, min zu welchem Zeitpunkt der Datensatz erstmals erstellt wurde, max zu welchem Zeitpunkt der letzte Datensatz gemacht wurde.

Jetzt ist es kompliziert, für das Training kann ich eigentlich nur t und s nutzen (Zeile 2 und 3). Die Anderen Einträge gab es zum Zeitpunkt der Aufzeichnung bereits, das heißt es liegen keine Daten über die anfängliche Preisentwicklung vor. Und u kann ich nicht nutzen (Zeile 1), weil insgesamt nicht genügend Aufzeichnungen vorhanden sind, aber u könnte ich nutzen, um eine Vorhersage des Preises zum Zeitpunkt x=19 bzw. global x=7 zu treffen.

Ist das so weit erst mal verständlich?

Wenn ich t und s für das Training wähle, könnte es natürlich sein, dass sich die Entwicklungen nicht korrelieren. Ist das schlimm oder sogar gut?

Ich zeichne jetzt mal schematisch den Verlauf des Parameters a von t und s:

1655729405628.png
(Bitte nicht vergessen: es gibt 3 Parameter bzw. Verläufe...)

Wie man sieht ist bei t die Trendentwicklung anders als bei s: t steigt etwas schneller, fällt dann aber ab. s steigt etwas langsamer, fällt aber nicht ab. Außerdem oszilliert t langsamer als s.

Das soll erlernt/trainiert werden, und um dann eine Vorhersage für u treffen zu können.

Wie gehe ich vor?
 

Ähnliche Java Themen

Neue Themen


Oben