Big data, билайн и кококо

Пару дней назад, случайно зайдя на Хабр без адблока, я увидел баннер: ”Билайн, будь мужиком — реши шайтан-задачу”. Челендж звучал интересно, определить возраст по набору таких параметров, как регион, тарифный план и т.д.

26dd139c1ce04f6b979fa36dbab4ba03.jpeg
Надо отметить, что я не имею никакого опыта в решении такого плана задач. Все представление, которое я имел, строилось из обзорных статей, бегло читаемых по диагонали, и по лабораторной работе в институте. В рамках той лабы на дельфи была запилена и обучена нейронная сеть, для определения букв алфавита из ч/б картинок размера 64х64.

bf7de5c1fff14272b78463b47dab689e.png

Мне давно нетерпелось погрузиться в бигдату, а тут и случай подвернулся. Начал я искать точку входа в эту технологию. Быстро наглулил статеек, туторов и всяческих примеров, которые пытались разжевать базовые вещи и продемонстрировать, какие-то инструменты для работы со всем этим делом. Пришлось погрузиться в питон.

7b18196494c845feac90ea545a0d64a3.png

Не сильно расстроившись, все ж питон не R. И с серьезными намерениями и молодецким задором выкачал триал JetBrains PyCharm. Поковыряв несколько примеров, примерно, понял, что к чему решаюсь, наконец взяться за билайн.

Предвкушая, как буду накладывать свою социальную картину мира на предоставленные данные, пытаясь понять кому и сколько лет начал скачивать задание. Скачав данные, почуствовал себя сильно обманутым. Вместо обещанных тарифов и прочих ништяков я увидел набор безсвязных колонок 1-61 и значений в таблице в виде хешей и каких-то сумасшедших чисел. Привет суровая киберпанкщина.

d2908ed9293d46d3bab4952527cea0ac.jpg

Разработав решение для такой постановки задачи становится совершенно не ясно, а что же реально оно будет делать? Рекомендовать кружевные трусики японским тян или выносить массово судебные приговоры в Китае. Отбросив рефлексию и остановившись на том, что это безобидный конкурс я начал ковырять данные. Первое, что я сделал рандомно раскидал 3 самые популярные группы и залил результат, который составил 27.03%, ок с этого и начнем.

Быстро оказалось, что задача выходит далеко за рамки любого тутора и решается не так уж просто. При этом pycharm фейлил и не давал обещанных интели автокомплитов из-за этого на каждом шаге приходилось лезть в доки питонвских либ, оформленных в стиле начала 00, что тоже не доставляло радости. Еще паршивее выглядели графики, которые рисовал pylab.

11719fe86c064bfa9448739f3d2166c7.png

Но последней каплей стало осознание того, сколько я трачу времени на кодинг, какой-то ерунды, хотя мне всего лишь нужен один график! И в этот момент боли и дискомфорта от всех этих инструментов, отказываясь верить, что все так плохо я, почему-то, вспомнил про вкладку machine learning у azure, хотя ни разу ее и не открывал.

19635fadd8b24d9585a4063a0e6f7371.jpg

Открываю ML и мне сразу тутор предлагают — соглашаюсь. Им оказывается не видос или тултипы с черными масками, а натурально в энвайронменте создают пример, заодно рассказывая и показывая, что зачем и как. Все предельно просто, есть куча модулей разбитых на типы: источники, трансформеры данных, алгоритмы, обучение, оценка и т.д. Пришлось, конечно почитать, что за модули имеются, для чего они и какие параметры за что отвечают, заодно в теории подразобрался. Но, как же тут все по-человечески сделано. После изучения доков потребовалось 5 минут, что б все состряпать и получить первый реальный результат.

858c5b00eeb64970b72d1a7726953fd4.PNG

Выбрав самый точный алгоритм решил воспользоваться модулем подбора параметров. Капитанский модуль после перебора всех вариантов отрапортовал, что чем больше — тем лучше. Не долго думая увеличил базовые параметры в 100 раз и оставил все это дело обучаться. Самое неудобное в этом процессе это отсутствие какого-либо прогресс бара или хоть каких-то эстимейтов и по факту остается только гадать, когда закончится процесс. Несколько раз были мысли остановить, но я дотерпел до окончания и заняло это 13 часов.

4c8b2281b09d4a60b8e218a544bee3cd.PNG

В результате я получил:

d6abcc50af3d499fad17c9f700f3838e.PNG

Это всего на 0.9% меньше, чем топ25, с учетом того, что в топ25 разброс в 0.6% и к низу он увеличивается, то в топ40, думаю я попал. Считаю это отличным результатом для человека, который еще вчера ничего в этой области не знал.

К слову о материальной стороне обошлось все это баловство в ML студии мне за 24.38 Hours в РУБ1,219.04.

© Habrahabr.ru