Pregunta

Tengo un pequeño problema con mi proyecto para la universidad.

Tengo que poner en práctica la clasificación de documentos utilizando el algoritmo genético.

He echado un vistazo a este ejemplo y (digamos que) entendido los principios de los algoritmos genéticos, pero no estoy seguro de cómo se pueden implementar en la clasificación de documentos. No se puede averiguar la función de aptitud.

Esto es lo que he conseguido hasta ahora pensar en (Su probablemente totalmente equivocado ...)

Aceptar que tengo las categorías y cada categoría es descrito por algunas palabras clave.
Dividir el archivo de palabras.
Crear primera población de matrices (100 matrices, por ejemplo, pero será depende del tamaño del archivo) lleno de palabras al azar del archivo.
1:
Seleccione la mejor categoría para cada niño en la población (contando las palabras clave en ella).
Crossover cada 2 niños en la población (nueva matriz que contiene la mitad de cada niños) - "Crossover"
Llenar el resto de los niños que se quedan en el cruce con aleatorias palabras no utilizadas del archivo - "evolución ??"
Reemplazar palabras al azar en niños azar de la nueva población con palabra al azar a partir del archivo (usado o no) - "mutación"
Copiar los mejores resultados a la nueva población.
Ir a 1 hasta que se alcanza un límite de población o se encuentra alguna categoría suficientes veces

No estoy seguro de si esto es correcto y estará feliz de tener algunos consejos, chicos.
Mucho agradecería que!

¿Fue útil?

Solución

Ivane, con el fin de aplicar correctamente GA de la clasificación de documentos:

  1. Hay que reducir el problema a un sistema de componentes que pueden desprenderse.
  2. No se puede hacer el entrenamiento de GA para la clasificación de documentos en un solo documento.

Así que los pasos que usted ha descrito están en el camino correcto, pero te voy a dar algunas mejoras:

  • Haga que una cantidad suficiente de la formación de los datos: se necesita un conjunto de documentos que ya están clasificados y son lo suficientemente diverso como para cubrir toda la gama de documentos que es muy probable que encuentro
  • .
  • entrenar a su AG para clasificar correctamente un subconjunto de esos documentos, también conocido como el conjunto de datos de entrenamiento.
  • En cada generación, prueba de su mejor ejemplar en contra de un conjunto de datos de validación y formación de parada si la precisión de validación empieza a disminuir.

Así que lo que quiere hacer es:

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);
}

Siempre que reciba obtener un nuevo certificado (una que no haya sido clasificado antes), ahora se puede clasificarlo con su mejor GA:

category = bestGA.Classify(document);

Así que esto no es del todo-ser-todo extremo solución, pero hay que darle un buen comienzo. Pozdravi, Kiril

Otros consejos

de aprendizaje Sistemas Clasificadores / interesante utilidad. Un LCS es un tipo de algoritmo evolutivo destinado a problemas de clasificación. Hay un capítulo sobre ellos en Eiben & Smith de Introducción a la Computación Evolutiva .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top