Skip to content

findatalab/model-interpretation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

model-interpretation

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

Разработка модуля предобработки данных с оценкой влияния на интерпретируемость моделей

Целевая переменная: Факт совершения повторной покупки (Target = 1) в течение 3-х месяцев после даты среза .

Датасет Online Retail: https://www.kaggle.com/datasets/mashlyn/online-retail-ii-uci

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

Цели и задачи проекта

Цель работы: Исследование влияния глубины предобработки данных и методов генерации признаков на качество прогноза и прозрачность (интерпретируемость) моделей машинного обучения.

Задачи: Реализация трех уровней пайплайнов очистки данных (от минимальной до глубокой). Автоматизация расчета поведенческих признаков на основе RFM-анализа и временных паттернов. Оценка качества моделей (Logistic Regression, Decision Tree, XGBoost) на различных наборах данных. Применение методов локальной (LIME) и глобальной (SHAP, Feature Importance) интерпретации для анализа "черных ящиков". Выявление закономерностей между качеством очистки данных и стабильностью объяснений модели.

Результаты эксперимента

В ходе эксперимента было протестировано 9 комбинаций (3 пайплайна × 3 модели). Итоговая таблица метрик Pipeline Model Features ROC-AUC F1-Score Precision Recall Is Best

Advanced Logistic Regression 19 0.8232 0.6621 0.6211 0.7088 ✅

Advanced Decision Tree 19 0.8192 0.6573 0.7023 0.6176 ✅

Advanced XGBoost 19 0.8184 0.6555 0.7597 0.5765 ✅

Standard Logistic Regression 9 0.8124 0.6492 0.5791 0.7386

Baseline Logistic Regression 3 0.8070 0.6683 0.6120 0.7361

Standard XGBoost 9 0.8131 0.6168 0.6828 0.5625

Baseline Decision Tree 3 0.7957 0.6481 0.5953 0.7111

Основные выводы:

Влияние предобработки: Пайплайн Advanced (с очисткой выбросов через IQR и расширенным набором признаков) показал лучшие результаты по метрике ROC-AUC для всех типов моделей.

Лидер по качеству: Логистическая регрессия на продвинутом пайплайне достигла максимума ROC-AUC = 0.8232, что доказывает важность качества признаков для линейных моделей.

Интерпретируемость: Увеличение количества признаков с 3 до 19 позволило выделить наиболее значимые факторы (например, частота покупок и время с последнего заказа), которые в методах SHAP и LIME показывают высокую стабильность.

Структура проекта

retail_preprocessing_module/
├── config.py            # Константы: даты, пути, гиперпараметры
├── data_loader.py       # Загрузка данных + EDA-отчёт
├── preprocessing.py     # 3 пайплайна очистки (baseline / standard / advanced)
├── features.py          # Инженерия признаков: RFM + поведенческие + временны́е
├── models.py            # Обучение: LogReg / DT / XGBoost + метрики
├── interpretability.py  # SHAP, LIME, Feature Importance
├── experiment.py        # Главный оркестратор — запускает все 9 экспериментов
├── report.py            # Итоговые графики
├── requirements.txt
└── data/               

Быстрый старт

# 1. Установить зависимости
pip install -r requirements.txt

# 2. Положить данные
mkdir data
cp ~/Downloads/online_retail_II.xlsx data/

# 3. Запустить полный эксперимент
python experiment.py

# 4. Сгенерировать итоговые графики
python report.py

Все результаты появятся в папке outputs/.


Что делают три пайплайна

Пайплайн Шаги очистки Признаков
baseline Только удаление NaN в Customer ID 3 (RFM)
standard + отмены, отриц. qty/price, служебные коды ~12
advanced + выбросы по IQR (Price, Quantity) ~20

Эксперимент: 9 комбинаций

3 пайплайна × 3 модели = 9 экспериментов

Модели: LogisticRegression | DecisionTree | XGBoost

Для каждой комбинации вычисляются:

  • Метрики: ROC-AUC, F1, Precision, Recall, CV-AUC
  • Feature Importance: abs(coef) / gain
  • SHAP: TreeExplainer / LinearExplainer + summary plot
  • LIME: объяснение для одного клиента

Ключевые выходные файлы

Файл Описание
outputs/metrics_summary.csv Все метрики всех 9 экспериментов
outputs/cleaning_steps.csv Сколько строк/клиентов удалил каждый шаг
outputs/interpretability_summary.csv Топ-признаки по пайплайнам
outputs/plots/metrics_comparison.png AUC/F1 по пайплайнам
outputs/plots/cleaning_impact.png Влияние очистки на данные
outputs/plots/fi_compare_*.png Тепловые карты FI по пайплайнам
outputs/plots/shap/shap_compare_*.png Тепловые карты SHAP
outputs/plots/lime/lime_*.png LIME объяснения

Даты эксперимента

Данные:        2009-12-01 — 2011-12-09
Дата среза:    2011-07-01  (train / target split)
Target-окно:   2011-07-01 — 2011-10-01 (3 месяца)
Target = 1:    клиент совершил хотя бы одну покупку в target-окне

Настройка

Все параметры — в config.py:

  • CUTOFF_DATE, TARGET_END_DATE — временны́е окна
  • MODEL_PARAMS — гиперпараметры моделей
  • RANDOM_STATE — воспроизводимость

Запуск только части экспериментов:

from experiment import run_experiment

# Только baseline + XGBoost, без LIME
run_experiment(
    pipelines = ["baseline", "standard"],
    models    = ["xgboost"],
    run_lime  = False,
)

master

About

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

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors