Die Berechnung der Gegenseitigen Information Für die Auswahl der trainingsmenge in Java

Szenario


Ich bin versucht zu implementieren, das betreute lernen über ein Daten-set in einem Java-GUI-Anwendung. Dem Benutzer wird eine Liste von Elementen oder 'Berichte' zu untersuchen und Kennzeichnen Sie basiert auf einer Reihe von Etiketten zur Verfügung. Sobald das überwachte lernen abgeschlossen ist, wird die gelabelte Instanzen wird dann gegeben sein, um ein Lern-Algorithmus. Dies versucht, um den rest der Elemente auf, wie wahrscheinlich es ist, die Nutzer wollen, um Sie anzuzeigen.

Bekommen die die meisten von die Benutzer Zeit, ich will pre-wählen Sie die Berichte aus, dass die meisten Informationen über die gesamte Sammlung von berichten, und die Nutzer Ihnen zuschreiben. Wie ich es verstehe, um diese zu berechnen, wäre es notwendig zu finden, die die Summe der gegenseitigen Informationen der Werte für jeden Bericht, und um Ihnen von diesem Wert. Die markierten Berichte von überwachten lernen wird dann benutzt werden, um ein Bayes ' sches Netzwerk zu finden, die Wahrscheinlichkeit, dass ein Binärwert für jeden weiteren Bericht.

Beispiel


Hier, ein künstliches Beispiel kann helfen, zu erklären, und kann klären Verwirrung, wenn ich habe zweifellos für die falsche Terminologie 🙂 Betrachten wir ein Beispiel, wo die Anwendung zeigt Nachrichten an den Benutzer. Es wählt die Nachrichten zuerst angezeigt werden, basierend auf den Benutzereinstellungen angezeigt. Verfügt über eine news-story, die eine Korrelation country of origin, category oder date. Also, wenn ein Benutzer Etiketten eine einzelne news-story als interessant, wenn es kam aus Schottland, erzählt es die Maschine Lernenden, dass es eine erhöhte Wahrscheinlichkeit, dass andere Nachrichten Geschichten aus Schottland wird interessant sein für die user. Ähnlich wie bei einer Kategorie wie Sport oder ein Datum wie Dezember 12th 2004.

Diese Präferenz ermittelt werden konnte, indem Sie die Auswahl, um für alle Nachrichten (z.B. nach Kategorie, nach Datum oder nach dem Zufallsprinzip die Bestellung, dann die Berechnung der Präferenz der Benutzer entlang geht. Was ich möchte zu tun ist, um eine Art von "head start" auf, dass die Sortierung durch den Benutzer, Blick auf eine kleine Anzahl bestimmter Nachrichten Geschichten und sagen, wenn Sie daran interessiert sind, in Ihnen (der betreute lernen Teil). Zu entscheiden, welche Geschichten um dem Benutzer zu zeigen, ich habe zu prüfen, die gesamte Sammlung von Geschichten. Dies ist, wo die Gegenseitige Information. Für jede Geschichte, die ich möchte wissen, wie viel Sie können mir sagen, über all die anderen Geschichten, wenn es klassifiziert ist, durch den Benutzer. Zum Beispiel, wenn es eine große Anzahl von Geschichten, die stammt aus Schottland, ich möchte, um Benutzer zu klassifizieren (mindestens) einer von Ihnen. Ähnlich wie für andere, korrelierende Funktionen wie Kategorie oder Datum. Das Ziel ist, finden Sie Beispiele für Berichte, die-wenn Sie klassifiziert sind, bieten die meisten Informationen über die anderen berichten.

Problem


Weil mein Mathe ist ein bisschen eingerostet, und ich bin neu maschinelles lernen ich habe einige Schwierigkeiten die Umwandlung der definition der Gegenseitigen Information zu einer Implementierung in Java. Wikipedia beschreibt die Gleichung für die Gegenseitige Information als:

Die Berechnung der Gegenseitigen Information Für die Auswahl der trainingsmenge in Java

Allerdings bin ich mir nicht sicher, ob dies tatsächlich genutzt werden kann, wenn nichts klassifiziert worden ist, und die Lern-Algorithmus nicht berechnet, noch nichts.

Als in meinem Beispiel, sagen, ich hatte eine große Anzahl von neuen, unbenannten Instanzen dieser Klasse:

public class NewsStory {
    private String countryOfOrigin;
    private String category;
    private Date date;
    //constructor, etc.
}

In meinem speziellen Szenario die Korrelation zwischen den Bereichen/Funktionen basiert auf einem genaue übereinstimmung so, zum Beispiel, einen Tag und 10 Jahre Unterschied im Datum sind gleichwertig in Ihrer Ungleichheit.

Die Faktoren, die für die Korrelation (z.B. Datum ist mehr Korrelation als Kategorie?) sind nicht unbedingt gleich, aber Sie können vordefiniert und konstant. Bedeutet das, dass das Ergebnis der Funktion p(x,y) ist den vordefinierten Wert, oder bin ich die Vermischung der Begriffe?

Die Frage (endlich)


Wie kann ich mich über die Durchführung der gegenseitigen information Berechnung angesichts dieser (fake -) Beispiel von news stories? Bibliotheken, javadoc, code-Beispiele etc.. sind alle herzlich willkommen, Informationen. Auch wenn dieser Ansatz grundsätzlich fehlerhaft ist, zu erklären, warum das der Fall ist, wäre ebenso wertvoll eine Antwort.


PS. Ich bin mir bewusst, von Bibliotheken, wie zum Beispiel Weka und Apache Mahout, also einfach nur zu erwähnen ist nicht wirklich hilfreich für mich. Ich bin noch auf der Suche durch Dokumentation und Beispiele für beide Bibliotheken zu suchen für Sachen, die auf Gegenseitige Information speziell. Was würde mir wirklich helfen, verweist auf die Ressourcen (code-Beispiele, die javadoc), wo diese Bibliotheken helfen mit gegenseitigen information.

  • Versuchen Sie Weka.
  • Bitte siehe mein edit, ich bin mir dessen bewusst, Weka, aber nicht in der Lage war, Ressourcen zu finden auf das, was Sie tun können, für Informationen zu Gewinnen. Konnte Sie sein spezifischer? Vielen Dank für Ihre Zeit!
  • Weka Dokumentation ist nicht die beste; wenn Sie eine Bibliothek haben spezifische Frage, schlage ich vor, Sie versuchen, die mailing-Liste.
  • Ich verstehe nicht die Frage. Sie sagen, Sie möchten die Berechnung der gegenseitigen information zwischen zwei Datenpunkte, die eine ungewöhnliche Sache tun zu wollen und nicht die für mich Sinn machen. MI ist in der Regel verwendet, um zu berechnen, wie zwei Merkmale korreliert sind, und berechnet sich über alle Datenpunkte.
  • Das klingt eher wie das, was ich will. Jede Instanz besteht aus vier Funktionen, die jeweils Strings. Ich möchte, um herauszufinden, wenn der Benutzer prüft und klassifiziert die Instanz, wie viel Informationen es wird mir sagen, über alle anderen Instanzen übrig. Jedes matching-Funktion bedeutet eine gewisse Korrelation zwischen den beiden Instanzen. Für jede Instanz, die gegenseitige information Wert wird summiert von allen übrigen Instanzen. Die Instanzen, die die höchste Summe, die zunächst in der Ausbildung gesetzt werden. Macht das mehr Sinn?
InformationsquelleAutor Grundlefleck | 2010-01-04
Schreibe einen Kommentar