Kantor.AI
11.6K subscribers
141 photos
12 videos
5 files
185 links
Канал Виктора Кантора про Data Science, образование и карьеру в сфере анализа данных. По вопросам сотрудничества: @mariekap

РКН: 5140322136
Download Telegram
#новости_и_анонсы_канала

1) Судя по динамике количества подписчиков, идея рисовать для канала картинки (не рискну это называть инфографикой) про data science понравилась аудитории. Поэтому буду продолжать. Если вдруг кому-то интересно помогать с отрисовкой - пишите, это может сильно ускорить выход новых постов.

2) Уже собралось достаточно нового фидбека на курс aiducation.ru, и в августе будет обновление материалов: новые версии видео, дополнительные разделы (в частности, о том, что можно изучать дальше, в зависимости от ваших целей), некоторое обновление тестов. Всем, кто купил курс ранее, обновлённая версия тоже будет доступна. Большое спасибо всем слушателям за обратную связь и просто за прохождение курса!

3) Сегодня вечером участвую в дискуссии про образование в Data Science на Data Толк в московском офисе одноклассников (об этом уже писал), в завтрашнем посте в канале поделюсь впечатлениями от мероприятия и ключевыми на мой взгляд тезисами.

4) После поста про поиск преподавателей я получил очень, очень много ответов, и это очень приятно - здорово, что столь многим людям интересна эта тема. При этом я оказался не готов быстро обработать все ответы. Если я вам ещё не успел ответить - постараюсь это исправить в течение ближайшей недели.
Оказалось, что у Data Толк есть трансляция: https://ok.ru/live/2298825809515
Очень честный и качественный пост выпускницы ФИВТа про первые месяцы работы разработчиком в Яндексе :) Про адаптацию sad but true, хотя возможно многие в российских компаниях и не хотели бы чтобы их как-то тревожил HR в целях адаптации. Кстати, у себя в канале Саша также пишет про стажировки и работу в других компаниях. Периодически читаю ее посты и очень рекомендую тем, кому тоже интересно, как все устроено в разных местах.
Выстраданный пост про Яндекс (не могла себе разрешить писать про что-то другое, пока не допишу это).
Дисклеймер, поскольку много моих читателей там работают: это моё личное мнение, я не хочу им никого обидеть.

Давайте сначала о том, зачем я вообще пошла туда на 4 месяца (меня много кто спрашивал). Впервые я попала в офис Яндекса ещё школьницей и офис поразил меня, я не могла поверить, что в этом классном месте кто-то работает. Конечно, с того момента я побывала в других офисах, и, вроде бы, уже выучила, что плюшечки в офисе делают работу более приятной, но не являются самой важной частью. Но не в случае Яндекса. Так что, в основном, я пошла заполнять это детское желание поработать в таком классном месте. Ну и fear of missing out у меня был, конечно же.
И, действительно, офис просто супер (хотя мне потребовалась пара недель, чтобы научиться в нём ориентироваться), компенсации супер (еда с бейджика - это просто огненная идея).
Однако, у меня создалось впечатление, что не все процессы в Яндексе (в поиске Яндекса, если точнее) отлажены так же хорошо, как, например, в Гугле.
Например, система ревью устроена так, что ревьюеры определяются автоматически (обычно это вся команда), в итоге в день тебе приходит порядка 40 писем с просьбой посмотреть ревью, из которых реально нужны тебе порядка 2-3. Или, например, тесты перед коммитом работают по получасу-часу. Или то, что почти совсем нет документации (вот это просто аааа, я страдала очень). Или то, что, кажется, не принято ставить 1-1 встречи с начальником (а мне кажется, что особенно в начале работы это очень важно).
С 1-1 у меня вообще вышла странная история. Через месяц после начала работы мне написала девушка из службы адаптации и спросила, всё ли хорошо. Я сказала, что всё ок, но вот 1-1 встреч нет, и из-за этого не хватает обратной связи. "Хорошо", - пишет девушка, "ты можешь попросить сама об обратной связи и 1-1! Хорошего дня)". И, м, мне кажется это странным, потому что непонятна тогда роль службы адаптации во всей этой системе.
Ещё (тоже удивительная история) мне на входе выдали не тот ноутбук, который я просила (Dell, а не Lenovo, я не любитель маков), объясняя это тем, что именно такие ноуты они дают разработчикам. И в итоге у меня всё тупило и было супер-мучительно - сначала ноут не уходил в сон, у него тупил тачскрин (хотя зачем нужен тачскрин?), потом я пошла к хелпам, они переставили систему, всё стало получше, но всё равно очень тормознуто, ноут был адово тяжёлый, в общем, аааа.
При этом есть куча классных штук - прописанные тикеты, своя map-reduce система, свой внутренний форум, etc. Но мелочи, описанные в прошлых абзацах, происходили практически каждый день и ОЧЕНЬ БЕСИЛИ.
Здесь ещё стоит сказать, что я сразу знала, что приду на короткий срок и в итоге у меня тоже не было мотивации пускать корни, лечить маленькие проблемы, etc., это тоже не улучшило ситуацию.

