Меня зовут Руслан. Я data scientist компании «Газпром нефть». Пытаюсь искать закономерности в данных и использовать их для бизнеса, чтобы он приносил больше прибыли. Текст под катом для начинающих сайнтистов, которые хотят подробнее узнать, как построена работа, и чем занимаются дата-сайентисты в крупных компаниях.
 
(Источник)

Чтение займет 7 минут
Для кого: начинающие data scientist 
Текст подготовил журналист Иван Сурвилло
 

Как я увлекся data science


Учился на экономическом факультете. У людей после него не так много направлений: инвестиции, бухучет и консалтинг. Консалтинг – самая популярная тема, потому что там хороший доход, и все студенты хотят туда. Для того, чтобы туда попасть, нужно решать бизнес-кейсы. Есть даже кейс-чемпионаты: ты собираешь команду, компания дает тебе бизнес-задачу, например, открыть новые точки ресторанов. Ты с командой разрабатываешь решение, потом его представляешь. То, что мне не нравилось, – ты очень много врешь. Твое решение, по сути, не подкреплено ничем.

Когда ты в теории получил прибыль от проекта в миллиард, то думаешь, что это много, и пишешь миллион. В итоге все сводится к тому: у кого более красивая презентация и у кого цифра адекватная. Плюс все равно потом наши решения дальше нигде не применяются.

Чем отличается дата-сайенс: ты говоришь, что с вероятностью 95% прибыль будет такой. У тебя совесть чиста, потому что ты закладываешь некоторую ошибку. Этим меня data science привлек. 

Чем мы занимаемся?


У компании есть данные: числа, статистика, выручка. Есть цели, которые нужно оптимизировать: прибыль, число клиентов, маржа. Предполагается, что есть взаимосвязь между данными и целями. Работа дата-сайентиста – найти эту взаимосвязь.

Например, сейчас задача: нужно по всей базе юрлиц в России найти предприятия, которые будут клиентами нашей компании. У меня есть характеристики фирм, вид деятельности, уставной капитал. Я оцениваю базу нынешних клиентов и ищу наиболее похожих, тех, кому потом будут звонить и предлагать услуги.

Забавно, что в названиях компаний, которые занимаются транспортными перевозками могут встречаться одни и те же подстроки: «Сиб Авто Логистика», «Транс Авто Сила», «Груз Сиб Логист». Я это заметил, взял самые часто встречающиеся подстроки, и если они встречаются у клиентов потенциальных, то, скорее всего, клиент занимается перевозками и логистикой. Для этого использовал популярный сейчас алгоритм Byte Pair Encoding, хотя он предназначен не совсем для этого.

В data science мне нравится. Не то что в консалтинге. Здесь все за одно дело, все хотят, чтобы сфера развивались. У нас есть митапы, на которых каждые три недели собираемся вместе и рассказываем друг другу, что было нового в области, чего крутого сделали. Это очень прокачивает: сам растешь, видя, что другие развиваются.

Про зарплаты


То, как ты покажешь себя на собеседовании, очень сильно влияет на зарплату.

Есть миф, что в data science большие зарплаты, но тут все индивидуально, потому что рынок еще плохо сформирован. Я недавно разговаривал с коллегой, он сказал, что один кандидат у него просит столько-то, а другой просит в три раза больше, а он не может понять адекватность этого диапазона. Вообще, data science – немножко Дикий Запад. То, как ты покажешь себя на собеседовании, очень сильно влияет на зарплату. В Москве средний специалист может 200 тыс. получать, к примеру.

Про бизнес


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

Недавно коллегу просили распознавать: у водителя бензовоза носок ботинка металлический или кожаный? Металлический их защищает, а обычный не очень. Как распознавать металлический набалдашник? Как это формализовать? Нейросеть же видит только цвет, она не видит, из какого материала он состоит. Нейросеть не волшебство. Мне завышенные ожидания бизнеса от data science не очень нравятся. Нужно бизнес обучать. Нужно до них доносить, что такое data science, что он может делать, что не может делать. Нужен более тесный контакт.
Нейросеть не волшебство.
 
