Klassifizierung mit teilweise „unbekannten“ Daten

11

Angenommen, ich möchte einen Klassifizierer lernen, der einen Vektor von Zahlen als Eingabe verwendet und eine Klassenbezeichnung als Ausgabe gibt. Meine Trainingsdaten bestehen aus einer großen Anzahl von Eingabe-Ausgabe-Paaren.

Wenn ich jedoch einige neue Daten teste, sind diese Daten normalerweise nur teilweise vollständig. Wenn der Eingabevektor beispielsweise die Länge 100 hat, können nur 30 der Elemente Werte erhalten, und der Rest ist "unbekannt".

Betrachten Sie als Beispiel die Bilderkennung, wenn bekannt ist, dass ein Teil des Bildes verdeckt ist. Oder betrachten Sie die Klassifizierung im allgemeinen Sinne, wenn bekannt ist, dass ein Teil der Daten beschädigt ist. In allen Fällen weiß ich genau, welche Elemente im Datenvektor die unbekannten Teile sind.

Ich frage mich, wie ich einen Klassifikator lernen kann, der für diese Art von Daten funktioniert. Ich könnte die "unbekannten" Elemente einfach auf eine Zufallszahl setzen, aber da es oft mehr unbekannte Elemente als bekannte gibt, klingt dies nicht nach einer guten Lösung. Oder ich könnte Elemente in den Trainingsdaten zufällig in "unbekannt" ändern und mit diesen anstatt mit den vollständigen Daten trainieren, aber dies könnte eine erschöpfende Stichprobe aller Kombinationen bekannter und unbekannter Elemente erfordern.

Insbesondere denke ich über neuronale Netze nach, bin aber offen für andere Klassifikatoren.

Irgendwelche Ideen? Vielen Dank!

Karnivaurus
quelle
en.m.wikipedia.org/wiki/Missing_data könnte ein Ausgangspunkt sein.
Hatschepsut
Ich denke, dass halbüberwachtes Lernen eher der Fall ist, wenn die Trainingsdaten nicht vollständig gekennzeichnet sind. In meinem Fall sind alle meine Trainingsdaten beschriftet, aber einzelne Teile der Testdaten sind "unbekannt".
Karnivaurus
Halbüberwachtes

Antworten:

2

Ich denke, es gibt einen vernünftigen Weg, um es mit neuronalen Netzen zum Laufen zu bringen.

Lassen Sie Ihren Wert für unbekannt 0 sein. Jetzt wählen Sie im Training eine Eingabe aus und setzen einige ihrer Werte mit der Wahrscheinlichkeit zufällig auf 0 , wobei p Ihr ​​erwarteter Anteil fehlender Eingaben zur Testzeit ist. Beachten Sie, dass dieselbe Eingabe bei verschiedenen Iterationen an verschiedenen Positionen Nullen hat.p

Ich habe es noch nie zuvor gesehen, aber dies wäre sehr ähnlich zu Dropout (eine bekannte Regularisierungsmethode in neuronalen Netzen) in Ihren Eingangsneuronen anstelle der versteckten Neuronen. Ich denke nicht, dass es eine gute Idee ist, dies im Allgemeinen zu tun, aber wenn Sie dazu gezwungen sind (wie in Ihrem Fall), ist es zumindest theoretisch nah genug an etwas, von dem bekannt ist, dass es funktioniert.

et al
quelle
1

Ich denke, es gibt einige Möglichkeiten, die mit jedem Klassifikator funktionieren:

  • Setzen Sie die fehlenden Werte mit einem einzelnen Wert um, z. B. dem Mittelwert oder Median aus dem Trainingssatz oder einem Wert, der aus den beobachteten Teilen der Eingabe vorhergesagt wurde, oder verwenden Sie einfach eine Zufallszahl oder eine Konstante.
  • Verwenden Sie verschiedene Werte für die Unbekannten und aggregieren Sie die Ergebnisse, z. B. mitteln Sie sie

Abgesehen davon können Sie baumbasierte Klassifizierer (z. B. zufällige Gesamtstrukturen) verwenden. Wenn ein Baum eine Aufteilung eines fehlenden Features auswerten muss, können die Daten einfach an beide untergeordneten Knoten weitergegeben werden.

p(x,y)xyxxund mitteln Sie die Ergebnisse, gewichtet mit der Wahrscheinlichkeit dieser Imputation. Dies könnte entweder in analytischer geschlossener Form für einige Klassifikatoren erfolgen, z. B. für ein Modell der linearen Diskriminanzanalyse, oder ungefähr durch Abtasten der Unbekannten, z. B. für eine eingeschränkte Boltzmann-Maschine oder deren tiefe Varianten (die sich auf vorwärtsgerichtete neuronale Netze beziehen).

Tobias
quelle
Ich glaube nicht, dass es funktionieren würde. Verwenden Sie ein typisches Beispiel aus der Bildverarbeitung. Jedes Pixel eines Bildes kann einem anderen Teil eines Objekts zugeordnet sein. Beispiel: Pixel (50,50) von Bild 1 ist das Auge einer Katze, aber die Katze wird in Bild 2 ein wenig bewegt, sodass (50, 50) nur ein Pixel des Hintergrunds ist. Wenn der Standort von NAs, dh. zufällige Okklusion, variiert je nach Beobachtung, Ihre Imputation funktioniert nicht.
HoraceT