2016-06-27 12 views
-1

Ich habe einen Satz von 3-5 Black Box Scoring-Funktionen, die den Kandidaten positive reelle Werte zuweisen.Welche Art von ML ist das? Algorithmus zum wiederholten Auswählen von 1 richtigen Kandidaten aus einem Pool (oder keinem)

Jeder ist in der Rangliste der besten Kandidaten am besten, aber sie stimmen nicht immer überein - Ich würde gerne herausfinden, wie man die Noten zusammen für einen optimalen Meta-Score kombiniert, so dass unter einem Pool von Kandidaten, der mit dem höchsten Meta-Score ist in der Regel der richtige Kandidat.

So sind sie einfach R^n Vektoren, aber jede Dimension neigt dazu, höheren Wert für richtige Kandidaten zu haben. Naiv könnte ich einfach die Komponenten multiplizieren, aber ich hoffe, dass es etwas Subtileres gibt, von dem man profitieren kann.

Wenn die höchste Punktzahl zu niedrig ist (oder vielleicht sind die beiden höchsten zu nah), gebe ich einfach auf und sage 'none'.

So ist meine Eingabe für jeden Versuch eine Menge dieser Score-Vektoren, und die Ausgabe ist, welcher Vektor der tatsächlichen richtigen Antwort entspricht, oder 'none'. Dies ist ein bisschen wie Tech-Interviews, wo ein Pool von Kandidaten von ein paar Leuten interviewt werden, die unterschiedliche Meinungen haben, aber im Allgemeinen tendieren, den besten Kandidaten zu bevorzugen. Meine eigene Bewerbung hat einen objektiven besten Kandidaten.

Ich möchte die richtigen Antworten maximieren und falsch positive Ergebnisse minimieren.

Konkreter könnten meine Trainingsdaten aussehen wie viele Instanzen von

{[0,2, 0,45, 1,37], [5,9, 0,02, 2], ...} -> i

wo i ist der i-te Kandidatvektor im Eingabesatz.

Also möchte ich eine Funktion lernen, die dazu neigt, den Score-Vektor des tatsächlichen besten Kandidaten aus der Eingabe zu maximieren. Es gibt keine Grade der Genauigkeit. Es ist binär richtig oder falsch. Es erscheint jedoch nicht wie eine traditionelle binäre Klassifikation, da unter einem Eingabesatz von Vektoren maximal 1 "klassifiziert" werden kann als richtig, der Rest ist falsch.

Dank

Antwort

0

Ihr Problem in der maschinellen Lernen Kategorie nicht genau gehört. Die Multiplikationsmethode könnte besser funktionieren. Sie können auch verschiedene statistische Modelle für Ihre Ausgabefunktion ausprobieren.

ML, und genauer Klassifizierung, Probleme benötigen Trainingsdaten, aus denen Ihr Netzwerk vorhandene Muster in den Daten lernen und sie verwenden kann, um eine bestimmte Klasse einem Eingabevektor zuzuweisen.

Wenn Sie wirklich Klassifizierung verwenden möchten, dann denke ich, dass Ihr Problem in die Kategorie OnevsAll Klassifizierung passen kann. Sie benötigen ein Netzwerk (oder nur eine einzelne Ausgabeschicht) mit einer Anzahl von Zellen/Sigma-Einheiten, die Ihrer Anzahl von Kandidaten entspricht (von denen jeder einen repräsentiert). Beachten Sie, hier wird Ihre Anzahl an Kandidaten festgelegt.

Sie können Ihren gesamten Kandidatenvektor als Eingabe für alle Zellen Ihres Netzwerks verwenden. Die Ausgabe kann unter Verwendung der One-Hot-Codierung spezifiziert werden, d. H. 00100, wenn Ihre Kandidaten-Nr. 3 war der tatsächliche korrekte Kandidat und im Fall von keinem korrekten Kandidaten wird die Ausgabe 00000 sein.

Damit dies funktioniert, benötigen Sie einen großen Datensatz, der Ihre Kandidatenvektoren und den entsprechenden richtigen Kandidaten enthält.Für diese Daten benötigen Sie entweder eine Funktion (wiederum wie Multiplikation) oder Sie können die Ausgänge selbst zuweisen. In diesem Fall wird das System lernen, wie Sie die Ausgabe bei verschiedenen Eingaben klassifizieren und neue Daten auf die gleiche Weise wie Sie klassifizieren. Auf diese Weise wird die Anzahl der korrekten Ausgaben maximiert, aber die korrekte Definition ist, wie Sie die Trainingsdaten klassifizieren.

Sie können auch einen anderen Ausgabetyp verwenden, bei dem jede Zelle der Ausgabeschicht Ihren Bewertungsfunktionen entspricht und 00001 bedeutet, dass der Kandidat, dessen 5. Bewertungsfunktion ausgewählt wurde, der richtige ist. Auf diese Weise müssen Ihre Kandidaten nicht repariert werden. Aber wieder müssen Sie die Ausgaben der Trainingsdaten für Ihr Netzwerk manuell einstellen, um es zu lernen.

OnevsAll ist eine Klassifizierungstechnik, bei der mehrere Zellen in der Ausgabeschicht vorhanden sind und jede eine binäre Klassifizierung zwischen einer der Klassen und allen anderen durchführt. Am Ende wird dem Sigmoid mit der höchsten Wahrscheinlichkeit 1 und Rest Null zugewiesen.

Sobald Ihr System hat gelernt, wie Sie Daten über Ihre Trainingsdaten zu klassifizieren, können Sie Ihre neue Daten in füttern und es wird Sie Ausgang auf die gleiche Art und Weise geben, dh 01000 usw.

Ich hoffe, meine Antwort war in der Lage zu helfe dir. :)