conocimiento y práctica. Conferencia 1. Conceptos básicos de inferencia causal / Sudo Null IT News

En nuestro siglo, la Ciencia de Datos ocupa un lugar central en el análisis y uso de datos. Sin embargo, este concepto suele reducirse a algoritmos de aprendizaje automático o incluso a inteligencia artificial únicamente, restando importancia a otros aspectos importantes de este campo del conocimiento.

La historia de la formación de la ciencia de datos moderna comenzó con la convergencia de dos poderosas herramientas: la econometría y el aprendizaje automático. En diferentes momentos parecían polos opuestos en el análisis de datos. El aprendizaje automático se centró en una alta precisión de las predicciones, sacrificando a veces la comprensibilidad de los modelos. La econometría, por otro lado, enfatizó la interpretabilidad, la comprensión de las relaciones de causa y efecto, permaneciendo a veces en la sombra debido a las limitaciones de los modelos.

Sin embargo, con el tiempo, quedó claro que para comprender completamente los datos, es necesario aprender a combinar estos dos enfoques. Aquí es donde entra en juego la Inferencia Causal. Este campo de la ciencia de datos ayuda a descubrir las causas de los fenómenos combinando los puntos fuertes del aprendizaje automático y la econometría. Judea Pearl, en su artículo de 2021, destaca la importancia de la inferencia causal como “un elemento clave para lograr un equilibrio entre el empirismo radical del aprendizaje automático y el enfoque interpretativo de la econometría”.

Así, la Inferencia Causal es un campo de la estadística y la investigación científica destinado a identificar y medir relaciones de causa y efecto entre variables. Ayuda a determinar qué efecto tiene un cambio en una variable sobre otra, distinguiendo este efecto de las correlaciones simples.

La capacidad de utilizar la inferencia causal no solo para predecir eventos, sino también para comprender sus causas, la convierte en una parte integral de la ciencia de datos moderna, mejorando significativamente la calidad de las decisiones tomadas y la eficiencia del uso de la información disponible.

En esta serie de artículos veremos herramientas básicas y avanzadas de inferencia causal en el marco de la tarea de identificar la “causalidad” y estudiar el “efecto”. Toquemos brevemente los aspectos teóricos y aprendamos cómo aplicar algunos algoritmos en la práctica. Utilizaremos el lenguaje de programación Python, la biblioteca NurEx con la implementación de algoritmos. Se utilizarán como ejemplos conjuntos de datos tanto sintéticos como reales.

¡Y el ML está desnudo!

Por supuesto, ME es una poderosa herramienta para procesar información. Y con su ayuda podemos hacer una amplia variedad de cosas impresionantes. El requisito principal es formular nuestros problemas como problemas de pronóstico. ¿Quieres traducir texto del inglés al portugués? Luego cree un modelo de aprendizaje automático que prediga oraciones portuguesas en inglés.

¿Quieres reconocer caras? Luego desarrolle un modelo de aprendizaje automático que prediga la presencia de un rostro en un área específica de la imagen. ¿Quieres construir un coche autónomo? Luego, cree un modelo de aprendizaje automático que prediga la dirección de la dirección, la presión del freno y del acelerador cuando se le proporcionen imágenes y datos sensoriales del entorno del vehículo. Como señalan Ajay Agrawal, Joshua Gans y Avi Goldfarb en Prediction Machines:

La nueva ola de inteligencia artificial en realidad no nos trae inteligencia, sino un componente importante de la inteligencia: la predicción.

