Pull to refresh

Comments 15

С какой целью русские имена в статье на русском языке написаны транслитом на латинице?

Копипаста из профиля в слаке. Вы правы, некрасиво смотрится, исправлю. Спасибо за замечание.
А в чем практичность фолдов, кроме валидации? На i-той эпохе получается k-моделей и усреднённый валидационный скор. Какую модель использовать или можно их слить/смерджить в одну?

Берут предсказания со всех моделей и их усредняют. Или подают на вход стеку на следующий уровень.

Про k-fold кросс-валидацию:

В целом — она позволяет оценить точность модели на новых данных, используя всю тренировочную выборку.
Для трейна — позволяет получить OOF предсказание, которое можно дальше использовать при построении ансамбля.
Для теста — позволяет получить более устойчивое предсказание усреднением предсказаний k моделей.

Стоит отметить, что для получения предсказаний для теста есть несколько подходов, один описан выше, второй — когда кросс-валидацией мы только подбираем гиперпараметры модели, а потом обучаем отдельную модель с подобранными параметрами на всем трейне — и делаем один предикт для теста.

Как первый, так и второй подход могут привести к переобучению (почитайте статью Данилы Савенкова), поэтому стоит сначала проверить качество на отложенной выборке.

Если вкратце, то как-то так.
Спасибо за статью. Два вопроса:
  1. Соревнования kaggle соотносятся с применением машинного обучения в практических задачах так же, как олимпиады по программированию с разработкой ПО?
  2. Задачи на kaggle имеют какую-либо практическую пользу сами по себе? Как их вообще составляют? К примеру, есть такое, что задача — поставить диагноз по каким-то данным, а потом победившая модель успешно диагностирует рак на ранней стадии у пациентов по всему миру?
1. Не совсем так, но в целом — да. Отличие в том, что каждое соревнование на kaggle в своей основе содержит какую-то реальную бизнес-задачу (тут перекличка с Вашим вторым вопросом) и, решая соревнование, помимо прокачки базовых скиллов, вы еще получаете представление как и какими подходами решаются бизнес-задачи такого класса. Олимпиады же, насколько я помню, содержат безусловно красивые, но оторванные от жизни задачи. Поправьте, если ошибаюсь.

2. Хороший вопрос. Этим вопросом задаются практически на каждом втором соревновании, особенно если выбранная организаторами метрика, скажем так, не совсем релевантна бизнес цели. На мой взгляд, организаторы, создавая соревнование, берут какую-то свою реальную задачу и ставят перед собой следующие цели:

* получить свежий взгляд от коммьюнити на методы и подходы к решению действительно важной для них задачи.
* PR компании
* хантинг

К сожалению, у меня нет данных насколько топ решения потом внедряются в продакшен, может коллеги в комментариях подскажут.
На kaggle всё таки более 'приземленные' задачи. Сложно сказать, насколько результаты в лоб применимы в продакшне, но польза явно может быть.
Спасибо!
А как оценить «грамотность» валидации, если паблик лидерборд может врать?
Пример: сейчас проходит соревнование от гугла, где любое отступление от бейзлана ухудшает скор на лидерборде, но улучшает на локальной кросс валидации?
Паблик не врет, когда дело касается времени, то есть тренировочная и тестовая части разделены на временной шкале, паблик обычно ближе к прайвату, нежели к валидации. Во временных сериях обычно отрезают последние несколько месяцев и валидируются на этой отложенной выборке, тестируют новые фичи, подходы и прочее. Публичные кернелы обычно переобучены на паблик хотя бы потому, что автор, если видит, что паблик не очень хорош, его просто не выкладывает и мы видим только прошедшие пабликом отбор кернелы. Но это не всегда плохо.

Соревнование перезапустили, теперь мы предсказываем (будем предсказывать с 9 ноября) будущее www.kaggle.com/c/ga-customer-revenue-prediction/discussion/68353 и скорее всего на обновленном лидерборде такой проблемы с валидацией не будет. Валидация на тех же месяцах, что и в тестовом периоде должна работать хорошо.
Оценить грамотность (и применимость) валидации как раз самое сложное. Базовый подход — валидация считается нормальной, если скор на валидации и на паблике синхронизирован, то есть улучшается CV -> улучшается LB, и наоборот. Если, как в случае с GA соревнованием, CV растет, а LB падает, то вступает в действие правило «Trust your CV!».

Не принимался еще за GA, но, в целом, такое может происходить, например, если трейн и тест получены из разных распределений (условно). То есть того сигнала, который выучила модель на трейне — в тесте просто нет. Как бороться — простейший вариант попробовать другие схемы валидации, по времени, по различным группам, и т.д. Более сложный — это т.н. adversarial validation, когда мы сначала строим модель, чтобы отличить трейн от теста, а потом используем в качестве валидационного сета тот кусок трейна, который наиболее похож на тест.

Конкретно по GA, навскидку нашел вот такие обсуждения на форуме как раз про валидацию:

www.kaggle.com/c/ga-customer-revenue-prediction/discussion/66270
www.kaggle.com/c/ga-customer-revenue-prediction/discussion/66811
www.kaggle.com/c/ga-customer-revenue-prediction/discussion/67645
А можно немного комментариев по поводу
… соревновании Camera Identification, в котором, кстати, наши команды с тегом [ods.ai] взорвали весь лидерборд до такой степени, что админам Kaggle пришлось зайти к нам в слак в гости, убедиться, что все в рамках правил — и успокоить коммьюнити.
Что именно за правила, которые ограничивают комьюнити, что там проверяли, когда ходили «в гости», что можно, а что нельзя — новичкам полезно было бы знать. А то расшарит кто-то что-то и окажется нарушителем правил.
В каждом соревновании на главной странице есть вкладка «Rules», в которой описаны правила данного соревнования. Очень рекомендую внимательно прочитать прежде чем начинать что-то делать. Там указываются ограничения на количество сабмитов в день, размер команд, и прочее. Но два основных правила (за которые в основном и банят) кочуют из соревнования в соревнование:

  • One account per participant (You cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.)
  • No private sharing outside teams (Privately sharing code or data outside of teams is not permitted. It's okay to share code if made available to all participants on the forums.)

"Личное мнение автора (может и не совпадать с мнением читателя) Bayesian optimization > random search > hyperopt для подбора гиперпараметров."


А в позиции автора ">" подразумевает "лучше" (т.е. bo лучше random search, который в свою очередь лучше hyperopt), или последовательность применения (сужаем область поиска и запускаем новый поиск другим методом)?

Да, Вы правы, неоднозначно смотрится, исправлю. В данном случае подразумевается «лучше». Еще раз повторюсь — это личное мнение, сформировавшееся из личного опыта.
Sign up to leave a comment.