group-telegram.com/boris_again/1199
Last Update:
# Поиск работы: разбор тестового задания Easysize
Easysize очень клевые и я готов рекомендовать их всем. Один из лучших опытов собеседований. Полная прозрачность, отношение на равных, очень приятные люди и никакого булщита. На собеседовании с СЕО я испытал такое доверие, что нарушил все правила поведения и сказал, что на самом деле не знаю чего хочу. Интересны и рисерч, и инженерия, и бизнес. Не делайте так. Несмотря на это, они все равно сделали мне оффер.
Они делают рекомендации размеров одежды на Shopify. При выборе размера покупатель заполняет небольшой опрос: обычно ношу 36-ой, рост 156, бывает жмет в плечах. В ответ получает ML рекомендацию: покупай 36-ой. Это растит конверсию в покупку.
На собеседовании мы с СТО сразу нашли общий язык. Он рассказал, что под каждый магазин они тренируют модель руками. Вначале бывает очень мало данных от магазинов. Я сразу понял: "Значит проблема в том, что так масштабироваться невозможно. Нужно подключать магазины автоматически и решить проблему холодного старта." СТО очень понравилось, что я ухватил суть проблемы. Я сказал, что могу это сделать.
После ряда собеседований они прислали мне тестовое задание. CSV с 300 ответами покупателей на опрос. Id продукта, категория, рост покупателя, обычно покупаемый размер, ответы в каких местах обычно жмет, какой размер в итоге купил, какой фидбек оставил, какие были проблемы с купленной вещью. Задача: дать рекомендации.
Первая проблема, что нет таргета. Мы не знаем какой размер человеку действительно подходит, знаем только какой он купил. Вторая проблема: ничего не учится. Я подошел к задаче как к классификации, где рекомендуемый размер это класс. Попробовал для начала предсказывать купленный размер. Логрег просто не сходится. Еще в начале подумал, что влияют только две фичи: обычно покупаемый размер и рост. Визуализация это подтвердила: какой человек обычно носит размер, такой и покупает. Данных нет, таргета нет, фичей нет, какой тут ML?
Я уже хотел бросить это тестовое. Но решил поиграть в игру: что если бы я уже работал в этой компании? Приходит ко мне бизнес, и что я ему скажу? "Ой тут ничего не сделать, я сдаюсь"? Стало интересно, что же можно выжать.
ML не обучается. Максимум можно сделать какую-то таблицу: с таким обычным размером, таким ростом и прочими ответами как у тебя люди чаще всего покупают эту вещь с размеро• Х. Не руками же эту таблицу составлять: и оверфит большой, и обновлять трудно, и проблему масштабирования так не решить. Нужна обучаемая автоматическая таблица.
И я как раз знаю такую! Random Forest. Раскладывает обучающую выборку по полочкам. Не переобучается. Экстраполировать не умеет, а нам как раз не нужно. Все виды фичей умеет обрабатывать из коробки, никакого препроцессинга не надо. На train-test split данных нет, а RF как раз дает бесплатно out-of-bag оценку тестовой ошибки. Обучил на предсказание купленного размера: красота, около 0.7 OOB f1-score. Но как же рекомендовать не тот размер, что обычно покупают, а тот, что подойдет? Придумал трюк: выкидываем все примеры, где у людей был негативный фидбек, на остальных обучаем. Получаем модель, которая говорит "люди с твоими параметрами, которые оказались довольны, купили Х."
Попробовал, изучил результаты предсказаний на недовольных покупкой, которые не попали в трейн сет модели. Нашел несколько крутых случаев: человек купил размер Х, написал фидбек, что вещт оказалась маловата. Рекомендация модели: стоило покупать на размер больше. Вау, полезные рекомендации, отпад!
Но это только начало, потому что это выполнение на сто процентов. Надо на стопятьдесят. Что еще можно выжать? Я задумался, что для эффективности рекомендаций важно доверие к ним. С чего тебе верить черному ящику, который говорит покупать 50-ый размер?
BY Борис опять
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/boris_again/1199