Cómo clasificar los documentos
Es importante destacar que la asignación de Dirichlet latente es un método no supervisado: Por sí solo, no tiene en cuenta la clase o categoría de un documento. Pero, como se explica en la sección 7.2 del papel que lo introdujo Puede utilizarse para desarrollar características para la clasificación:
Un aspecto difícil del problema de la clasificación de documentos es la elección de las características. Tratar las palabras individuales como características da lugar a un conjunto de características rico pero muy grande (Joachims, 1999). Una forma de reducir este conjunto de características es utilizar un modelo LDA para reducir la dimensionalidad. En concreto, LDA reduce cualquier documento a un conjunto fijo de características de valor real -los parámetros posteriores de Dirichlet $\gamma\ast(\textbf{w})$ asociado al documento.
Así que como respuesta general y práctica a su segunda pregunta: Los parámetros de la distribución temática de un documento pueden utilizarse como características en un clasificador de su elección. Eso es exactamente lo que hicieron los autores de LDA en sus experimentos:
En estos experimentos, estimamos los parámetros de un modelo LDA en todos los documentos, sin referencia a su verdadera etiqueta de clase. A continuación, entrenamos una máquina de vectores de soporte (SVM) en las representaciones de baja dimensión proporcionadas por LDA y comparamos esta SVM con una SVM entrenada en todas las características de las palabras.
Aquí hay un ejemplo de cómo podría ser esto en python. Transforma el conjunto de datos de dígitos de sklearn
a un espacio de 16 temas, y luego predice el dígito utilizando la regresión logística. (Dieciséis elegidos de forma bastante arbitraria tras una exploración en mi respuesta aquí .)
# -*- coding: utf-8 -*-
"""
Created on Fri May 27 15:24:16 2016
@author: SeanEaster
"""
from sklearn.decomposition import LatentDirichletAllocation as LDA
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import train_test_split
from sklearn.metrics import confusion_matrix
import numpy as np
digits = load_digits()
images = digits['images']
images = [image.reshape((1,-1)) for image in images]
images = np.concatenate(tuple(images), axis = 0)
lda = LDA(n_topics = 16)
X = lda.fit_transform(images)
Y = digits['target']
xTrain, xTest, yTrain, yTest = train_test_split(X,Y,test_size =.2, random_state=9)
classifier = LogisticRegression(C = 1e5) # Choice of C here is arbitrary; in practice, cross validate
classifier.fit(X,Y)
print confusion_matrix(yTest, classifier.predict(xTest))
Lo que da resultados razonables: aquí está la matriz de confusión que imprime:
[[33 0 0 0 0 0 0 0 0 0]
[ 0 36 1 0 0 0 0 0 2 1]
[ 0 1 40 2 0 0 0 0 2 0]
[ 0 0 0 32 0 0 0 0 0 2]
[ 0 0 0 0 36 0 0 4 0 1]
[ 0 0 0 1 0 34 0 0 0 4]
[ 0 0 0 0 0 0 29 0 0 0]
[ 0 0 0 0 0 0 0 27 1 0]
[ 0 6 1 0 1 1 0 1 25 1]
[ 0 0 0 1 1 1 0 0 3 29]]
Para una aplicación de texto, vea esto ejemplo de clasificación de la sklearn
docs.
Usos de las distribuciones posteriores
En cuanto a tu primera pregunta, los temas de LDA siguen teniendo utilidad fuera de la clasificación, ya que los temas extraídos pueden ofrecer un resumen descriptivo de un corpus. Otro sklearn
ejemplo hace esto en el conjunto de datos de 20 grupos de noticias, e imprime las palabras más importantes de los temas. Esta es la salida:
Topics in LDA model:
Topic #0:
government people mr law gun state president states public use right rights national new control american security encryption health united
Topic #1:
drive card disk bit scsi use mac memory thanks pc does video hard speed apple problem used data monitor software
Topic #2:
said people armenian armenians turkish did saw went came women killed children turkey told dead didn left started greek war
Topic #3:
year good just time game car team years like think don got new play games ago did season better ll
Topic #4:
10 00 15 25 12 11 20 14 17 16 db 13 18 24 30 19 27 50 21 40
Topic #5:
windows window program version file dos use files available display server using application set edu motif package code ms software
Topic #6:
edu file space com information mail data send available program ftp email entry info list output nasa address anonymous internet
Topic #7:
ax max b8f g9v a86 pl 145 1d9 0t 34u 1t 3t giz bhj wm 2di 75u 2tm bxn 7ey
Topic #8:
god people jesus believe does say think israel christian true life jews did bible don just know world way church
Topic #9:
don know like just think ve want does use good people key time way make problem really work say need
Ya se puede ver un solapamiento intuitivo con los nombres de los grupos de noticias, descritos aquí Por ejemplo talk.politics.guns
, talk.religion.misc
. Puede llevar este análisis descriptivo más allá, pero el modo exacto depende mucho de su interés.