Pull to refresh

Comments 13

> Использовать видеокарту для ускорения обучения. Официальная версия LightGBM не поддерживает, однако существуют форки.

Вроде как XGboost должен поддерживать вычисления на видеокартах. По крайней мере, в питоне
Большое спасибо за статью.
Особенно понравилась идея с ансамблем (получение «доверительных вероятностей»), успехов Вам в будущих соревнованиях!
Так эта идея только ухудшила финальный результат.

Не совсем так.
Она ухудшила предварительный результат, поэтому я решил не рисковать, и выбрал обычное среднее.
А зря, т.к. финальный результат это бы улучшило.


Вот табличка logloss по различным аггрегирующим функциям:


                        Финальные    Предварительные
среднее арифметическое  0,3816315    0,3807091
среднее геометрическое  0,3816479    0,3807161
LightGBM                0,3814542    0,3808298
SVM                     0,3814352    0,3807783

я выбирал что из этого выбрать в последний момент

по структуре поста следует, что все, что ниже фразы:
«На самом деле сейчас можно было остановиться. Это дало бы финальное первое место с небольшим запасом. Но задним числом все умны.»
ухудшило финальный результат

Всё что ниже этой фразы действительно дало хуже результат. Далее ухудшение дала замена модели нейросети, а не трюк с "доверительными вероятностями". С ним было бы лучше, чем без.

Спасибо за описание! Можете рассказать, как нормализовывали данные для нейросети?
Не экспериментировал со способами нормализации.
Использовал классическое «минус среднее, поделить на среднеквадратичное отклонение»
А вообще да, стоило попробовать что-то ещё, как минимум поделить на (max — min)
Есть предположения, почему нейронная сеть взлетела? Я правильно по коду понял, что там активационная функция только на выходном нейроне применяется, а между скрытым слоем и входным только линейные преобразования?
Есть предположения, почему нейронная сеть взлетела?

Нету. Пока что для меня это магия :)


Функция активации для выходного слоя — сигмоид (есть возможность заменить на identity).
И на сколько я понял из этого исходника, для скрытого слоя всегда сигмоид.

Теоретически, потратив несколько посылок, можно было вычислить более точные вероятности для повторяющихся векторов с разными ответами (другими словами – вытянуть ещё немного данных со скрытой тестовой подвыборки).


А можно пожалуйста по-подробнее что это значит, и как предполагалось вытягивать эти данные?

Возьмём, к примеру, вектор x, который встречается 1423 раз в обучающей выборке. Для него вероятность считается как f(x) = (количество единиц) / 1423. Хотелось получить более точное значение.


Тестовая выборка поделена в соотношении 40/60, и предварительные результаты показывались только на 40%. Как именно она поделена — неизвестно. Но по результатам посылок на сервер можно попытаться вычислить сколько всего есть искомых векторов x в этих 40%, и у скольких из них ответ 1.


Сначала я попытался определить точный размер этих 40%. Сделал 2 посылки "все 0" и "все 1". И по полученным ошибкам попытался вычислить. Но из-за недостаточной точности подходило несколько вариантов. Видимо интерполировать нужно было более чем по двум точкам. Профит от этого дела крайне сомнителен, и я решил потратить время на что-то другое.

Sign up to leave a comment.

Articles

Change theme settings