Saltar al contenido
Inferencia Causal con Python y Causal ML

Métodos Basados en Modelos: Regresión Lineal, Logística, Árboles de Decisión y Random Forests.

Introducción

La inferencia causal es un enfoque para entender la relación de causa y efecto entre variables. Los métodos basados en modelos, como la regresión lineal, logística, árboles de decisión y random forests, son herramientas comunes para la inferencia causal en los datos observacionales.

La regresión lineal es utilizada para variables continuas, mientras que la logística es utilizada para variables binarias. Los árboles de decisión son una forma de modelo no paramétrico utilizado para representar las decisiones tomadas por un algoritmo en la forma de un árbol. Por otro lado, los random forests combinan múltiples árboles de decisión para generar un único modelo más robusto.

Estos modelos, basados en la teoría de la probabilidad, son utilizados para determinar la probabilidad de que una causa tenga un efecto en una variable con respuesta. Sin embargo, se debe tener precaución al realizar inferencias causales debido a posibles sesgos que puedan existir en los datos observacionales y la necesidad de considerar otros factores que podrían influir en la relación causal.

Resumen

Los métodos basados en modelos se centran en la creación y ajuste de modelos matemáticos para predecir la relación entre una variable independiente (o un conjunto de variables independientes) y una variable dependiente. Aquí te presento brevemente los cuatro modelos más comunes dentro de este grupo:

  1. Regresión Lineal: Este modelo asume una relación lineal entre una variable independiente y una variable dependiente. Por ejemplo, si queremos predecir el precio de un coche basado en su edad, podemos utilizar la regresión lineal para modelar esa relación. En este modelo, la variable dependiente se predice en función de una o más variables independientes.

  2. Regresión Logística: Se utiliza para predecir una variable categórica binaria (por ejemplo, si un correo electrónico es spam o no). La regresión logística modela la probabilidad de ocurrencia de un evento en función de una o más variables independientes.

  3. Árboles de Decisión: Esta herramienta visualiza las decisiones y los posibles resultados de varios escenarios. Se emplea para predecir la relación entre una variable dependiente y varias variables independientes. Se construye un árbol de decisiones para predecir una variable dependiente basado en las respuestas a varias preguntas de sí o no.

  4. Random Forests: Es un conjunto de árboles de decisión, cada uno trabajando con una selección aleatoria de variables. Cada árbol evalúa una parte de la relación entre la variable dependiente y las variables independientes, y luego los resultados se combinan para generar una predicción. Es especialmente efectivo para variables con muchas variables independientes.

Estos cuatro modelos son ampliamente utilizados en inferencia causal con Python y son herramientas poderosas para predecir relaciones entre variables independientes y dependientes. Es importante considerar las fortalezas y debilidades de cada modelo al elegir el más adecuado para resolver un problema específico.

Aplicación teórica

Ejemplo Práctico: Predicción de Enfermedades Cardíacas

En un ejemplo práctico de métodos basados en modelos, podríamos predecir si una persona tendrá una enfermedad cardíaca o no en base a ciertas características como la edad, el género, la presión arterial, y el nivel de colesterol, entre otros. Para ello, podríamos utilizar los siguientes modelos:

  1. Regresión Lineal:

    • Descripción: Modelamos una relación lineal entre las variables de entrada (edad, género, presión arterial, nivel de colesterol) y la variable de salida (la presencia o ausencia de enfermedad cardíaca).
    • Proceso: Utilizando datos de entrenamiento, encontramos los coeficientes que mejor se ajusten a los datos y utilizamos el modelo resultante para predecir si una persona tendrá o no la enfermedad.
  2. Regresión Logística:

    • Descripción: Similar a la regresión lineal, pero predice una variable categórica (en este caso, la presencia o ausencia de enfermedad cardíaca).
    • Proceso: Utiliza una función sigmoide para mapear los valores de entrada a una probabilidad de tener la enfermedad.
  3. Árboles de Decisión:

    • Descripción: Utiliza una estructura de árbol para tomar decisiones, donde cada nodo del árbol representa una pregunta sobre una de las variables de entrada, y las ramas representan las respuestas posibles.
    • Proceso: Para predecir si una persona tendrá o no la enfermedad, se sigue el árbol hacia abajo hasta llegar a una hoja que dará la respuesta.
  4. Random Forests:

    • Descripción: Utiliza múltiples árboles de decisión para hacer la predicción final.
    • Proceso: Cada árbol se entrena con una muestra aleatoria de los datos de entrenamiento y utiliza un subconjunto aleatorio de las variables de entrada. Luego, las predicciones de todos los árboles se combinan para obtener una predicción final.
