mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Fehlenden Signalabschnitt rekonstruieren


Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 Moderator
Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit so etwas? http://de.wikipedia.org/wiki/ARMA-Modell

Autor: Oliver Simmank (ollibass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kalman Filter könnten dir evt. helfen.

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei der Kalman-Filter eine Methode wäre die Parameter von 
ARMA-Modellen (also endlich viele Parameter) optimal zu schätzen.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber benötigt der Kalman-Filter nicht ein Model als Grundlage? D.h. eine 
mathematische Beschreibung der einzelnen Signal in Form von Gleichungen?

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Oliver Simmank (ollibass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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?

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael O. (mischu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: DerWolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Hagen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.