Sin embargo, el aprendizaje automático no es una panacea. Puede producir milagros bajo condiciones estrictas, pero puede fallar si los datos difieren de lo que el modelo está “acostumbrado a ver”. El aprendizaje automático es notoriamente deficiente a la hora de resolver problemas de causalidad inversa. Resolver estos problemas requiere responder preguntas de tipo “qué pasaría si”, que los economistas llaman contrafactuales. ¿Qué pasa si utilizo un precio diferente al que estoy pidiendo actualmente por mi artículo? ¿Qué sucede si sigo una dieta baja en azúcar en lugar de la dieta baja en grasas que estoy siguiendo? Si trabaja en un banco y otorga préstamos, tendrá que descubrir cómo el cambio de su línea de clientes afecta sus ingresos. O, si trabaja en el gobierno local, es posible que le pidan que encuentre formas de mejorar el sistema escolar. ¿Deberías regalar tabletas a todos los niños porque la era digital te lo pide? ¿O deberíamos construir una biblioteca antigua?

Como se señala en el libro Matheus Facure Alves “Inferencia causal para los valientes y verdaderos»:

basado en estosLas preguntas x son sobre causa y efecto… y desafortunadamente para el aprendizaje automático, no podemos confiar en predicciones de tipo correlación para abordarlas.

Como ilustración visual de esta historia de Prediction Machines:

En muchas industrias, los precios bajos se asocian con bajas ventas. Por ejemplo, en la industria hotelera los precios son bajos fuera de la temporada turística, pero durante los picos de demanda, los precios son altos y los hoteles están completamente llenos. Con base en estos datos, una suposición ingenua podría sugerir que un aumento en el precio conducirá a un aumento en el número de habitaciones vendidas.

Básicamente, responder preguntas sobre la causalidad es más desafiante de lo que muchos podrían pensar. De esto se trata el curso “Inferencia causal: percepción y práctica”. En él, exploramos cómo utilizar datos para estudiar las relaciones de causa y efecto y evaluar el impacto de las intervenciones en los resultados.

Si somos propietarios de una tienda en línea y queremos comprender qué elementos de diseño de sitios web y campañas de marketing afectan las ventas, entonces, utilizando métodos de causa y efecto, podemos determinar cuáles realmente generan más ingresos y dirigen los recursos en la dirección correcta.

A veces, durante el estudio de datos, sucede que se revelan relaciones de causa y efecto completamente inesperadas. Por ejemplo, un estudio de las estadísticas sobre la viruela entre aldeanos, agricultores y lecheras condujo a la invención de la primera vacuna contra la viruela del mundo. A veces un experimento implica errores. Entonces pueden surgir conceptos erróneos y conclusiones poco claras. Por ejemplo, el famoso “experimento del malvavisco de Walter Michel”, su refutación y refutación refutación.

Primero, decidamos qué queremos aprender a hacer exactamente.

Planteamiento del problema y notación.

Formalicemos el problema de la siguiente manera.

Sea un conjunto de objetos que sean de interés en el marco del estudio (llamémoslo \mathcal{U}de la palabra inglesa universo). Estos objetos pueden ser pacientes, clientes potenciales de una empresa comercial, ciudades, cualquier cosa. Valor de parámetro personalizado  incógnita en el objeto i Lo denotaremos con la adición del índice superior y el vector de valores de este parámetro, sin índice: X^i, \mathbf{X}.

Consideremos la posibilidad de influir en el objeto. Esto puede adoptar diversas formas, incluido el tratamiento de un paciente, la realización de una campaña publicitaria para atraer clientes o la introducción de restricciones administrativas en determinadas ciudades. Estas son sólo algunas de las innumerables opciones que se pueden aplicar.

En el contexto de la inferencia causal, un efecto es la división de un grupo de objetos en dos partes basándose en un atributo binario. Sin embargo, en la práctica el impacto puede ser completamente insignificante o inexistente, en cuyo caso estamos ante un impacto ficticio, que también es un fenómeno común.

En la terminología de inferencia causal, el efecto que se estudia se denomina “tratamiento”. El término proviene de ensayos médicos, donde se utiliza para referirse a un método de tratamiento o medicamento administrado a los pacientes. Sin embargo, en el contexto de la inferencia causal, “tratamiento” puede referirse a cualquier efecto sobre parte del sistema bajo estudio. Podría tratarse de una campaña publicitaria, un cambio de política o cualquier otra intervención.