Уроки, которые я для себя вынесла:
- Ходить на фулл-тайм на короткое время куда-то - плохо, лучше этого не делать.
- Ориентироваться на детские мечты может вас подвести :)
- Кажется (впервые это поняла), мне всё-таки важно, в какую команду я иду. Сейчас у меня были классные коллеги, но цели меня вообще не зажигали.
- Надо очень чётко понимать, что в разных команиях по разномы отлажены процессы, и то, что ты ожидаешь, что будет сделано хорошо, может причинять боль и наоборот. Как-то я об этом забыла и неприятно на это напоролась.

При этом мой детский гештальт закрыт, так что я скорее довольна, чем нет.

P.S. Попутно - спасибо большое всем, кто со мной пересёкся в последние недели работы! Мне очень понравилось, надеюсь, и вам тоже.
#QA

В рубрике QA я отвечаю на вопросы, заданные ранее подписчиками в гугл-форме

Вопросы принимаются постоянно, отвечать на них буду тоже постоянно, но в произвольном порядке, так что никакого SLA пока что не гарантирую. Сегодня у нас весьма любопытный вопрос: «Что важнее для руководителя в Data Science: лояльность или профессионализм?»


Есть такое понятие как гигиенические факторы — те вещи, которые нужно просто держать в норме, а не стремиться наращивать бесконечно. К ним, кстати, для большинства сотрудников относится и зарплата, но об этом поговорим в другой раз. Я думаю, что для опытного руководителя в Data Science лояльность сотрудника — тоже гигиенический параметр. Главное, чтобы с ней все было более-менее нормально или хотя бы не слишком плохо, а ключевой параметр всё же профессионализм. Но если профессионализм для аналитика данных еще более-менее понятное качество, то вот лояльность вещь туманная. 

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

Поясню примером. Допустим, вам есть за что покритиковать своего руководителя, но вы понимаете, что нарушение субординации при свидетелях может подорвать его авторитет у коллег и усложнить ему жизнь. Поэтому вы говорите с ним тет-а-тет. Кстати, понимание того, как работает руководство людьми, приводит и к выводу, что в этой ситуации лучше переформулировать недовольство как вопрос — почему происходит так как происходит (избегая интонаций наезда). Уже после предметного диалога, если после получения более полной картины ситуации, вы всё еще чем-то недовольны, важно явно, но вежливо сказать, что это для вас не ок. После этого кратко сформулировать, почему, и попросить это принять во внимание (опять же, скромно и без гонора). Пример показывает, как даже выражая несогласие, оставаться лояльным в технократическом смысле — понимать, как все устроено, и решать проблему, а не приносить руководству кучу дополнительных проблем.

Остается вопрос: что делать, если руководство не слышит, когда вы разговариваете с ним вежливо? Смотрите сами - если вы можете себе позволить еще несколько раз, все более четко, указать на проблему — пробуйте достучаться или получить адекватный ответ, что вы упускаете в своих просьбах. Если же вам уже не до этого — меняйте отдел или компанию. Место работы — это не страна проживания, сменить проще. Есть еще ряд других вариантов действий, но это уже black magic, и про это я рассказывать не буду, т.к. не одобряю 🙂
#QA
Есть ли такие задачи, где ML, в любом виде, будет работать примерно как подбрасывание монетки? Не хотелось бы начинать заранее безнадёжный проект по анализу спортивной статистики 😉

