Hallo, ich habe folgende Aufgaben/Problemstellung: Ich habe x verschiedene Signale, die zeitgleich aufgenommen werden. Die Signale haben in gewisser Weise eine Abhängigkeit. Diese Abhängigkeit kann aber nicht exakt in eine Formel gepackt werden. Es kann sich z.B. um Wetterdaten wie: Temperatur, Grad der Bewölkung, Windgeschwindigkeit, Windrichtung, Niederschlag etc. handeln. Nun fällt einer der Sensoren, z.B. zur Messung der Temperatur T, für einen Zeitraum t aus. Für diesen Zeitraum t, für den die Messgröße T nun nicht vorliegt, soll die Messgröße (in diesem Falle T) geschätzt werden. In Betracht können ja verschiedene Dinge gezogen werden: - bisheriger Verlauf der Messgröße T - zukünftiger verlauf der Messgröße T (nicht immer möglich) - Zusammenhang zwischen T und den restlichen Messgrößen, die ohne Unterbrechung vorhanden sind Mit welchen Methoden lassen sich diese Daten fusionieren, um den fehlenden Signalabschnitt t der Temperatur T möglichst genau (d.h. mit den Erkenntnissen/Erfahrungen der vorhanden/nachfolgenden Messdaten) zu interpolieren/abzuschätzen. Eignen sich hier z.B. künstliche neuronale Netze (KNN)? Wenn ja, welcher Typ? Welche anderen mathematischen Methoden lassen sich anwenden, um ein solches Problem generell zu lösen? Danke schonmal für Anregungen und Diskussionen Servus, DerWolf
:
Verschoben durch User
Wobei der Kalman-Filter eine Methode wäre die Parameter von ARMA-Modellen (also endlich viele Parameter) optimal zu schätzen.
Aber benötigt der Kalman-Filter nicht ein Model als Grundlage? D.h. eine mathematische Beschreibung der einzelnen Signal in Form von Gleichungen?
Kurz mal bei Google gesucht: http://www.uh.edu/~bsorense/kalman.pdf Damit sollte dir schon mal ein kleiner Einstieg gelingen. p.s.: Du hast schon Recht mit deiner Frage. Die Grundlage des normalen Kalman-Filters bzw. der ARMA-Modelle bildet ein lineares Gleichungssystem. Du gehst also davon aus, dass dein zu schätzender Prozess sich durch lineare Gleichungen beschreiben lässt.
Ja das stimmt schon. Ich bin auf dem Gebiet nun nicht so der Crack, aber was ich mal gemacht habe: Mittels linearer Prädiktion kann man aus einem vorhandenen Stück Signal Koeffizienten ermitteln. Mit denen kann man dann das Signal, wenn es mal abgebrochen ist, fortführen mittels digitaler Filtergleichung. Kurze Aussetzer eines Audiosignals kann man so unhörbar ausgleichen. Einfach mal nach linearer Prädiktion suchen.
Was du suchst ist ein Prädiktor für die Temperatur als Funktion aller zur Verfügung stehenden Messwerte. Um das praktisch umzusetzen kannst du dir ein paar Variablen heraussuchen von denen du meinst sie enthalten Information über die vorauszusagende Temperatur, z.B. die Temperatur 1 Tag zuvor, 1 Tag danach, vor einem Jahr, und die sonstigen aktuellen Messwerte, und versuchen damit einen Prädiktor zu trainieren (z.B. ein KNN, linear wird nicht gut funktionieren). Ob das verglichen mit einfachen Methoden (Mittelwert zwischen Temperatur 1 Tag zuvor und 1 Tag danach) viel bringt halte ich aber für zweifelhaft.
Ok, das mit der linearen Prädiktion sehe ich mir genauer an. Aber ich will ja zusätzlich noch die Information aus mehreren Datenströmen vereinen. Nehmen wir an, ich messe die Temperatur T und die Bewölkung B. Nimmt B zu, so sinkt die T (andere Einflüsse jetzt mal aussen vor gelassen). Es exisitiert hier also ein Zusammenhang zwischen B und T. Da die Veränderung der Bewölkung B aber nicht periodisch ist, denke ich, ist es schwierig, das nur anhand von B vorherzusagen. Betrachte ich aber T und weiß aus der Erfahrung, dass es einen Zusammenhang gibt, so kann ich von T auf den Verlauf von B schließen (bzw. andersherum) Fällt also Temp.Sensor aus, kann ich den weiteren Verlauf anhand der Messung von B schätzen. Nun, in diesem recht einfach Beispiel ist das ganze noch gut Vorstellbar. Es sollen aber mehr Eingangsvariablen berücksichtigt werden. Auch weiß ich vorher noch nicht, wie die einzelnen Parameter zusammenhängen. Das könnte man durch scharfes hinsehen natürlich herausfinden (bis zu einem gewissen Grade). Aber so eine Art lernendes System wäre schon toll.
@Andreas: Das mit den KNN dachte ich auch schon, nur kenne ich mich damit noch nicht gut genug aus um abschätzen zu können, ob sie für dieses Proble geignet sind. Wenn ich Möglichkeiten wie den von Dir genannten Mittelwert ausschließe (weil ich z.B. nur einen Tag lang messe), wären dann KNN ein gutes Mittel?
Andreas: Könntest du vielleicht noch erläutern, warum du meinst, dass eine lineare Prädiktion nicht funktioniere? Ist nicht kritisch gemeint, sondern eher aus eigenem Interesse.
Gast1 schrieb: > Könntest du vielleicht noch erläutern, warum du meinst, dass eine > lineare Prädiktion nicht funktioniere? Ich glaube einfach nicht dass es man durch eine Linearkombination von Variablen wie Niederschlagsmenge, Windrichtung usw. auf die Temperatur kommt. So ein Zusammenhang sieht vielleicht so aus, "wenn starker Wind von Westen kommt, dann ist es kälter"; das ist nicht linear. DerWolf schrieb: > Wenn ich Möglichkeiten wie den von Dir genannten Mittelwert ausschließe > (weil ich z.B. nur einen Tag lang messe), wären dann KNN ein gutes > Mittel? Würde ich schon sagen, aber kommt auf die Daten an. Wenn es einen starke Abhängigkeit zwischen den anderen Messdaten und der Temperatur gibt, dann ist ein KNN meiner Meinung nach der vielversprechendste Ansatz. Aber zu viel würde ich mir nicht erwarten. Wahrscheinlich wäre es einfacher den Temperatursensor redundant auszulegen :)
Ok, da gebe ich dir volkommen Recht. Jedoch denke ich, dass der Aufwand für ein KNN deutlich höher ist als für einen linearen Prädiktor. Wenn ich da irre, korrigiere mich bitte. Wie wäre es, die Temperatur aus den alten Temperaturwerten vor dem Ausfall linear vorherzusagen und die anderen Messwerte nur für eine Abschätzung des Fehlers der geschätzten Temperatur zu benutzen? Z.B.: Die Temperatur stimmt erstmal ganz gut, dann ändert sich plötzlich der Wind und es regnet. So ist es ja sehr wahrscheinlich, dass sich die Temperatur stark ändert. Vielleicht solltest du dann einfach ehrlich sein und einen Fehler ausgeben, bevor du versucht, da noch irgendwas vorherzusagen.
Hallo, also danke schonmal für die Hinweise. Ich bin mit meiner Frage eher darauf aus, welches Prinzip der DSV hier geeignet ist. Ich habe keine realen Sensoren die ich doppelt auslegen möchte. Es geht wirklich darum, ein geeignetes Verfahren anzuwenden, um die fehlenden Daten zu schätzen, und zwar, wie gesagt entweder aus dem bisherigen Signalverlauf oder/und den anderen, parallel aufgenommenen Daten.
Interessant ist meiner Meinung nach, wie lang die Datenlücken sind. Ausfälle über Stunden kann man sicher gut rausrechnen. Einen Datenausfall über eine Woche inter/extrapolieren geht sicher auch, aber wie aussagekräftig ist dann so ein Verlauf? Wie lange hälst du alte Daten vor? Ich würde versuchen nach ähnlichen Verläufen in der Vergangenheit zu suchen und daraus die fehlenden Daten abzuleiten.
Ok, also die suche nach ähnliche Mustern in der Vergangenheit ist gut. Die Frage ist nur, wie man das am geschickestens automatisierrt (es handelt sich um Datenmengen, die nicht von Hand machbar sind). umsetzt. Irgendwie schwirren mir noch diese KNN im Kopf rum. Meine Vorstellung von KNN: 1. Ich füttere das KNN mit Datenströmen, welche nicht i.O. sind. Hier soll das KNN Zusammenhänge zwischen den verschiedenen Eingabedaten herstellen und sich "merken" 2. Fehlt ein Abschnitt, soll das KNN mit seinem bisheringen Wissen (und durch die Eingabe des Benutzers, des der Abschnitt fehlerhaft ist), diesen Abschnitt rekonstruieren. Wäre das so in etwa denkbar? Welche KNN eignen sich? Gibt es geeignete fertige KNN (z.B. in Matlab), die man mit entsprechenden Daten trainieren könnte? MfG, DerWolf
Ich denke mit einem linearen Verfahren wird man nur stückweise stetige Lösungen bekommen, niemals jedoch ein Gleichungssytem erhalten, um bei jeder beliebigen Wettersituation einen fehlenden Parameter auszurechnen. Dann müsste man schon eine Vielzahl von prägnanten Wettersituationen herausnehmen und dabei jeweils die Abhängigkeit der Messwerte untereinander ermitteln. Ganz sicher lässt sich diese gewonnene Abhängigkeit nicht auf einen anderen Ort übertragen (Wettergeschehen an einem Ort auzeichnen, offline Parameter erzeugen und dann mehrere Messstationen damit speisen). Kalman-Filter eignen sich super, um aus verrauschen Messsignalen eines bekannten und exakt beschreibbaren Systems ein gutes Signal zu erhalten. Das geht aber nur mit dem entsprechenden Apriori-Wissen über das System. Beim Wetter ist das so ein Problem - man kann das nicht in eine Kiste einsperren und mal alle Parameterabhängigkeiten durchprobieren. Gerade bei längeren Aussetzern oder vorher unbekannten Eingangssignalen sind gut trainierte Neuronale Netz stark (Beispiel: Temperatursensor fällt bei Eisregen und Windstärke 10 aus. So ein Wetterphänomen ist selten und daher im Vorfeld vermutlich als Kalman-Filter nicht parametriebar). Bei KNN: Normalerweise macht man mit einem KNN zunächst eine Trainingshase durch um die Abhängigkeiten der Parameter zu trainieren. Anschließend werden Wertemuster angelegt und das KNN entscheidet sich dann mit Hilfe des trainierten Musters, welcher Ausgabewert wohl passt. Je mehr Muster trainiert werden, desto besser ist das Ergebnis.
@Mischu: VIelen Dank für die ausführlichen Erläuterungen. Das werde ich mich wohl mal in die KNN einarbeiten müssen/wollen. Hast Du Erfahrungen mit KNNs und kannst einen Typ von KNN für diese Art von Aufgabe empfehlen? Gibt es fertige Tool, mit denen man rumprobieren kann, bevor man dann was passendes selber programmiert (ich muss sowas immer erstmal ausprobieren, um die Funktionsweise besser verstehen zu können ;) ) Grußl, DerWolf
Als NN würde ich dir Recurrent Cascade Correlation Networks empfehlen. Also auf alle Fälle einen Netzwerktyp der sequientiell abhängige Muster erlernen kann. Einfache NNs reichen nicht für deine Aufgabenstellung da du dann eine enorm große Inputneuronenschicht benötigst um parallel alle sequentiellen Muster anlegen zu können. Recurrente NNs dagegen haben intern Verküpfungen von jedem Ausgang eines "Neurons" zu dessen oder vorherigen Neuroneneingängen. Somit bildet sich eine Art von "Gedächtnis" und das Netzwerk kann vom aktuell angeklegten Muster an der Inputschicht Bezüge zu allen vorherig angelegten Mustern herstellen. Man kann also das Netzwerk auf Muster in sequentiell angelegten Mustern am Eingang trainieren. Also mal nach Recurrente NNs suchen. Das Recurrente Cascade Correlation Network hat nun intern einen optimierten lernfähigen Aufbau der Neuronen. Während der Trainingsphase des NNs wächst die Anzahl an neuronen in den einzelnen Neuronenschichten. Alle Neuronenschichten wachsen wie eine Kaskade und die neuronen einer Schicht sind mit ihren Ausgängen auch mit den vorherigen Neuronenschichten verknüpft, eg. recurrent verknüpft. Der Vorteil des RCC NNs ist nun das es meist optimale Netzwerke kreiert, dh. während der Tra8iningsphasen bildet sich ein Netzwerk das das gestellte Problem mit optimal wenigen Neuronen bewältigen kann. Bei herkömmlichen NNs wird man nach dem Training oft mit anderen Verfahren das Netzwek "komprimieren" müssen. Ein weiterer Vorteil ist das man den Trainingsalgorithmus beim RCC NN sehr leicht mit zb. GA/EAs (genetischen Algorithmen/Evolutions Strategieen) aufbohren kann. Bei einem RCC NN wird während der Trainingsphase, zum schon teilweise fertig trainierte NN, eine Gruppe von neuen Kandidaten Neuronen so trainiert als wäre jedesd schon im NN 8integriert. Nach der Trainigsphase dieser Kandidatenneuronen selektiert man das best angepasste Neuron und fügt es in das netzwerk endgültig ein. Diese Selektion und die vorherige pseudozufällige Initialisierung der Kandidatengruppe sind Prinzipien der Evolutionslehre, sprich Genetische Algorithem und/oder Evolutionsstrategieren. Mein Delphi Source zum RCC umfasst ca. 2500 Zeilen Source. Gruß Hagen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.