Representaremos la influencia como un atributo binario. T^ique puede tomar valores 0 o 1, sin tener en cuenta la intensidad intermedia. Denotemos los conjuntos de objetos que se comparan, separados por valor. tCómo \mathcal{A} y \mathcal{B} respectivamente.

Denotamos la variable objetivo del objeto que se está estudiando como “objetivo” o Y. Suele ser una cantidad real medida en un momento específico, a menudo en el futuro. Es importante señalar que su valor se fija de antemano y no depende del tiempo. Por ejemplo, al examinar el impacto de las alertas por SMS en marzo en los clientes, podría interesarnos saber cómo afectará esto a sus compras en junio. En este caso, el número de compras en junio será nuestra variable objetivo Y. Al mismo tiempo, el número de compras, digamos, en mayo es un valor completamente diferente, llamado valor rezagado de la variable objetivo. Para mayor precisión, denotaremos dichos valores de retraso con un símbolo separado, por ejemplo Y_{\texttt{retraso de 2 meses}}.

Imaginemos que para cada objeto en estudio hay dos universos paralelos, que se diferencian sólo en la presencia de influencia sobre este objeto. Háganos saber los valores de la variable objetivo como si T=0y con T=1. Denotemos estas cantidades como Y^i_{(0)} y Y^i_{(1)}. Su diferencia se llama “efecto del tratamiento” (TE^i = Y^i_{(1)} - Y^i_{(0)}), que es un reflejo real del efecto sobre el objeto. i.

Además, uno de estos universos ficticios coincide con el real. Los significados reales se denominan fácticos y los paralelos a ellos se denominan contrafactuales. Por ejemplo, si un objeto i_1 en realidad influyó y pertenece a muchos \mathcal{B}entonces sus valores Y^{i_1}_{(1)} y Y^{i_1}_{(0)} será Y^{i_1}_{factual} y Y^{i_1}_{contrafactual} respectivamente.

Para cada objeto individual hay su propio EL^yo. En el marco del problema a resolver, nuestro verdadero interés es estimar la llamada cantidad efecto de impacto promedio de multitud \mathcal{M}или efecto promedio del tratamiento (ATE_\mathcal{M}).

ATE_{M}=\frac{1}{\left| M\right|}\sum_{i\in M}^{}TE^{i}=\mathbb{E}TE=\mathbb{E}(Y_{(1)}-Y_{(0)})

ya que muchos \mathcal{M} (objetos de materia) sobre los cuales promediamos no siempre coincide con el conjunto \mathcal{U} De todos los objetos estudiados, refinaremos el conjunto promedio usando un subíndice cuando sea necesario. Además, existen algunos conceptos y designaciones establecidos. Para mayor comodidad, aquí hay una lista de notaciones:

Si sabemos contrafactual

Veamos un ejemplo sintético:

      import pandas as pd
            import hypex
            from hypex.utils import datasets


            df = datasets.gen_oracle_df(
                factual_only=False,
                random_state=145
            ).loc(:, ('Treatment', 'Target_untreated', 'Target_treated'))
            df

          import pandas as pd
2 import hypex
3 from hypex.utils import datasets
4
5
6 df = datasets.gen_oracle_df(
7 factual_only=False,
8 random_state=145
9 ).loc(:, ('Treatment', 'Target_untreated', 'Target_treated'))
10 df

df

Tratamiento

Objetivo_sin tratar

Objetivo_tratado

0

0

600

650

1

0

500

550

2

1

500

550

3

0

600

650

4

1

500

650

5

1

700

850

6

1

300

450

7

0

600