Если под задачей подразумевать "спрогнозировать ответ y по данным X", то конечно бывают данные, по которым ничего не спрогнозируешь. А по любым, даже довольно хорошим данным, все равно можно предсказать не всё, есть предел качества. В машинном обучении традиционно рассматривают ошибку алгоритма как сумму трёх вещей: смещения, разброса и шума. Если хотите, это три разных по смыслу части ошибки прогноза. Так вот шум - это часть, обусловленная сугубо случайностью, это оценка снизу для ошибки алгоритма. Меньше не бывает! (Если говорить о среднестатистической ошибке, а разово, конечно, можно и угадать) Отвечая на вопрос про анализ спортивной статистики, до какой-то степени спортивные прогнозы можно успешно делать с помощью ML, и есть примеры стартапов, которым удается на этом зарабатывать (в том числе российских стартапов), но супер точности здесь ожидать не стоит.

Например, одни знакомые применяют ML в Daily Fantasy Sports - там вы набирате вирутальную команду из игроков (на ограничнный бюджет) и в зависимости от результатов игроков в реальных играх получаются баллы вашей команды, которыми вы соревнуетесь с другими. С одной стороны, вполне можно прогнозировать сколько баллов наберет каждый игрок, и с учетом этого укомплектовывать команду. Но различные "редкие" события в духе получения травм или выхода игрока на нетипичную для него позицию сильно ломают прогноз. При этом зная, что кто-то вчера получил травму, вы иногда сами можете лучше скорректировать свои действия, чем это сделает алгоритм, не обладающий этой информацией. Модели даже сложно научиться нормально учитывать травмы - т.к. для того, чтобы ее этому обучить, нужна большая обучающая выборка (тысячи объектов). Ее обычно нет. Кроме того есть другой фактор, портящий прогнозы - изменение правил.

В общем я бы рекомендовал заниматься задачами, где данных достаточно для обучения, все важные для прогноза вещи автоматически логгируются в данных, а постановка задачи не меняется с течением времени слишком быстро. Возможно в спортивной аналитике такие тоже есть.
Как развиваться дальше, если ты уже что-то знаешь и даже умеешь?

Вы скажете: в чём проблема - работай и приобретай опыт. Это разумеется, но ведь можно ускорить свой прогресс, общаясь с коллегами, в том числе более опытными.

Есть много конференций и митапов про задачи из Data Science.
Можно послушать коллег из других компаний и в кулуарах узнать больше подробностей, кто как делает свою работу. Но иногда кажется: вот бы, как в универе, периодически куда-нибудь ходить, чтобы систематизировать свои знания.

Можно пойти в какую-нибудь магистратуру по анализу данных или аналогичную ей программу. Хороших не очень много, но они есть. В Сколтехе очень хорошо, в ШАДе превосходно, ФКН в Вышке, говорят, прекрасен.

А если вы хотите под чьим-то руководством прямо практики-практики даже в обучении, чтобы руками мастерить что-то работающее и полезное?
Вот непонятно, куда за этим идти?
Может я просто не знаю?

Давайте соберем образовательные проекты с практикой на задачах из бизнеса 🙂

Пишите свои варианты мне в директ ( @vkantor ) или в гугл-форму - https://forms.gle/neoVkoeQuQp2QXG38 И, конечно же, я напишу в канале, какой список в итоге получился
В продолжение предыдущей темы: интересно, какой должна быть программа такого практико-ориентированного образовательного проекта по DS, рассчитанного на неновичков?

С одной стороны, можно сразу бежать образовывать людей крутыми курсами. Сколько такая программа может длиться? Несколько недель - маловато. Полгода-год - получше, можно многое содержательно успеть обсудить. Идеальный срок, наверно, бесконечность! Life-long learning! Но бесконечную программу составлять бесконечно долго, отбросим пока этот вариант :)

Возникает другая проблема.
100% придут люди с разным уровнем знаний. Нужно либо их очень строго отбирать, либо смириться с тем, что базовые знания могут существенно различаться
Запуск Академии больших данных MADE

В сообществе уже известно, что с июля я работаю в Mail.ru Group. Настало время рассказать, что это значит.

