mmschlk/shapiq

Shapley Values and Shapley Interactions for Machine Learning

shapiq – 머신러닝을 위한 Shapley 상호작용 정량화

정의 – shapiq는 널리 사용되는 SHAP 생태계를 확장하여 Shapley 상호작용 값을 제공하는 Python 라이브러리입니다. 기존 SHAP은 각 특성에 단일 중요도 점수("주 효과")를 부여하지만, shapiq는 특성 그룹이 어떻게 시너지 또는 간섭하는지 정량화할 수 있습니다. 게임 이론 용어로는 고차 Shapley 상호작용 지수라고 합니다.

주요 기능

  • 임의 차수 상호작용 추정 – 쌍, 삼중, … 사용자 지정 차수까지(퀵스타트에서 기본값은 최대 4) 상호작용 점수를 계산합니다. 라이브러리에는 고차원 데이터용 희소 "ProxySPEX" 방법을 포함한 여러 근사기가 포함되어 있습니다.
  • 드롭인 SHAP 호환성 – 기존 Shapley 값 지수("SV")를 요청하면 shap 패키지와 정확히 동일한 출력 형식을 얻을 수 있어 마이그레이션이 간편합니다.
  • 내장 게임 및 벤치마크 스위트 – shapiq_games는 즉시 사용 가능한 "게임"(예: TabPFN, CatBoost, 이미지 기반 게임)을 제공하고, shapiq_benchmark는 이러한 작업에서 알고리즘을 비교할 수 있습니다.
  • 시각화 도구 – 주 효과와 상호작용 모두에 대한 포스 플롯 스타일 시각화와 특성을 노드로, 상호작용 강도를 엣지로 표시하는 네트워크 그래프를 제공합니다.
  • 모델 비의존적 – 입력을 예측에 매핑하는 모든 호출 가능 객체(scikit-learn 모델, PyTorch, CatBoost, TabPFN 등)에서 작동합니다.

일반적인 워크플로우

  1. 데이터를 로드하고 모델(예: RandomForestRegressor)을 훈련합니다.
  2. Explainer(예: TabularExplainer)를 인스턴스화하고 "k-SII"와 같은 상호작용 지수와 max_order를 선택합니다.
  3. explain(sample, budget=…)을 호출합니다 – budget은 근사기가 사용할 수 있는 모델 평가 횟수를 제어합니다.
  4. 반환된 InteractionValues 객체를 검사하거나 plot_* 메서드를 호출하여 포스 플롯 또는 네트워크 다이어그램을 표시합니다.

중요성 – 모델이 비선형 관계를 포착할 때(예: 위치와 크기가 각각 단독보다 함께 더 중요한 주택 가격 모델) 특성 상호작용을 이해하는 것이 중요합니다. shapiq는 상호작용 항을 수동으로 만들지 않고도 이러한 시너지를 표면화하는 원칙적이고 게임 이론적인 방법을 연구자에게 제공합니다.

설치 – pip install shapiq(또는 uv add shapiq). 선택적 추가 기능 shapiq[games] 및 shapiq[benchmark]는 torch, tabpfn, catboost 등 무거운 종속성을 포함합니다.

상태 및 커뮤니티 – 활발히 유지 관리됩니다(Python 3.12-3.15 지원, CI 배지, 테스트 커버리지). 기여를 환영하며, 저자는 관련 NeurIPS 2024 논문에 대한 인용을 제공합니다.


위의 모든 세부 사항은 리포지토리의 README에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트