Любишь фичи генерировать, люби и отсеивать
На прошлых выходных фармил чемпионат по предсказанию игровой активности студентов.
Решил решать с нуля и генерировать признаки сам. Сильно скоррелированная локальная валидация с лб позволила почти не смотреть на лб и проверять гипотезы локально. Все шло хорошо, пока число фичей не достигло ~2к. А как известно, много фичей не очень хорошо, влияет на стабильность и скорость.
Поставил считаться эксперимент с рекурсивным удалением фичей на несколько дней. RFE это ресурсоемкая процедура, поэтому я решил удалять фичи из нескольких группы одновременно.
Группа 1 - признаки с очень низкой важностью для модели.
Группа 2 - признаки с большим числом пропусков
Группа 3 - подозрительные на мой субъективный взгляд признаки и агрегаты
Группа 4 - слабо вариативные
Группа 5 - просто брут-форс.
Фильтрация шла по всем группам, синхронизируя результаты через единый файл, чтоб алгоритмы не повторяли эксперименты и всегда знали текущий лучший скор валидации. Модель и валидация фиксированные.
Несколько полезных выводов, к которым пришел.
🤔 Фильтрация поднимает скор.
🤔 Брут-форс находил вредную фичу 1 раз на 20 экспериментов. (~1/20)
🤔 Среди маловажных реально много не влияющих. (~1/5)
🤔 Фичи с пропусками тоже чаще отлетают (~1/10), но удаление некоторых сильно просаживает скор.
🤔 Подозрительные фичи хорошо отсеиваются. Все что было не нормировано на длину сессии часто вредило (~1/8).
🤔 Слабо вариативные чуть лучше бруд-форса, но не сильно (~1/15)
🤔 Полезно увидеть закономерность и добавлять эвристику для повышения приоритета в удаление фичей. Так фичи будут отлетать сразу пачками.
🧠 Вредные признаки бывают не очевидны.
🧠 Вредные признак помогают найти полезные.
🧠 Самописная фильтрация удобнее и быстрее. Сможете задавать порядок обхода, хеширование, логирование и синхронизацию .
🤖 Эксперимент кустарный, воспроизвести его не возьмусь. Считалось это 4 дня на 20 ядрах. Все как всегда зависит от данных, но зато выводы согласовываются с моим ранним представлением!
Post #391
5.76K

- 👍 43
- 👎 7
- 🔥 4
- ❤ 1