Wie geht man mit einem Merkmalsvektor um, dessen Größe variieren kann?
Nehmen wir an, ich berechne pro Objekt 4 Merkmale. Um ein bestimmtes Regressionsproblem zu lösen, habe ich möglicherweise 1, 2 oder mehr dieser Objekte (nicht mehr als 10). Somit ist der Merkmalsvektor 4 · N lang. Wie wird das normalerweise angegangen?
Die Objekte repräsentieren physische Objekte (z. B. andere Personen) eines Beobachters. Für eine Zeitscheibe kann ein Objekt seitlich und in Längsrichtung platziert werden, eine gewisse Geschwindigkeit und eine gewisse Richtung haben (4 Merkmale). Der Versuch zu lösen: Wo sollte sich eine Person am wohlsten fühlen? In einigen Fällen gibt es nur 1 Objekt, aber es können 2 oder mehr sein.
Haftungsausschluss : Ich habe nur begrenzte Kenntnisse über ML-Ansätze. Ich hatte vor Jahren Unterricht am College und nahm Andrew Ngs ML-Kurs online als Auffrischung, aber ansonsten nicht auf dem neuesten Stand. Ein Ausgangspunkt zum Anschauen wird geschätzt.
quelle
Antworten:
Zunächst einmal herzlich willkommen in der Community!
Zu der Frage würde ich sagen, dass es Missverständnisse gibt. Sie sagen, Sie berechnen 4 Merkmale "pro Objekt". Dies bedeutet, dass jeder Datenpunkt (Objekt) mit 4 Merkmalen beschrieben wird. Die Länge der Features ist also nicht unterschiedlich. Bitte beachten Sie, dass ich dies sage, weil "Sie Merkmale für Ihre Proben / Datenpunkte / Objekte berechnen", sodass jedes Objekt hier ein Punkt im 4-dimensionalen Raum ist. Wenn Sie etwas anderes meinen, korrigieren Sie mich bitte.
Mit anderen Worten, Sie haben eine Datenmatrix mit einigen Zeilen (Anzahl der Objekte) und 4 Spalten.
Allgemeiner über das gesamte Konzept. Nein, dies ist kein gültiger Ansatz zum Erstellen von Standarddaten. In Standarddaten ist die Anzahl der Spalten immer gleich, da Sie Objekte nicht untersuchen können, wenn sie in verschiedenen Räumen definiert sind. Viele ML-Algorithmen arbeiten auch mit Standarddaten, was bedeutet, dass Sie sie nicht verwenden können, wenn die Größe der Merkmalsvektoren variiert. Sozusagen konzeptioneller kann die Größe der Features, die Sie für Objekte berechnen, nicht variieren. Wie? Ich möchte Features aus Gesichtern extrahieren. Ich sage Augenfarbe , Abstand zwischen den Augen und Abstand zwischen den Ohren . Ich habe 3 Funktionen und für jede Person, die zu meiner Studie kommt, berechne ich die gleichen Funktionen. Wie kann die Größe unterschiedlich sein, wenn der Merkmalsextraktionsprozess Standard ist?
Bei nicht standardmäßigen Daten kann es jedoch zu einem solchen Fall kommen. In diesem Fall können Sie die Funktionen standardisieren. Stellen Sie sich beispielsweise als Babybeispiel verschiedene Diagramme mit unterschiedlicher Anzahl von Knoten und Kanten vor. Sie können jedes Diagramm mit seinem durchschnittlichen Grad , seiner durchschnittlichen Pfadlänge und der Anzahl der Knoten beschreiben . Anschließend wird jedes Diagramm mit drei Funktionen beschrieben, die Sie in einen Algorithmus einspeisen können.
Wenn Sie die Daten jedoch nicht standardisieren möchten (da sie normalerweise zu Informationsverlusten führen), müssen Sie maßgeschneiderte Analysemethoden finden, für die Sie mehr über Ihre Daten erklären müssen.
Ich hoffe es hat geholfen!
Viel Glück!
quelle
OK, es hört sich so an, als würden Sie versuchen, die Position und Geschwindigkeit einer variablen Anzahl von Objekten in jedes Trainingsbeispiel zu kodieren.
Eine Möglichkeit, dies zu tun, besteht darin, zwei Merkmalsebenen pro Trainingsbeispiel als Kanaleingänge in ein Faltungs-Neuronales Netzwerk zu verwenden. Die erste Merkmalsebene codiert die x-Komponente der Geschwindigkeit für jedes Objekt an der Position dieses Objekts, und die zweite macht dasselbe für die y-Komponente.
Da Sie sagten, die Positionen beziehen sich auf den Beobachter, gehe ich davon aus, dass sich der Beobachter immer am selben Ort befindet, sodass keine zusätzlichen Informationen zu den Eingaben hinzugefügt werden müssen.
Ich gehe auch davon aus, dass sich zwei Objekte nicht am selben Ort befinden können.
Angenommen, Sie befinden sich in einer 3x3-Welt und haben Objekte bei (0,1) und (2,2) mit den Geschwindigkeiten (3,2) bzw. (1,7). Dieses Eingabebeispiel könnte wie folgt codiert werden:
Wie Sie sehen, ist die Eingabegröße immer gleich, unabhängig davon, wie viele Objekte vorhanden sind. Mehr Objekte führen nur zu mehr Einträgen ungleich Null.
Ich habe ein Conv-Netz vorgeschlagen, da es besonders gut bei räumlichen Problemen funktioniert. Wenn Sie jedoch zuerst ein neuronales Vanille-Netzwerk ausprobieren möchten, können Sie Ihre Eingabeform von (m, 3,3,2) auf (m, 12) reduzieren.
quelle