К моим образовательным проектам добавился новый, очень важный для меня проект — Академия больших данных MADE.

Что такое MADE?
Mail.ru Group запускает образовательные программы для специалистов с опытом. Уже запустилась Академия продукт менеджеров.
Последние два месяца большую часть времени я искал преподавателей и уточнял программу для аналогичного (только более продолжительного) проекта для Data scientist’ов, ML и Data инженеров — Академии больших данных.

Длительность программы - 3 семестра (1,5 года), начиная с этого октября, обучение бесплатное.

Что будет в первом семестре?

Первый семестр — «выравнивающий». Он помогает всем подтянуть машинное обучение, алгоритмы и структуры данных и что-то по выбору: либо продвинутые курсы С++/Java/Python от опытных в продакшн-разработке преподавателей, либо прикладную статистику на курсе «Статистические методы анализа данных» Михаила Борисовича Лагутина (автора той самой «Наглядной матстатистики» — она же «книжка с коровой» 🙂

В случае курсов по программированию ожидается, что вы выбираете тот язык, на котором уже умеете писать код, но хотите делать это чуть увереннее и меньше бояться продакшена. Если же вы хотите быть тем аналитиком данных, который не пишет в продакшн… нет, никто не погонит вас вон из профессии, можете просто смело выбирать статистику и прокачиваться в теории 🙂 То же самое вы можете сделать, если в программировании вы уже сами можете учить кого угодно и чему угодно.

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

Когда живешь каким-то проектом, можешь говорить о нем очень много, но пожалуй не буду стараться запихнуть все мысли в один пост. Просто заходите на data.mail.ru и посмотрите, а чуть позже я еще напишу про отбор в академию, преподавателей, 2-3 семестр, почему Академия больших данных — это очень важный проект для Data Science сообщества и другие интересные вещи.
Сегодня понедельник. На выходных прошел последний вступительный экзамен в Академию больших данных MADE, все работы проверены, сейчас мы подводим итоги. Вопрос:
Вам интересно узнать, что и зачем мы проверяли на каждом этапе и посмотреть на задачи с отбора?
Anonymous Poll
93%
Да. Давай сюда примеры, может даже подумаем, как решается!
2%
Скорее нет. Кому было интересно - поучаствовал в отборе
5%
Мне все равно. Можно запостить, а можно забить
По мотивам голосования, рассказываю про задания с отбора в Академию больших данных MADE. Отбор состоял из онлайн-этапа (проверяли математику и программирование), письменного экзамена по математике (для очной формы обучения) и опционального контеста по анализу данных (для всех, давал дополнительные баллы).

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

Онлайн-тестирование по математике состояло из пяти задач. Обсудив с руководителями внутри Mail.ru Group и внешними экспертами, какие темы из математики полезны в анализе данных, мы получили такой набор:

1. Мат.анализ: производные (для объяснения решения оптимизационных задач при обучении моделей в ML) и интегралы (в основном для осознания понятий из теорвера, используемых в ML - например, той же связи плотности распределения и вероятности)

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

3. Дифференциальные уравнения (опционально, но полезно): понимание самой концепции и способность быстро разобраться как решать - т.к. есть примеры использования дифуров вместе с ML в многопользовательских сервисах для управления активностью пользователей, есть также примеры из промышленности и других сфер, где сейчас активно применяется ML

4. Теория вероятностей: дискретные вероятности, условная вероятность, формула Байеса и формула полной вероятности, популярные семейства распределений и их свойства, матожидание и его свойства - как база для статистики

Отдельно пришлось позаботиться о том, чтобы формулировка задачи как можно реже позволяла просто скопировать ее в Wolfram Alpha и получить ответ. Отсюда вместо задач “найдите производную” возникли задачи, в которых ее нужно суметь правильно применить.

Также нам было важно понимание перечисленных тем, а не безупречная арифметика, поэтому к каждой задаче давались варианты ответа, чтобы поступающим в Академию было проще заметить ошибку в вычислениях.
math_online_test.pdf
63.2 KB
А вот и сами условия задач из онлайн-теста по математике (один из вариантов)
Давайте добавим немного экшена и попробуем решить вторую задачу из онлайн-теста по математике в MADE. Чему равно минимальное расстояние между двумя фигурами на плоскости, заданными неявными функциями:

x − y − 3 = 0 - x^2 + y + 2 = 0
Anonymous Poll
28%
Посмотреть результаты
42%
Я взрослый приличный человек, не буду я ничего дифференцировать, отстаньте :)
3%
0,975
21%
0,530
3%
0,437
2%
0,140
2%
0,615
О других этапах отбора. Тест по программированию был контестом из четырех задачек, из которых первая проверяла способность написать хоть какую-то простую программу, вторая не предполагала знание алгоритмов, а третья и четвертая подразумевали знание совсем азов вроде обходов графов.

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

