Alisado en el modelo Naive Bayes

13

Un predictor de Naive Bayes hace sus predicciones usando esta fórmula:

PAG(Y=yEl |X=X)=αPAG(Y=y)yoPAG(Xyo=XyoEl |Y=y)

donde es un factor de normalización. Esto requiere estimar los parámetros partir de los datos. Si hacemos esto con -smoothing, obtenemos la estimaciónP ( X i = x i | Y = y ) kαPAG(Xyo=XyoEl |Y=y)k

PAG^(Xyo=XyoEl |Y=y)=# #{Xyo=Xyo,Y=y}+k# #{Y=y}+norteyok

donde hay valores posibles para . Estoy bien con esto. Sin embargo, para lo anterior, tenemosX inorteyoXyo

PAG^(Y=y)=# #{Y=y}norte

donde hay ejemplos en el conjunto de datos. ¿Por qué no suavizamos también lo anterior? O más bien, ¿ suavizamos lo anterior? Si es así, ¿qué parámetro de suavizado elegimos? Parece un poco tonto elegir también , ya que estamos haciendo un cálculo diferente. ¿Hay consenso? ¿O no importa demasiado?nortek

Chris Taylor
fuente

Respuestas:

5

La razón típica para suavizar en primer lugar es manejar casos donde . Si esto no se hiciera, siempre obtendríamos P ( Y = y | X = x ) = 0 siempre que este fuera el caso.# #{Xyo=XyoEl |Y=y}=0 0PAG(Y=yEl |X=X)=0 0

Esto sucede cuando, por ejemplo, al clasificar documentos de texto, encuentra una palabra que no estaba en sus datos de entrenamiento, o simplemente no apareció en alguna clase en particular.

Por otro lado, en el caso de la probabilidad previa de clase, , esta situación no debería ocurrir. Si lo hiciera, significaría que está tratando de asignar objetos a clases que ni siquiera aparecían en los datos de entrenamiento.PAG(Y=y)

Además, nunca he encontrado el término -smoothing. El suavizado de Laplace o aditivo es mucho más común.k

Alto
fuente
1
La razón para suavizar en general es evitar sobreajustar los datos. El caso en que el recuento de alguna clase es cero es solo un caso particular de sobreajuste (que resulta ser particularmente malo). Es posible que desee suavizar las probabilidades cuando se observa cada clase. Supongo que me molesta la aparente asimetría: el suavizado de Laplace corresponde a suponer que hay observaciones adicionales en su conjunto de datos. ¿Por qué ignorarías esas observaciones al ajustar el anterior?
Chris Taylor
PAG(Y=y)PAG(Xyo=XyoEl |Y=y)
"esta situación no debería ocurrir. Si lo hiciera, significaría que está tratando de asignar objetos a clases que ni siquiera aparecían en los datos de entrenamiento". Uhh ... ¿cómo asignaría un clasificador un objeto a una clase que nunca había visto antes (es decir, no está en los datos de entrenamiento)?
Jemenake
@Jemenake El problema normalmente se conoce como aprendizaje de tiro cero, por ejemplo, vea Aprendizaje de tiro cero con códigos de salida semánticos
alto
cuando entrenamos el modelo usando el conjunto de datos de entrenamiento, podríamos construir un vocabulario usando las palabras que aparecen en el conjunto de datos de entrenamiento, entonces ¿por qué no simplemente eliminar palabras nuevas que no están en el vocabulario cuando hacemos predicciones en el conjunto de pruebas?
aguacate