Frage

Ich bin neu im maschinellen Lernen, habe aber ein interessantes Problem.Ich habe eine große Auswahl an Personen und besuchten Websites.Einige Personen haben Geschlecht, Alter und andere Parameter angegeben.Jetzt möchte ich diese Parameter für jeden Benutzer wiederherstellen.

Welchen Weg suche ich?Welcher Algorithmus eignet sich zur Lösung dieses Problems?Ich bin mit neuronalen Netzen (überwachtes Lernen) vertraut, aber es scheint, dass sie nicht passen.

War es hilfreich?

Lösung

Ich hatte fast das gleiche Problem:„Wiederherstellung“ von Alter, Geschlecht und Standort für Benutzer sozialer Netzwerke.Aber ich habe die Ego-Netzwerke der Benutzer verwendet, nicht die Statistiken der besuchten Websites.Und ich stand vor zwei fast unabhängigen Aufgaben:

  1. „Wiederherstellen“ oder „Vorhersagen“ von Daten.Sie können eine Reihe verschiedener Techniken verwenden, um diese Aufgabe zu erledigen, aber ich stimme für die einfachsten (KISS, ja).In meinem Fall lieferte beispielsweise für die Altersvorhersage der Mittelwert des Alters der Ego-Netzwerkbenutzer zufriedenstellende Ergebnisse (bei etwa 70 % der Benutzer betrug der Fehler weniger als +/- 3 Jahre, in meinem Fall war dies ausreichend).Es ist nur eine Idee, aber Sie können versuchen, für die Altersvorhersage den gewichteten Durchschnitt zu verwenden, indem Sie das Gewicht als Ähnlichkeitsmaß zwischen den besuchten Websites des aktuellen Benutzers und anderen definieren.
  2. Bewertung der Vorhersagequalität.Der Algorithmus aus Aufgabe 1 liefert in fast allen Fällen eine Vorhersage.Und die zweite Aufgabe besteht darin, festzustellen, ob die Vorhersage zuverlässig ist.Z. B. im Fall von Ego-Netzwerk und Altersvorhersage:Können wir auf Vorhersagen vertrauen, wenn ein Benutzer nur einen „Freund“ in seinem Ego-Netzwerk hat?Bei dieser Aufgabe geht es eher um maschinelles Lernen:Es handelt sich um ein binäres Klassifizierungsproblem.Sie müssen einen Funktionssatz zusammenstellen, Trainings- und Testbeispiele aus Ihren Daten mit richtigen und falschen Vorhersagen bilden.Durch die Erstellung eines geeigneten Klassifikators können Sie unvorhersehbare Benutzer herausfiltern.Sie müssen jedoch festlegen, welche Funktionen Sie haben.Ich habe eine Reihe von Netzwerkmetriken und zusammenfassende Statistiken zur Verteilung von Interessenmerkmalen im Ego-Netzwerk verwendet.

Dieser Ansatz würde nicht alle Lücken schließen, sondern nur die vorhersehbaren.

Andere Tipps

Es gibt viele Möglichkeiten, leere Datenlücken zu füllen.

  • Am häufigsten wiederholter Wert:Füllen Sie die Lücken mit dem häufigsten Wert.
  • Erstellen Sie eine Verteilung:Erstellen Sie das Histogramm und lassen Sie die Werte entsprechend dieser Verteilung fallen.
  • Erstellen Sie ein neues Etikett:Da Sie keine Informationen haben, gehen Sie nicht von einem Wert aus und erstellen Sie eine andere Beschriftung/Kategorie, um anzugeben, dass der Wert leer ist.
  • Erstellen Sie einen Klassifikator:Stellen Sie eine Beziehung zwischen der Variablen mit leeren Lücken und den restlichen Daten her und erstellen Sie einen einfachen Klassifikator.Füllen Sie damit den Rest der Daten aus.

Es gibt viele andere, aber dies sind die gängigsten Strategien.Mein Vorschlag ist, das Unbekannte nicht zu bevölkern und im Unbekannten zu belassen.

Obwohl adesantos bereits eine gute Antwort gegeben hat, möchte ich noch ein paar Hintergrundinformationen hinzufügen.

Der Name für das Problem, das Sie betrachten, ist „Imputation“.Wie adesantos bereits sagte, besteht eine der Möglichkeiten darin, eine Verteilung anzupassen.Sie könnten beispielsweise eine multivariate Gaußsche Funktion an die Daten anpassen.Sie erhalten den Mittelwert nur aus den Stichproben, die Sie kennen, und Sie berechnen die Kovarianzen nur aus den Stichproben, die Sie kennen.Sie können dann Standard-MVG-Ergebnisse verwenden, um die fehlenden Daten linear zu imputieren.

Dies ist wahrscheinlich die einfachste probabilistische Methode der Imputation und sie ist bereits recht aufwändig.Wenn Sie ein neuronales Netzwerk haben, ist eine kürzlich vorgeschlagene Methode, die dies tun kann, das tiefe latente Gaußsche Modell von Rezende et al.Um die Methode zu verstehen, sind jedoch umfangreiche Kenntnisse über neuronale Netze und einige Variations-Bayes-Kenntnisse über Markov-Ketten erforderlich.

Eine andere Methode, von der ich gehört habe, dass sie gut funktioniert, ist das Trainieren eines generativen stochastischen Netzwerks (Bengio et al.).Dies geschieht durch das Trainieren eines Auto-Encoders zur Rauschunterdrückung anhand der Ihnen vorliegenden Daten (wobei fehlende Werte im Rekonstruktionsverlust vernachlässigt werden).Angenommen, Sie haben eine Rekonstruktionsfunktion f und eine Eingabe x.Dann rekonstruieren Sie es über x' = f(x).Anschließend setzen Sie die Werte von x' mit denen zurück, die Sie von x kennen.(d. h.Sie behalten nur die Werte bei, die vor der Rekonstruktion fehlten.) Wenn Sie dies mehrmals tun, können Sie garantiert eine Stichprobe aus der Verteilung mit den Ihnen bekannten Werten ziehen.

In beiden Fällen erfordern diese Methoden jedoch einige Kenntnisse über Statistik und neuronale Netze.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top