Письменный экзамен был из менее "шаблонной" математики, чем онлайн-тест. Но такой, чтобы в 2-3 задачах решение было изящным и лежало на поверхности. Например: чтобы выяснить, существуют ли матрицы A и B такие, что AB - BA = E, достаточно было догадаться вспомнить свойства следа матрицы.

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

Была и еще одна важная причина, по которой письменный экзамен по математике нужно было оставить. Я постарался изучить мнение разных экспертов с незыблемой репутацией в Data Science, и в личной беседе встретил как резко негативные отзывы о таких процедурах отбора, так и отзыв "если бы там не было этих задач, то я бы никогда туда не поступил". Если уж кому-то из звезд DS олимпиадные задачки по математике на вступительных помогли, значит нужно оставить их как шанс для других таких же людей.

Также эксперты подсказали добавить соревнование по анализу данных, как часть отбора, более релевантную data science, чем задачки по линалу и матану. Участие в соревновании в случае успеха добавляло дополнительные баллы, позволяя, например, хуже решить задачки на письменном.

Соревнование было таким, чтобы лучший результат давали не знания ML (ему мы еще будем учить), а работа с данными и внимательное их изучение. Ради этого мы подготовили данные, в которых была "утечка" (leak) правильных ответов в признаки объектов. Соревнование на этих данных уже тестировалось на группе из 40 человек, и из них только один человек нашел утечку. В нашем случае ей смогли воспользоваться примерно 5% участников. Может показаться, что утечки нужно искать только в соревнованиях на kaggle. Но в индустрии, пропустив утечку в данных, можно запросто получать завышенные оценки качества модели и не долго не замечать подвох.

Итоговый балл для очной формы обучения учитывал письменную математику, программирование (за вычетом первой задачи) и соревнование по анализу данных. У заочников же вместо письменной математики использовался результат онлайн-тура.

Предмет моей особой гордости — то, что в MADE этапы отбора оценивали людей с разных сторон, и ошибка только на каком-то одном из этапов не лишала возможности поступить в Академию. Главное было хорошо показать себя в других испытаниях. Я нахожу это очень человечной и внимательной к разным талантам людей системой отбора, и ровно этого и хотелось в итоге добиться.
Подошло время запуска очередного осеннего семестра курса Data Mining in Action (DMIA).

Курс проводится уже много лет и постоянно обновляется, развивается и дорабатывается для каждого нового запука. DMIA берет начало из факультатива по машинному обучению в МФТИ, который я начал вести, кажется, в 2011 году. За это время сформировалась сильная команда преподавателей, курс получил свое нынешнее название, переехал в центр Москвы, и сейчас занятия проходят в МИСиС. Количество желающих пройти курс выросло настолько, что в какой-то момент пришлось ввести отбор.

За год на DMIA даже после отбора приходит около 800-1000 человек. Пока мне неизвестны более масштабные курсы по ML в оффлайне.

Изначально отбора не было - была простая идея "приходите и оставайтесь, если вам нравится и у вас получается делать задания". И вот, спустя годы, мы возвращаемся к этой концепции. Отборочное задание на DMIA - посмотреть запись по первой теме курса и выполнить домашнее задание. Если справитесь, и если мы не закроем регистрацию из-за того, что кончилось место в лекционных аудиториях, то можно будет приходить 5 октября на первое очное занятие (уже не вводное).

