Skip to content

InterventionCausalExplainer: Математическое обоснование

Обзор

InterventionCausalExplainer реализует подход на основе каузального вывода для интерпретации моделей, устанавливая важность признаков через прямое вмешательство, а не традиционные методы на основе корреляции. Этот модуль объединяет интерпретируемость машинного обучения с техниками каузального вывода, чтобы определить, как признаки каузально влияют на уверенность и неопределенность модели.

Математическая основа

Каузальный лес для оценки эффекта воздействия

Основная математическая концепция использует фреймворк Double Machine Learning (DML) с каузальными лесами. Для каждого признака \(X_j\) мы оцениваем его каузальный эффект на уверенность модели:

\[\tau(X_j) = \mathbb{E}[C | do(X_j = x)] - \mathbb{E}[C]\]

где \(C\) представляет уверенность модели, а \(do(X_j = x)\) — это do-оператор Пирла, указывающий на вмешательство. Подход DML использует ортогонализацию для устранения смешивающих эффектов:

\[\tau(X_j) = \mathbb{E}[C - \mathbb{E}[C|X_{-j}] | X_j = x] - \mathbb{E}[X_j - \mathbb{E}[X_j|X_{-j}]]\]

Квантификация алеаторной неопределенности

Модуль использует Data-IQ для вычисления уверенности модели и алеаторной неопределенности. Алеаторная неопределенность представляет собой собственный шум в данных и оценивается как:

\[U_A = \mathbb{E}[\text{Var}(Y|X)]\]

где \(Y\) — целевая переменная, а \(X\) — признаки.

Анализ вмешательств

Модуль выполняет прямые вмешательства путем выборки новых значений для признаков с высоким влиянием из их исходного диапазона распределения:

\[X_j^{new} \sim \text{Uniform}(\min(X_j), \max(X_j))\]

Это создает контрфактический набор данных для измерения изменений уверенности и неопределенности модели до и после, обеспечивая более надежное понимание важности признаков, чем традиционные методы.

Применения

Этот подход особенно ценен в системах принятия решений с высокими ставками, где понимание каузальных связей между признаками и поведением модели является критически важным. Выявляя, какие признаки каузально влияют на уверенность модели, он позволяет разрабатывать более целенаправленные стратегии сбора данных и улучшения модели.

Пример

examples/explainable/intervention_explainer.py
import logging

import pandas as pd
from sklearn.ensemble import (
    RandomForestClassifier,
)

from applybn.explainable.causal_analysis import InterventionCausalExplainer


# Example data loading function (replace with actual data)
def load_data():
    from sklearn.datasets import load_breast_cancer
    from sklearn.model_selection import train_test_split

    data = load_breast_cancer()
    X = pd.DataFrame(data.data, columns=data.feature_names)
    y = pd.Series(data.target)
    return train_test_split(X, y, test_size=0.2, random_state=42)


# Load data
X_train, X_test, y_train, y_test = load_data()

# Initialize and run ModelInterpreter
interpreter = InterventionCausalExplainer()
interpreter.interpret(RandomForestClassifier(), X_train, y_train, X_test, y_test)