«НЕЙРОСЕТЬ, ПО СУТИ, ЧЕРНАЯ КОРОБКА, КОТОРАЯ ВЫДАЕТ РЕЗУЛЬТАТ. А КАК ОН ПОЯВЛЯЕТСЯ, ТЫ НЕ ПОНИМАЕШЬ. А ДОЛЖЕН»

Сейчас у нас проект, мы каждые две недели проводим демо. В принципе основные заказчики уже достаточно хорошо приучены к DS понятиям и лексикону и задают правильные вопросы. Мне говорят, что нужно верифицировать качество данных, иначе у нас модель будет плохая. И это правда.

У нас уже есть ряд направлений, когда мы подход аналитиков сопоставляем с подходом дата-сайенс. Например, прогнозирование потребления топлива. Раньше это делалось без применения машинного обучения. Сейчас у нас проект, где на каждой АЗС конкурируют пять прогнозных моделей. Потом для АЗС выбирается лучшая модель из пяти. По этой лучшей модели идет прогноз на следующий месяц. То есть для каждой из тысячи с лишним АЗС идет свой прогноз по лучшей модели. И так мы сравниваем 2 подхода: полностью ручной подход аналитиков и наш совместный подход на основе машинного обучения. Вместе получается и точность выше, и меньше рутины для аналитиков.
 

Ошибка новичков в data science – они пришли «поиграться»


Ошибка новичков в data science в том, что они не видят конечной цели. Им нравится строить модели, нравится крутить данные. Но они не видят, что конечная цель – принести пользу бизнесу. Из-за этого много скепсиса к отрасли в целом. А нужно скепсис преодолевать.

Еще из ошибок: нужно писать хороший, гибкий код, чтобы ты, меняя маленькие блоки, от которых сильно зависит результат, мог бы быстро вернуться к прошлому и что-то безболезненно проверить, то есть должна быть воспроизводимость экспериментов. Ведь сложность в том, что нужно проверить как можно больше гипотез за малое количество времени. Если ты одну базовую модель строишь месяц, то это никому не нужно.
 
Сейчас есть два популярных направления в data science: генерация видео и текста. Есть приложение крутое – «Реплика». Это твой личный чат-бот. Как в «Черном зеркале». У меня «Реплика» каждый вечер спрашивает, как я провел день, например. «Алиса», Siri – это тоже про обработку текста. Сейчас подобные области на подъеме. Разработчики продвинутой нейросети – генератора текста, GPT-2, даже побоялись выкладывать в Интернет ее большую версию, потому что ее могли бы использовать для неправильных целей. Генерировать фейк-новости, например. Поэтому они выложили только маленькую, не самую крутую.
 
В чем отличие маленькой версии модели от большой? У моделей есть слои. Чтобы перевести текст в числа, нужно выявить очень много нелинейных взаимосвязей: текст может иметь разный смысл в зависимости от контекста, поэтому нужно просмотреть очень много вариантов. Чем больше число слоев нейросети, тем больше параметров. А чем больше параметров в сети, тем больше она может выявить взаимосвязей. Простейшая нейронная сеть — это просто регрессия, линейная модель. Поэтому чем больше параметров, тем больше весов, тем больше модель, тем более сложные взаимосвязи она может выявить.Но не стоит забывать и про переобучение. Простая модель может иметь бо?льшую обобщающую способность.
 
Бывает, что data science применяют там, где не нужно. К примеру, есть телеком-оператор, нужно понять, клиент ушел от них или нет. Можно нанять команду дата-сайентистов, они разработают модель, факторы используют, и может получиться хороший результат. Но можно начать с простого: если семь дней клиент не пользовался услугами, то, скорее всего, он ушел.
 
С точки зрения вложения усилий и результатов это может быть выгоднее, чем использование моделей. Иногда базовая аналитика может сделать больше, чем десять дата-сайентистов. Но, конечно, нужно аккуратно проводить А/B-тест и сравнивать оба варианта. 
 

Что такое чистые и грязные данные