На курсе есть 4 направления с лекциями и семинарами:
- Базовый поток (основы ML)
- Индустрия (применение ML в компаниях)
- Спорт (о том, как участвовать и побеждать в соревнованиях по анализу данных)
-Глубокое обучение.
"Базовое направление" и "глубокое обучение" рассчитаны на начинающих специалистов. "Индустрия" и "Спорт" требуют некоторых знаний в ML.

Форма для записи на курс: https://forms.gle/4xZ48bCZBnBKtALL6 . Подробнее про курс можно почитать на сайте dmia.space
Вчера обсуждал с хорошим знакомым рекомендательные сервисы и понял, что стоит рассказать в канале про uplift моделирование. В начале карьеры мне сильно не хватало знаний про uplift, а сейчас я абсолютно уверен, что его обязательно нужно включать во все курсы по ML в рекомендациях и маркетинге.

Представьте, что вы предлагаете человеку подписаться на какую-то услугу или вовсе показываете целый рекомендательный блок с товарами, а он после этого соглашается на ваше предложение или покупает товар. Значит ли это, что ваши рекомендации работают? Смотря какая у вас цель. Когда вы хотите помочь человеку быстрее получить то, что он итак выберет (так, например, дело обстоит с разными подсказками в приложениях вроде пунктов назначения в приложении Яндекс.Такси), нужно просто верно угадать, что выберет пользователь (купит/посмотрит/лайкнет). Когда же вам нужно заинтересовать клиента чем-то новым или даже просто помочь найти то, что он не сможет разыскать самостоятельно в большом каталоге - ситуация чуть сложнее.

Здесь и появляется uplift моделирование - задача понять, на какие товары/услуги клиент обратит внимание после вашей рекомендации, но не обратил бы без нее. Если вы прогнозируете не какие товары человек купит, а для каких товаров рекомендация повысит вероятность покупки больше всего, рекомендации начинают советовать человеку действительно что-то новое. На экономику рекомендательных систем, конечно же, успешное uplift моделирование влияет очень хорошо 🙂 

Если вам интересно почитать подробнее про uplift - буквально пару недель назад Макс Шевченко и Ира Елисова из Data Science МТС опубликовали отличный туториал: часть 1 - 
https://habr.com/ru/company/ru_mts/blog/485980/ , часть 2 - https://habr.com/ru/company/ru_mts/blog/485976/ . Там же есть много других полезных ссылок. А если вы технический специалист и хотите попрактиковаться в uplift моделировании - можно еще успеть поучаствовать в конкурсе Retail Hero от X5: https://retailhero.ai (остается 10 дней, конкурс недавно продлевали)
#рекомендательные_системы #оценка_эффекта

Что сложного в оценке качества рекомендательных систем (часть 1)

Золотые косинусы

На заре развития рекомендательных систем в ритейле, была компания-первопроходец Х или, как их прозвали тролли-завистники, "Золотые косинусы". Называть их так стали, т.к. одни из самых простых методов сделать рекомендации используют идею порекомендовать то же, что нравится похожим пользователям или похожие на уже купленные/просмотренные товары. А оценивают похожесть часто как косинус угла между векторами признаков объектов.

Last click и first click attribution

Компания Х должна была как-то обосновывать онлайн-ритейлерам, что их блоки с рекомендациями товаров на сайте приносят какую-то пользу. Как это делать проще всего? Конечно сказать: "смотрите, по каким товарам из купленных человек кликал в блоке рекомендаций - вот эти продажи мы вам и сделали!". Но заказчики были не дураки и понимали, что не факт, что именно клик в блоке рекомендаций был таким вот определяющим. И так появилась проблема аттрибуции - к какому действию пользователя аттрибуцировать покупку.

Здесь возникло две крайности. Первая - считать, что то, на что последним кликнул пользователь, и повлияло на факт покупки больше всего (last click attribution). Иронично, что продажи с рекомендательного блока по last click attribution очень легко накрутить - достаточно на странице с товаром разместить рекомендательный блок с самим товаром в нем. Пользователь перед покупкой будет обращать внимание на наличие очень похожего товара в рекомендациях, кликать на него и огорченно обнаруживать, что это тот же самый товар. Зато покупка, если она случится, теперь будет засчитана вашему алгоритму 🙂 Вторая крайность - считать, что наиболее важен первый клик по товару (first click attribution), т.к. именно он породил у пользователя цепочку размышлений о том, не купить ли этот товар.

