InterventionCausalExplainer: Математическое обоснование¶
Обзор¶
InterventionCausalExplainer
реализует
подход на основе каузального вывода для интерпретации моделей,
устанавливая важность признаков через прямое вмешательство, а не традиционные методы на основе корреляции.
Этот модуль объединяет интерпретируемость машинного обучения с техниками каузального вывода, чтобы
определить, как признаки каузально влияют на уверенность и неопределенность модели.
Математическая основа¶
Каузальный лес для оценки эффекта воздействия¶
Основная математическая концепция использует фреймворк Double Machine Learning (DML) с каузальными лесами. Для каждого признака \(X_j\) мы оцениваем его каузальный эффект на уверенность модели:
где \(C\) представляет уверенность модели, а \(do(X_j = x)\) — это do-оператор Пирла, указывающий на вмешательство. Подход DML использует ортогонализацию для устранения смешивающих эффектов:
Квантификация алеаторной неопределенности¶
Модуль использует Data-IQ для вычисления уверенности модели и алеаторной неопределенности. Алеаторная неопределенность представляет собой собственный шум в данных и оценивается как:
где \(Y\) — целевая переменная, а \(X\) — признаки.
Анализ вмешательств¶
Модуль выполняет прямые вмешательства путем выборки новых значений для признаков с высоким влиянием из их исходного диапазона распределения:
Это создает контрфактический набор данных для измерения изменений уверенности и неопределенности модели до и после, обеспечивая более надежное понимание важности признаков, чем традиционные методы.
Применения¶
Этот подход особенно ценен в системах принятия решений с высокими ставками, где понимание каузальных связей между признаками и поведением модели является критически важным. Выявляя, какие признаки каузально влияют на уверенность модели, он позволяет разрабатывать более целенаправленные стратегии сбора данных и улучшения модели.
Пример¶
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)