Кто как решал задачу "предсказание CC3"?

16.07.2017, 15:56:33
Иван Филонов
Обошелся грубой силой - взял несколько подходов к чистке данных, добавил штук 10 ручных признаков, kmeans/усреднения, десятка 2 колонок, сделанных из текстового представления исходных данных (просто побил на символы). Разные комбинации этого добра пошли на вход в нейронки (3 слоя размерами сотни-десятки-десяток, остальное менялось от модели к модели), lgb, xgb, et, rf. Итого получилось 70 моделей первого уровня. Разные подмножества из этих 70 состакал через ridge (все вместе или после жадного отбора) и выбрал 1 с лучшим пабликом и 1 с лучшим cv из тех где паблик лучше 0.543.

Все кроме нейронок тюнилось гипероптом, выбор чем стакать - тоже гиперопт. Особенно приятно было на полпути изнать о bootstrapping-е в нем.
Вот у меня с нейронками вообще не срослось. Очевидно, не умею их пока готовить. Буду очень признателен за работающие примеры.
Отредактировано 16.07.2017, 15:56:58
16.07.2017, 16:21:42
Когда Илья разрешит - думаю все на гитхаб закинуть, но в плане нейронок будет смотреть особо не на что - как и rf и et по отдельности на этих данных они только расстроили. Хотя в ансамблях пригодились.
16.07.2017, 16:45:07
Ты забыл добавить главно - хорошо валидироваться на привате.
16.07.2017, 16:52:25
Bell
Возможно, я что-то недоглядел, потому что у меня улучшения с деревьями не было. Может быть дело в том, что я использовал всего 2 дополнительные фичи. А какой был оптимизатор и батч? Я пробовал SGD с разными параметрами и Adam, а батч от 32 до 1024 и остановился на 256.

Кодировать средним можно через любые фичи. Категориальные переменные с большим числом категорий были: комбинация (ap_hi, age (в годах)), например и т.п. Разумеется, нужно правильно валидироваться, чтобы 100% доверять локальному результату.

По поводу нейронки: оптимизатор - Адам, размер батча - 512.

Интересно узнать, какие скоры были у участников на локальной валидации, и как участники боролись с false positive предсказаниями на трейне (у меня не получилось ничего сделать с этим).
16.07.2017, 16:52:31
Иван Филонов
Когда Илья разрешит - думаю все на гитхаб закинуть, но в плане нейронок будет смотреть особо не на что - как и rf и et по отдельности на этих данных они только расстроили. Хотя в ансамблях пригодились.
Это уже можно делать, начиная с того момента, как открыли приватный скор :)
16.07.2017, 17:25:34
Никита Чуркин
Кодировать средним можно через любые фичи. Категориальные переменные с большим числом категорий были: комбинация (ap_hi, age (в годах)), например и т.п.
Эти категории по-прежнему несут числовой смысл. Кодировать их можно, просто особо незачем. В оригинале такое кодирование применяется для категорий не имеющих числового смысла. Например, у вас 1000 уникальных идентификаторов, вы им присваиваете номера, но сравнивать эти номера на "больше-меньше" заведомо не имеет смысла. Для небольшой кардинальности можно делать one-hot-encoding, но для сотен это даст огромную размерность. Выход - кодирование вероятностью (или средним, где наблюдений мало).
Отредактировано 16.07.2017, 17:28:16
16.07.2017, 17:33:04
раз можно, то https://github.com/ivan-filonov/mlbootcamp_5
17.07.2017, 06:04:00
Иван Филонов
раз можно, то https://github.com/ivan-filonov/mlbootcamp_5
спасибо. помогло найти свой косяк.
17.07.2017, 10:35:11
Bell
Для небольшой кардинальности можно делать one-hot-encoding, но для сотен это даст огромную размерность. Выход - кодирование вероятностью (или средним, где наблюдений мало).

Ну кстати, хотя "огромная" размерность (в кавычках, потому что несколько сотен - это не огромная) не очень для деревянных методов включая бустинг, зато может хорошо зайти для линейных. У них как раз появляется необходимая гибкость, которой сложно достичь на 11 фичах.
17.07.2017, 11:47:59
Но one-hot-encoding не добавляет полезной информации, только сильно разреженные бинарные фичи, 1 бит включенный в одной позиции из N. Необходимый технический прием, т.к. обычно все-таки стремятся понизить размерность, а не наоборот. Впрочем, в scikit есть RandomTreesEmbedding для sparse coding, как раз для линейных методов, как предложили вы,


Зарегистрируйтесь или войдите, чтобы оставить сообщение.