machine-learning hidden-markov-models crf crf++ markov-random-fields

machine learning - ¿Secuencia de aprendizaje usando campos aleatorios condicionales?



machine-learning hidden-markov-models (1)

Soy nuevo en el aprendizaje secuencial (y el aprendizaje automático) y trato de comprender cómo usar campos aleatorios condicionales para resolver mi problema.

Tengo un conjunto de datos que es un registro secuencial de cuándo y dónde funcionó el usuario final de mi aplicación. Por ejemplo, el siguiente conjunto de datos solo tendrá valores para Usuario1

User Facility Weekday User1 FacilityA Monday User1 FacilityB Tuesday User1 FacilityC Wednesday ... ... ...

Estoy tratando de resolver el siguiente problema: dado el día de la semana y las instalaciones en las que un usuario trabajó, ¿qué facilidad y día laborable trabajarán a continuación?

Para resolver este problema, comencé a buscar Campos aleatorios condicionales, pero estoy teniendo un momento difícil para que cualquier biblioteca trabaje con él.

Traté de trabajar con las siguientes bibliotecas: 1. PyStruct ( https://pystruct.github.io/ ) Pero esto no funcionó para mí debido a este problema: Índice fuera de límites: adaptación de SSVM con Pystruct

  1. CRFSuite ( http://www.chokkan.org/software/crfsuite/ ) (Esto tiene dependencia de libBFGS. Cuando instalo libbfgs en mi cuadro ubuntu sin ningún error, la ejecución de ''make install'' para CRFSuite aún falla y dice que no puede reconocer libBFGS)

Así que recurrí a otra biblioteca. 3. CRF ++ ( https://taku910.github.io/crfpp/ )

Pude instalar CRF ++ y también puedo ejecutar los ejemplos que figuran en su distribución. Pero, necesito ayuda para entender cómo puedo modificar el archivo de la plantilla para que se ajuste a mi uso ...

Además, estaba pensando que mis etiquetas serán una cadena concatenada de instalación + día de la semana desde el conjunto de datos anterior.

Soy nuevo en la secuencia de aprendizaje y actualmente estoy esforzándome para investigar cómo resolver este problema ...

Cualquier consejo será extremadamente útil ya que parezco un poco atrapado aquí ...

¡Gracias!


  1. Sí, ya que está intentando predecir dos etiquetas (Facility y Day), se requerirá concatenar las etiquetas. De lo contrario, también puede aprender 2 modelos diferentes para predecir cada etiqueta (vea el punto 3).

  2. Creo que debería buscar modelos de regresión para este problema en lugar de CRF.

  3. Creo que la disposición de los datos debe ser tal que el historial de registro de un usuario se aprenda fácilmente. ¿Puede decirme el historial ''mínimo'' que tiene para ''cualquier'' usuario (los últimos 3 inicios de sesión? 5 inicios de sesión? 7 inicios de sesión?)?

Suponiendo que tiene los últimos 3 inicios de sesión de cada usuario. Entonces, si en su lugar, organizaría los datos de una manera diferente y aprendería 2 modelos diferentes, uno para predecir el día y otro para predecir la instalación. Un ejemplo de disposición de datos y archivo de plantilla para predecir el día está aquí . De manera similar, cambie el nombre de los días de la semana por los nombres de las instalaciones y aprenda un modelo para predecir las instalaciones. También puede pensar y agregar más características a las que he sugerido. Si tiene más datos de usuario (por ejemplo, ocupación o edad o algo así), debería intentar agregar más columnas a los datos de capacitación y agregar estas columnas como características en el archivo de plantilla. Recuerde, el archivo de prueba debe organizarse de la misma manera que el archivo de capacitación (excepto que la última columna puede estar vacía / faltante, porque es la etiqueta que debe ser predicha por el modelo durante la prueba).

Si desea continuar y predecir ambas etiquetas en un modelo, puede intentar la concatenación (en el ejemplo que le he dado, el día se convertirá en day_facility).