Introducción a las Cadenas de Markov


Imagen de Unsplash

Las cadenas de Markov son un tipo de sistema matemático que pasa de un estado a otro de acuerdo con ciertas reglas de probabilidad. Fueron introducidos por primera vez por Andrei Markov en 1906 como una forma de modelar el comportamiento de los procesos aleatorios y desde entonces se han aplicado a una amplia gama de campos, incluidos la física, la biología, la economía, la estadística, el aprendizaje automático y la informática.

Las cadenas de Markov llevan el nombre del matemático ruso Andrei Markov, quien fue el responsable de desarrollar la teoría de estos sistemas a principios del siglo XX. Markov estaba interesado en comprender el comportamiento de los procesos aleatorios y desarrolló la teoría de las cadenas de Markov para modelar dichos procesos.

Introducción a las Cadenas de Markov
Figura 1. Visualización de un sistema de Markov de dos estados: las flechas indican transiciones entre estados.

Las cadenas de Markov a menudo se usan para modelar sistemas que exhiben un comportamiento sin memoria, donde el comportamiento futuro del sistema no está influenciado por su comportamiento pasado.

Una aplicación común de las cadenas de Markov en la ciencia de datos es la predicción de texto. Es un área de PNL (Procesamiento del Lenguaje Natural) muy utilizada en la industria tecnológica por empresas como Google, LinkedIn e Instagram. Cuando escribes un correo electrónico, Google predice y sugiere palabras o frases autocompletar Tu correo electrónico. Cuando recibe mensajes en Instagram o LinkedIn, esas aplicaciones sugieren posibles respuestas. Estas son las aplicaciones de la cadena de Markov que exploraremos. Es decir, los tipos de modelos que utilizan estas grandes empresas en producción para estas características son más complejos.

En ciencia de datos, las cadenas de Markov también se pueden usar para modelar una amplia gama de fenómenos, incluida la evolución de datos de series temporales, el movimiento de partículas en un gas, la propagación de enfermedades y el comportamiento de los mercados financieros.

Ejemplo de serie temporal

Un ejemplo de cómo se puede usar una cadena de Markov para modelar la evolución de una serie de tiempo:

Supongamos que tenemos una serie temporal de precios de acciones y queremos usar una cadena de Markov para modelar la evolución del precio de las acciones a lo largo del tiempo. Podemos definir una serie de estados que puede tomar el precio de una acción (por ejemplo, “aumenta,” “decreciente,” y “estable“) y determinar la probabilidad de transición entre estos estados. Por ejemplo, podemos definir las probabilidades de transición de la siguiente manera:

        Increasing  Decreasing  Stable
Increasing    0.6         0.3     0.1
Decreasing    0.4         0.4     0.2
Stable        0.5         0.3     0.2

Esta matriz determina la probabilidad de transición de un estado a otro dado el estado actual. Por ejemplo, si el precio de una acción está aumentando actualmente, existe un 60 % de probabilidad de que continúe aumentando, un 30 % de probabilidad de que disminuya y un 10 % de probabilidad de que se mantenga estable.

Después de definir la cadena de Markov y sus probabilidades de transición, podemos usarla para predecir la evolución futura del precio de las acciones simulando transiciones entre estados. En cada paso de tiempo, usaríamos el estado actual y las probabilidades de transición para determinar la probabilidad de transición a cada estado siguiente posible.

Una limitación de las cadenas de Markov es que se aplican solo a sistemas que exhiben un comportamiento sin memoria. Esto significa que el comportamiento futuro del sistema no se ve afectado por su comportamiento pasado. Si un sistema muestra memoria, es posible que una cadena de Markov no sea la herramienta más adecuada para modelar su comportamiento.

Otra limitación de las cadenas de Markov es que solo pueden modelar sistemas con un número finito de estados. Si el sistema puede aceptar un número infinito de estados, la cadena de Markov no podrá modelar con precisión su comportamiento.

Las cadenas de Markov solo pueden modelar sistemas que exhiben un comportamiento estacionario, donde las probabilidades de transición entre estados no cambian con el tiempo. Si las probabilidades de transición cambian con el tiempo, es posible que se requiera un modelo más complejo para capturar con precisión el comportamiento del sistema.

Un ejemplo de cómo implementar una cadena de Markov en Python:

Modelado del precio de las acciones para predecir si está subiendo, bajando o estable.

import numpy as np

# Define the states of the Markov chain
states = ["increasing", "decreasing", "stable"]

# Define the transition probabilities
transition_probs = np.array([[0.6, 0.3, 0.1], [0.4, 0.4, 0.2], [0.5, 0.3, 0.2]])

# Set the initial state
current_state = "increasing"

# Set the number of time steps to simulate
num_steps = 10

# Simulate the Markov chain for the specified number of time steps
for i in range(num_steps):
    # Get the probability of transitioning to each state
    probs = transition_probs[states.index(current_state)]
    
    # Sample a new state from the distribution
    new_state = np.random.choice(states, p=probs)
    
    # Update the current state
    current_state = new_state
    
    # Print the current state
    print(f"Step {i+1}: {current_state}")

Este código define una cadena de Markov simple con tres estados (“creciente”, “decreciente” y “estable”) y determina las probabilidades de transición entre estos estados. Luego simula la cadena de Markov durante 10 pasos de tiempo, seleccionando un nuevo estado en cada paso de tiempo de acuerdo con las probabilidades de transición y actualizando el estado actual en consecuencia. El resultado de este código será una secuencia de estados que representan la evolución del sistema a lo largo del tiempo, como se muestra a continuación:

Introducción a las Cadenas de Markov
Figura 2. Salida de un proceso de Markov de tres estados establecido como estado inicial aumento”.

Si el estado actual es “decreciente” y ejecutamos el código, obtenemos el siguiente resultado:

Introducción a las Cadenas de Markov
Figura 3. Salida de un proceso de Markov de tres estados establecido como estado inicial decreciente”.

Tenga en cuenta que este es un ejemplo muy simplificado y, en la práctica, es posible que necesite usar más estados y considerar probabilidades de transición más complejas para modelar con precisión el comportamiento del sistema. Sin embargo, esto muestra la idea básica de cómo se puede implementar una cadena de Markov en Python.

Las cadenas de Markov se pueden aplicar a una variedad de problemas y se pueden implementar usando una variedad de herramientas y bibliotecas en Python.incontable‘ y scipy.stats biblioteca.

Sin embargo, es importante considerar cuidadosamente las suposiciones de las cadenas de Markov y si son apropiadas para un problema en particular antes de usarlas para el modelado de sistemas. En conclusión, las cadenas de Markov son una herramienta útil para que los científicos e investigadores de datos las consideren al analizar y modelar sistemas que exhiben ciertos tipos de comportamiento.

Benjamín O. Tayo Físico, educador y escritor de ciencia de datos, así como propietario de DataScienceHub. Anteriormente, Benjamin enseñó ingeniería y física en el centro de Oklahoma, el Gran Cañón y el estado de Pittsburgh.

Leave a Reply

Your email address will not be published. Required fields are marked *