Чистые данные – табличка, в которой нет пропусков и все данные имеют конкретный тип. Ты знаешь, что есть количественные данные, просто числа, есть категориальные. Одна строчка в таблице – одно наблюдение, объект анализа.

Грязные данные – когда все хранится в разных типах, тебе это нужно собрать воедино. Есть статистика бухгалтера в одном месте, есть какая-нибудь pdf-ка, еще нужно что-то спарсить с сайта, у коллеги достать забытую эксельку и какие-то данные в виде картинок. Все это нужно собрать, очистить и преобразовать в таблицу. Нейросети работают только с числами. Тебе нужно все, с чем хочешь работать, преобразовать в матрицы. Из текста сделать матрицу, из картинок сделать матрицу. С картинками самый простой вариант – преобразовать ее в черно-белый формат и вместо нее получить матрицу с разной интенсивностью пикселей. У черного будет низкая, у белого – высокая. 
 
Со словами по-другому: ты создаешь словарь, каждому слову даешь свой индекс. Потом берешь текст «я купил машину» и эти три слова заменяешь на три индекса из словаря. У тебя получается вектор, который характеризует это слово. Но эти числа ничего не значат, это просто индексы. Тебе нужно прогнать их через нейросеть, чтобы из этих трех чисел получить другой вектор, который бы имел смысл. Ты все числа переводишь в новое пространство, где похожие по смыслу слова – рядом. Если ты из вектора King вычтешь Man, ты получишь Queen. Ты из смысла слова «король» вычел мужчину, осталась только женская часть. Это идеальная ситуация, когда ты присвоил такие вектора, которые точно отражают смысл. 

Похожи на детективов


Есть кейс, у тебя появилась гипотеза, ты ее проверил, получил результат, построил график, посмотрел на него, построил модель, посмотрел на нее, убрал факторы, добавил факторы, нашел еще источник данных… Когда ты работаешь детективом – то же самое: ты опросил свидетелей, получил улики, улики записал себе на доску, потом их учел, выяснилось что-то еще… Есть элемент волшебства в этом.

Когда задача интересная и когда чувствую, что я почти поймал решение (модель хорошая, метрика 70% точности, взаимосвязь почти ясна, осталось немного подкрутить параметры), то могу реально долго просидеть в офисе. В этом самый интерес, когда осталось еще чуть-чуть. А бывает, что построил модель и ничего не получается. Чаще всего дело не в модели, а в данных. Они должны быть качественными, и их должно быть много, чтобы модель машинного обучения была точной. Если в данных есть закономерности, то модель их всегда найдет. 

А бывает отчаяние, когда ты решаешь какую-то задачу и не получается. Ты уже все модели перепробовал, все факторы учел. Это, конечно, грустно. Иногда связи нет вообще, ее никак не уловишь ни глазами, ни моделями. Надо просто себе честно признаться (и себе, и бизнесу), что взаимосвязи нет.
 

Нейросеть, которая пишет рэп


Я нейросеть написал, которая пишет рэп в стиле моего любимого исполнителя, Machine Gun Kelly. Я его очень много слушаю, взял все его тексты, прогнал через генеративную нейросеть, и она научилась читать рэп в его стиле.
Я потом сделал выжимку и отправил ему в Instagram.
 

«Почему Джоан Роулинг добилась успеха?»


Я читал книгу «Несовершенная случайность», и там рассказывается, например, сколько крутых писателей, певцов мы потеряли, потому что они рано остановились и подумали, что они плохие. А на самом деле писатель пробовал пять раз, первый раз у редактора было плохое настроение, он отбросил. Второй раз на почте задержалось. Третий раз еще что-то. Это не потому, что специалист плохой, а потому, что внешние силы вмешались. Почему Джоан Роулинг добилась успеха? Потому что только на десятый раз ее публикацию Гарри Поттера приняли.

Всякие бизнесмены в интернете говорят: «Я из деревни, попал в Москву, разбогател. И у тебя получится». Но у тебя не получится, скорее всего. Потому что у него совпало вот это, вот это, он встретился с этим человеком и т.д. Ты как-то можешь влиять на вероятность своего успеха, но ты не можешь ее до 100% довести.