Каннибализация и А/В тестирование

Стоит ли говорить, что измеренная выручка с рекомендательного блока что по last click attribution, что по first click, часто составляла десятки процентов от выручки всего онлайн-магазина. Только вот денег настолько больше не становилось, рекомендательный блок просто каннибализировал трафик из каталога. Но все более-менее сходились в том, что если через блок идет 20-30% продаж, то он не может быть бесполезной вещью.

Жизнь компании Х сильно усложнилась, когда на рынке появились их конкуренты Y, рассказывавшие заказчикам, что такое А/В тесты. Идея разбивать пользователей на две группы - тестовую (с новыми рекомендациями) и контрольную (со старыми или без них - смотря что было у заказчика) была новой для многих онлайн-ритейлеров, а возможность честно сравнить всю выручку в группах и получить экономический эффект без "жульничества" с каннибализацией вынудила Х тоже начать заниматься проведением А/В тестов. Но не всё так просто, и отчасти статистика была на стороне Х - об этом в следующей части поста.
Что сложного в оценке качества рекомендательных систем (часть 2)

Статистическая значимость

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

Начнем с того, что если в группе А заработано $50129, а в группе B - $51104, не очевидно, что с одним и тем же подходом к рекомендациям мы не получили бы такое же различие - нам могло просто повезти получить такое случайное отклонение. Все зависит от того, сколько было сделано покупок в каждой группе, какие чеки были в этих покупках, были ли выбросы вроде супердорогих товаров, покупка которых может сразу перекосить всю статистику в пользу одной из групп.

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

Деление на группы

На этом беды не заканчиваются: увы, мы можем неверно разбить пользователей на группы А и В. Если в группе В было больше состоятельных клиентов, не удивительно, что и результат там будет лучше. Вы скажете: "Ну надо же случайно делить на группы!" Но в том-то и подвох, что на бытовом уровне "случайность" все понимают по-своему. Частая история - относить клиента к той или иной группе по последней цифре номера телефона (например, четные в одну группу, нечетные - в другую). К сожалению, распределение по этим цифрам обычно далеко не равномерное, поэтому такой подход часто приводил к перекосам в группах и невалидным А/В тестам. В частности, я видел такую грубую ошибку в инструментах для А/В тестирования даже в очень технологичных коммерческих компаниях (причем не в одной!).

Так как это все влияет на оценку качества рекомендаций?

Оказывается, в А/В тестировании не все метрики качества одинаково быстро "красятся" - показывают статзначимое отличие в группах. Эмпирическое правило - чем интереснее метрика бизнесу и ближе к конечному результату, тем хуже будет "прокрашиваться". Различие в кликах быстрее красится, чем в добавлениях в корзину. Добавления в корзину - быстрее, чем покупки. А деньги? А деньги вообще часто не значимы, сколько не мучайся, из-за большого разброса в ценах товаров.

Конечно, здесь есть миллион оговорок и, например, таргетируя рекомендации только на определенный сегмент без большого разброса цен, получить статзначимость бывает проще (если сокращение количества наблюдений оказалось менее драматичным, чем сокращение разброса цен). Зато покупки и деньги с блока по last/first click attribution красятся "на ура" - по этому показателю эффект часто на порядок больше, чем "реальный" (без учета каннибализации), заметить его проще. Поэтому даже в условиях, когда все знают про существование А/В тестов, от нехватки данных можно все равно начать измерять "кривые" метрики.

Обычно стараются зафиксировать иерархию метрик (например - деньги -> покупки -> корзины -> клики -> клики/покупки с блока) и стараться получить эффект по самой близкой бизнесу метрике из тех, которые прокрашиваются. Стоит заметить, что тут тоже важно не переусердствовать - есть такая вещь в статистике как множественная проверка гипотез, неправильное выполнение которой легко приведет к тому, что вы будете находить эффект там, где его нет.

Звучит это все довольно безрадостно, но это мы еще не поговорили о том, как измеряют качество модели на исторических данных. До внедрения модель же надо как-то разрабатывать и на чем-то обучать. Вот тут уж такой безысходностью повеет, что мало не покажется. Об этом - в следующей части.