Aplicación práctica

Un ejemplo en Python para cada método de Modelos de Aprendizaje:

Regresión Lineal:

La regresión lineal es una técnica de análisis estadístico que se utiliza para encontrar una relación entre una variable dependiente (Y) y una o más variables independientes (X). En Python, podemos utilizar la biblioteca "sklearn" para crear un modelo de regresión lineal. Vamos a crear un modelo simple con la variable X_val como entrada y la variable Y_val como salida.


from sklearn.linear_model import LinearRegression

# Datos de entrada y de salida
X_val = [[1], [2], [3], [4], [5]]
Y_val = [2, 3, 4, 5, 6]

# Creación del modelo y entrenamiento
reg = LinearRegression().fit(X_val, Y_val)

# Predecir el resultado para una nueva entrada
reg.predict([[6]])
# Salida -> [7.0]
    

Regresión Logística:

La regresión logística se utiliza para predecir la probabilidad de una variable categórica binaria, en función de una o más variables independientes. Para implementar una regresión logística en Python, podemos utilizar la biblioteca "sklearn" de la siguiente manera:


from sklearn.linear_model import LogisticRegression

# Datos de entrada y de salida
X_val = [[1], [2], [3], [4], [5]]
Y_val = [0, 1, 0, 1, 0]

# Creación del modelo y entrenamiento
reg = LogisticRegression().fit(X_val, Y_val)

# Predecir el resultado para una nueva entrada
reg.predict_proba([[6]])
# Salida -> [[0.457892, 0.542108]]
    

Árboles de Decisión:

Los árboles de decisión son un método de aprendizaje supervisado que se utiliza para la clasificación y la regresión. En los árboles de decisión, cada nodo interno representa una característica (o atributo), cada rama representa una decisión basada en esa característica y cada hoja representa una clase o un valor. Para realizar la implementación en Python, podemos utilizar la biblioteca "sklearn" de la siguiente manera:


from sklearn.tree import DecisionTreeClassifier

# Datos de entrada y de salida
X_val = [[1, 0], [1, 1], [0, 0], [0, 1]]
Y_val = [1, 0, 0, 1]

# Creación del modelo y entrenamiento
tree = DecisionTreeClassifier().fit(X_val, Y_val)

# Predecir el resultado para una nueva entrada
tree.predict([[1, 0]])
# Salida -> [1]
    

Random Forest:

El bosque aleatorio es un método de aprendizaje supervisado que se utiliza para la clasificación y la regresión. Consiste en la creación de múltiples árboles de decisión y fusionarlos para obtener una predicción más precisa. Para su implementación en Python, podemos utilizar la biblioteca "sklearn" de la siguiente manera:


from sklearn.ensemble import RandomForestClassifier

# Datos de entrada y de salida
X_val = [[0, 0], [0, 1], [1, 0], [1, 1]]
Y_val = [1, 1, 0, 0]

# Creación del modelo y entrenamiento
forest = RandomForestClassifier(n_estimators=100).fit(X_val, Y_val)

# Predecir el resultado para una nueva entrada
forest.predict([[0, 0]])
# Salida -> [1]
    

Espero que estos ejemplos te sean de ayuda para comprender mejor la implementación de los métodos basados en modelos.