Dada una secuencia de entradas, necesito determinar si esta secuencia tiene cierta propiedad deseada. La propiedad solo puede ser verdadera o falsa, es decir, solo hay dos clases posibles a las que puede pertenecer una secuencia.
La relación exacta entre la secuencia y la propiedad no está clara, pero creo que es muy consistente y debería prestarse a una clasificación estadística. Tengo una gran cantidad de casos para entrenar al clasificador, aunque puede ser un poco ruidoso, en el sentido de que hay una ligera probabilidad de que a una secuencia se le asigne la clase incorrecta en este conjunto de entrenamiento.
Ejemplo de datos de entrenamiento:
Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...
En términos generales, la propiedad está determinada por el conjunto de valores en la secuencia (por ejemplo, la presencia de un "11" significa que la propiedad seguramente será falsa), así como el orden de los valores (por ejemplo, "21 7 5 "aumenta significativamente la posibilidad de que la propiedad sea verdadera).
Después del entrenamiento, debería poder darle al clasificador una secuencia que no se había visto anteriormente, como (1 21 7 5 3)
, y debería generar su confianza de que la propiedad es verdadera. ¿Existe un algoritmo bien conocido para entrenar a un clasificador con este tipo de entradas / salidas?
He considerado el ingenuo clasificador bayesiano (que no es realmente adaptable al hecho de que el orden importa, al menos no sin romper severamente la suposición de que las entradas son independientes). También he investigado el enfoque oculto del modelo de Markov, que parece ser inaplicable porque solo hay una salida disponible, en lugar de una salida por entrada. ¿Qué me perdí?
fuente
Respuestas:
Podría probar enfoques probabilísticos similares al ingenuo clasificador de Bayes pero con suposiciones más débiles. Por ejemplo, en lugar de hacer una fuerte suposición de independencia, haga una suposición de Markov:
es la etiqueta de tu clase, x es tu secuencia. Necesita estimar dos distribuciones condicionales, una para c = 1 y otra para c = 0 .c x c=1 c=0
Por la regla de Bayes:
Qué distribuciones elegir para depende de qué otras suposiciones puede hacer sobre las secuencias y cuántos datos tiene disponibles.p(xt∣xt−1,c)
Por ejemplo, podría usar:
Con distribuciones como esta, si hay 21 números diferentes en sus secuencias, tendría que estimar parámetros π ( x t , x t , c ) más 21 ⋅ 2 = 42 parámetros para p ( x 0 ∣ c ) más 2 parámetros para p ( c ) .21⋅21⋅2=882 π(xt,xt,c) 21⋅2=42 p(x0∣c) 2 p(c)
Si no se cumplen los supuestos de su modelo, puede ayudar a ajustar los parámetros directamente con respecto al rendimiento de clasificación, por ejemplo, minimizando la pérdida de registro promedio
usando gradiente de descenso.
fuente
Sugeriría que defina algunas características y luego elija un algoritmo de aprendizaje automático para aplicarlas.
Características: Básicamente, cada característica debe ser algo que se pueda calcular a partir de una secuencia particular, y que usted piense que puede ser relevante para saber si la secuencia tiene la propiedad o no. Según su descripción, puede considerar características como las siguientes:
(7 5 21 3 3)
(7 5 21 3 3)
7 5
5 21
21 3
3 3
"Bolsa de trigramas". También podría considerar trigramas, que es una subsecuencia de tres números consecutivos de la secuencia original. Puedes hacer lo mismo que arriba.
Otra variación de la idea anterior es usar "conjunto de X" en lugar de "bolsa de X". Por ejemplo, en lugar de contar cuántas veces cada númeroyo aparece, simplemente podría generar un booleano que indica si el número yo ha aparecido al menos una vez o no. Esto puede o no dar mejores resultados. En general, puede experimentar con el conjunto de características que utiliza, para descubrir cuáles dan los mejores resultados (por ejemplo, tal vez deje caer la "bolsa de trigramas"; o tal vez pueda proponer otras ideas para probar) .
Algoritmo de aprendizaje automático: no estoy calificado para darle consejos sobre cómo seleccionar un algoritmo de aprendizaje automático; Hay muchas posibilidades. Pero, en general, va a aplicar el algoritmo de aprendizaje a su conjunto de entrenamiento (los pares de características de entrada / salida / booleanos) e intentará usarlo para predecir cuáles de los valores en el conjunto de prueba tienen la propiedad. Su selección del algoritmo de aprendizaje automático puede depender de varios factores, incluida la forma en que el tamaño del conjunto de entrenamiento se compara conre (la cantidad de funciones). Su mejor opción puede ser probar varios algoritmos de aprendizaje automático y ver cuál funciona mejor. Es posible que desee incluir Máquinas de vectores de soporte (SVM) como uno de los algoritmos que intente.
fuente
Lo que efectivamente está haciendo es la prueba de hipótesis en series de tiempo. Los HMM funcionarían para usted, aunque tendría que adaptarlos a su caso particular.
Honestamente, si no puede escribir algún tipo de descripción matemática de lo que está tratando de detectar, no llegará muy lejos. ¿Quizás pueda decirnos qué tipo de característica espera ver?
fuente
Dada una longitud máxima de 12 en la secuencia, una red neuronal con 12 entradas y una salida puede funcionar, pero tendría que rellenar el final de cada secuencia con ceros o algún valor inerte.
fuente
¿Has intentado usar redes bayesianas? Eso es lo primero en lo que pienso cuando necesito fusionar múltiples datos (que vienen de uno en uno) para llegar a las probabilidades de una variable aleatoria.
Las redes bayesianas no se basan en el supuesto de independencia que los ingenuos Bayes hacen.
Por cierto, los modelos ocultos de Markov son un caso especial de redes bayesianas.
fuente