Transfer Learning (перенос обучения) - одна из ключещих тем современного машинного обучения. Она успешно применяется в компьютерном слухе, зрении и NLP, позволяя переносить знания с больших датасетов на малые. Однако в табличных данных такая практика остаётся малоизученной.
Исследовать возможность переноса знаний между двумя табличными датасетами на примере Adult Census (источник) и Bank Marketing (целевой).
- Обучить MLP на большом датасете Adult.
- Провести Transfer Learning на Bank Marketing.
- Сравнить результаты с обучением с нуля и классическими методами.
- Целевая переменная: доход больше $50K (бинарная)
- Кол-во записей: 32 561
- Признаки: 14 (возраст, образование, профессия, семейное положение, финансовые и др.)
- Целевая переменная: оформление депозита (бинарная)
- Кол-во записей: 4 521 (урезанная версия)
- Признаки: 16 (возраст, профессия, баланс, кампания и др.)
| Признак в Adult | Признак в Bank |
|---|---|
| Age | age |
| Education_Num | education |
| Capital Gain - Capital Loss | balance |
| Martial_Status | marital |
| Occupation | job |
Transfer Learning между Adult Census и Bank Marketing не даст значимого улучшения качества по сравнению с обучением с нуля. Результат по целевой метрике AP будет выше не более чем на 0.01.
Обоснование:
- Разные таргеты (доход | депозит)
- Разные релевантные признаки
- Сдвиг распределений В признаках
- MLP строит гиперплоскость под Adult; данные Bank расположены иначе
Ансамблевые методы на основе деревьев (CatBoost, Random Forest) покажут более высокое качество по метрике AP (не менее чем на 0.02), чем MLP, на данных Bank Marketing, потому что деревья решений менее склонны к переобучению при правильной настройке гиперпараметров, тогда как MLP требует значительно больше данных для стабильного обучения и обобщения.
Обоснование:
- При малом размере выборки (~4500 записей) деревья решений эффективнее используют информацию из категориальных признаков.
- На табличных данных градиентный бустинг традиционно показывает результаты, сопоставимые с нейросетевыми подходами или превосходящие их.
Архитектура: [512, 256, 128], SELU, Dropout=0, BN=False.
Результат: AP = 0.7838.
| Подход | AP | F1 |
|---|---|---|
| Без сброса весов | 0.1724 | 0.0617 |
| Со сбросом весов | 0.1668 | 0.0652 |
| + Focal Loss | 0.1968 | 0.2701 |
Вывод: Transfer Learning не дал улучшения.
Результат: AP = 0.5155.
| Модель | AP | F1 | Время обучения(сек) |
|---|---|---|---|
| CatBoost с параметрами | 0.5671 | 0.4788 | 0.64 |
| CatBoost (пустой) | 0.5552 | 0.5523 | 0.64 |
| MLP | 0.5155 | 0.5455 | 47.29 |
| Random Forest | 0.3469 | 0.5443 | 0.29 |
| Logistic Regression | 0.3311 | 0.5211 | 0.04 |
-
Разные релевантные признаки.
Ключевые для Bank (campaign,pdays,previous,poutcome) отсутствуют в Adult. -
Сдвиг распределений.
Adult и Bank - разные популяции (население vs клиенты банка). -
Разная логика таргета.
Доход (объективный) vs депозит (поведенческий).
MLP дал AP = 0.5155, что всего на 9% ниже CatBoost, но учится в разы дольше. На малых данных классические алгоритмы остаются лучше.
Transfer Learning не даст значимого улучшения
AP = 0.20 против 0.5155 - гипотеза полностью подтвердилась.
Ансамблевые методы покажут более высокое качество, чем MLP
Разница в AP между CatBoost и MLP составила 0.0516, что превысило ожидаемые 0.02. MLP уступил CatBoost как по качеству, так и по времени обучения (в 30 раз медленнее). Однако MLP оказался достойным конкурентом, обойдя Random Forest по метрике AP.
-
Transfer Learning на табличных данных - не универсальное решение. Он требует совпадения релевантных признаков и распределений.
-
Классические алгоритмы остаются лучшими для малых табличных данных (AP = 0.5671, скорость 0.64 сек).
-
MLP - достойный конкурент (AP = 0.5155), но требует много времени (47 сек).
Для задачи предсказания депозита в Bank Marketing классические методы остаются предпочтительными. Transfer Learning в данной постановке неэффективен из-за несовместимости данных.
Все эксперименты реализованы в Jupyter Notebook и доступны в этой репозитории.
- Установить зависимости:
pip install -r requirements.txt - Запустить ноутбук:
jupyter notebook Research.ipynb - Выполнить ячейки последовательно.