750

            Y_0 = df('Target_untreated')
            Y_1 = df('Target_treated')

            Y_factual = Y_0 * (1 - df('Treatment')) + Y_1 * df('Treatment')
            Y_counterfactual = Y_0 * df('Treatment') + Y_1 * (1 - df('Treatment'))

            TE = Y_1 - Y_0

            TE(df('Treatment') == 0).mean(), TE(df('Treatment') == 1).mean(), TE.mean()

Como podemos ver aquí,

ATE_{\mathcal{A}}=75, ATE_{\mathcal{B}}=125, ATE_{\mathcal{A}\cup \mathcal{B}}=100

Tuvimos suerte: al tener acceso a valores contrafácticos, determinamos con facilidad y precisión COMIÓ. Sin embargo, en realidad no podemos medir cantidades de universos paralelos. Por lo tanto, se desarrollaron métodos de aproximación. COMIÓ basado en los datos disponibles. Consideremos el más ingenuo de estos métodos.

Diferencia de medias simple

Veamos un ejemplo clásico que ilustra que a veces conclusiones obvias resultan erróneas. Tomemos dos hospitales: uno llevaba muchos años funcionando cuando se construyó el segundo. El nuevo hospital estaba equipado con tecnologías avanzadas y atrajo a los mejores especialistas. Sin embargo, con el tiempo resultó que la tasa de mortalidad promedio en el segundo hospital superó significativamente a la del primero.

            df = datasets.gen_special_medicine_df(
                data_size=1000,
                dependent_division=True,
                random_state=None,
            )

            df.head(8)

Datos de muestra de pandas

grado_de_enfermedad

tratamiento_experimental

vida_residual

3

1

10.25

1

1

0,80

2

1

20.32

3

1

4,89

1

1

5.92

1

0

4.78

1

0

11.42

2

1

2.06

            (
                df.loc(df('experimental_treatment')==1, 'residual_lifetime').mean() -
                df.loc(df('experimental_treatment')==0, 'residual_lifetime').mean()
            )

Salida: -1,67

Recibimos un resultado completamente contrario a la intuición, incluso en un signo opuesto a las expectativas naturales. La razón fue que el nuevo centro médico atraía principalmente a pacientes con formas más graves de la enfermedad. Este sesgo estadístico en la distribución de los pacientes distorsionó el panorama general. Debido a esto, fue imposible sacar conclusiones basadas en comparaciones directas de las tasas de mortalidad en los centros médicos. Intentemos eliminar estas diferencias en las distribuciones haciendo que los datos sean homogéneos en cuanto a la gravedad de la enfermedad y repitamos nuestro experimento.

            df = datasets.gen_special_medicine_df(
                data_size=1000,
                dependent_division=False,
                random_state=None,
            )

            df.head(8)

Datos de muestra de pandas

grado_de_enfermedad

tratamiento_experimental

vida_residual

3

1

10.25

1

1

0,80

2

1

20.32

3

0

4.14

1

1

5.92

1

0

4.78

1

0

11.42

2

1

2.06

            (
                df.loc(df('experimental_treatment')==1, 'residual_lifetime').mean() -
                df.loc(df('experimental_treatment')==0, 'residual_lifetime').mean()
            )

Salida: 1,95

Vemos que el valor COMIÓ se volvió más creíble. Intentemos resolverlo.

Escribamos para un conjunto arbitrario \mathcal{M} valor obtenido utilizando el método de diferencias simples (SimpleDiff_\mathcal{M}). Por brevedad, denotamos por \mathcal{M}_{(0)} y \mathcal{M}_{(1)} subconjuntos de conjuntos \mathcal{M}determinado por los valores t.

