2011-01-17 9 views
4

Ich habe ein kleines Problem mit meinem Projekt für die Universität.Dokumentklassifikation, mit genetischen Algorithmen

Ich muss Dokumentenklassifizierung mit genetischen Algorithmus implementieren.

Ich habe einen Blick auf this Beispiel hatte und (sagen wir mal) zu verstehen, die Prinzipien der genetischen Algorithmen, aber ich bin nicht sicher, wie sie in Dokumentenklassifizierung umgesetzt werden können. Kann die Fitness-Funktion nicht herausfinden.

Hier ist, was ich habe es geschafft, so weit zu denken (Es ist wahrscheinlich völlig falsch ...)

Akzeptieren Sie, dass ich die Kategorien haben und jede Kategorie durch einige Schlüsselwörter beschrieben.
Teilen Sie die Datei in Wörter.
Erstellen Sie die erste Grundgesamtheit aus Arrays (z. B. 100 Arrays, aber hängt von der Größe der Datei ab), die mit zufälligen Wörtern aus der Datei gefüllt sind.
1:
Wählen Sie die beste Kategorie für jedes Kind in der Bevölkerung aus (indem Sie die Schlüsselwörter zählen).
Crossover jeweils 2 Kinder in der Bevölkerung (neue Array mit der Hälfte der Kinder) - "crossover"
Füllen Sie den Rest der Kinder aus dem Crossover mit zufälligen nicht verwendeten Wörter aus der Datei - "Evolution ??"
Ersetzen Sie zufällige Wörter in zufälligen Kind aus der neuen Population mit zufälligem Wort aus der Datei (verwendet oder nicht) - "Mutation"
Kopieren Sie die besten Ergebnisse auf die neue Bevölkerung.
Gehe zu 1, bis ein Populationslimit erreicht ist oder eine Kategorie genug gefunden wurde

Ich bin mir nicht sicher, ob das korrekt ist und werde mich freuen, ein paar Ratschläge zu haben, Leute.
Viel zu schätzen wissen!

+0

Können Sie genauer angeben, was genau das System erreichen soll? Etwas wie "Gegebene X Anfangsdaten, Ausgabe Y"? – sinelaw

+0

Wir haben X Kategorien. Das System muss alle Dateien, die wir ihm geben, in die richtige Kategorie stellen. –

+1

Sie müssen das System trainieren - wenn Sie beispielsweise eine Datenbank mit vorkategorisierten Dokumenten haben, kann der genetische Algorithmus diese für die Entwicklung der Klassifizierungsregeln verwenden. – sinelaw

Antwort

3

Ivane, um richtig GA zu gelten Klassifizierung zu dokumentieren:

  1. Sie haben das Problem auf ein System von Komponenten zu reduzieren, die weiterentwickelt werden kann.
  2. Sie können kein GA-Training für die Dokumentklassifikation in einem einzelnen Dokument durchführen.

So sind die Schritte, die Sie beschrieben haben, sind auf dem richtigen Weg, aber ich werde Ihnen einige Verbesserungen geben:

  • Haben Sie eine ausreichende Menge an Trainingsdaten: Sie müssen eine Reihe von Dokumenten, die sind bereits klassifiziert und vielfältig genug, um die Bandbreite der Dokumente abzudecken, denen Sie wahrscheinlich begegnen werden.
  • Trainieren Sie Ihre GA so, dass sie eine Untergruppe dieser Dokumente korrekt klassifiziert, auch bekannt als der Trainingsdatensatz.
  • Testen Sie bei jeder Generation Ihre beste Probe gegen einen Validierungsdatensatz und beenden Sie das Training, wenn die Validierungsgenauigkeit abnimmt.

Also, was Sie tun möchten, ist:

prevValidationFitness = default; 
currentValidationFitness = default; 
bestGA = default; 

while(currentValidationFitness.IsBetterThan(prevValidationFitness)) 
{ 
    prevValidationFitness = currentValidationFitness; 

    // Randomly generate a population of GAs 
    population[] = randomlyGenerateGAs(); 

    // Train your population on the training data set 
    bestGA = Train(population); 

    // Get the validation fitness fitness of the best GA 
    currentValidationFitness = Validate(bestGA); 

    // Make your selection (i.e. half of the population, roulette wheel selection, or random selection) 
    selection[] = makeSelection(population); 

    // Mate the specimens in the selection (each mating involves a crossover and possibly a mutation) 
    population = mate(selection); 
} 

Jedes Mal, wenn Sie ein neues Dokument erhalten bekommen (eine, die vor klassifiziert wurde nicht), können Sie nun mit Ihrem besten GA klassifizieren:

category = bestGA.Classify(document); 

Das ist also nicht die All-Over-All-Lösung, aber es sollte Ihnen einen guten Start geben. Pozdravi, Kiril

Verwandte Themen