SimpleDiff_\mathcal{M} =\frac{1}{|\mathcal{M}_{(1)}|} \sum_{i \in \mathcal{M}_{(1)}} Y^i_{\ text{factual}} - \frac{1}{|\mathcal{M}_{(0)}|} \sum_{i \in \mathcal{M}_{(0)}} Y^i_{\text {fáctico}} = = \frac{1}{|\mathcal{M}_{(1)}|} \sum_{i \in \mathcal{M}_{(1)}} Y^i_{(1)} - \frac {1}{|\mathcal{M}_{(0)}|} \sum_{i \in \mathcal{M}_{(0)}} Y^i_{(0)} = = \frac{1}{|\mathcal{M}_{(1)}|} \sum_{i \in \mathcal{M}_{(1)}} \big( Y^i_{(1)} - Y^i_{(0)} \big) + \left( \frac{1}{|\mathcal{M}_{(1)}|} \sum_{i \in \mathcal{M}_{( 1)}} Y^i_{(0)} -\frac{1}{|\mathcal{M}_{(0)}|} \sum_{i \in \mathcal{M}_{(0)} } Y^i_{(0)} \derecha) == ATE_{\mathcal{M}_{(1)}} + BIAS_0(\mathcal{M})

Dónde:

BIAS_0(\mathcal{M}) = \frac{1}{|\mathcal{M}_{(1)}|} \sum_{i \in \mathcal{M}_{(1)}} Y^i_ {(0)} - \frac{1}{|\mathcal{M}_{(0)}|} \sum_{i \in \mathcal{M}_{(0)}} Y^i_{(0) )}

— compensado por el resultado T=0.

Por eso,

ATE_{\mathcal{M}_{(1)}} = SimpleDiff_\mathcal{M} - BIAS_0(\mathcal{M})

donde se denota la expresión como BIAS_0(\mathcal{M}) se puede interpretar intuitivamente de la siguiente manera. Si todos los objetos estudiados estuvieran en el universo sin influencia sobre ellos, entonces este valor describiría la diferencia promedio Y. En otras palabras, este es un indicador de las diferencias grupales. \mathcal{M}_{(0)} y \mathcal{M}_{(1)}que no depende del tratamiento.

Definido de manera similar

BIAS_1(\mathcal{M}) = \frac{1}{|\mathcal{M}_{(1)}|} \displaystyle\sum_{i\in\mathcal{M}_{(1)}} Y ^i_{(1)} - \frac{1}{|\mathcal{M}_{(0)}|} \displaystyle\sum_{i\in\mathcal{M}_{(0)}}Y^ yo_ {(1)}

y se muestra

ATE_{\mathcal{M}_{(1)}} = SimpleDiff_\mathcal{M} - BIAS_1(\mathcal{M})

Además, de la definición COMIÓ y, en general, para cualquier par de conjuntos disjuntos (\mathcal{M} = \mathcal{M}_{(0)} \amalg \mathcal{M}_{(1)}) es fácil ver que la identidad se mantiene

ATE_\mathcal{M} = \frac{|\mathcal{M}_{(1)}|}{|\mathcal{M}|} ATE_{\mathcal{M}_{(1)} }+ \frac {|\mathcal{M}_{(0)}|}{|\mathcal{M}|} ATE_{\mathcal{M}_{(0)}}

Combinando esta expresión y la anterior obtenemos

ATE_\mathcal{M} = SimpleDiff_\mathcal{M} + \frac{|\mathcal{M}_{(1)}|}{|\mathcal{M}|} BIAS_0(\mathcal{M}) + \ frac{|\mathcal{M}_{(0)}|}{|\mathcal{M}|} BIAS_1(\mathcal{M}) = BIAS(\mathcal{M})

Digámoslo en palabras simples: INCLINACIÓN – nuestro principal enemigo. La mayoría de los métodos que se describirán en nuestro curso se basan en esta teoría. Cuando los grupos separados son suficientemente similares entre sí, entonces SESGO(\mathcal{M}) cerca de cero. En este caso, el método diferencia simple devolverá un resultado que se aproxima bastante bien ATE_\mathcal{M}.

En el próximo artículo veremos más de cerca la clase de métodos que utilizan este enfoque.

Iván Vyacheslavovich Yurashku

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *