Мнение Программного комитета о докладе
Принято считать, что применение известных алгоритмов всегда ведет к наиболее оптимальной реализации. А всегда ли? В докладе обсудим, как простые решения иногда могут привести к лучшим результатам.
Доклад отозван
Принято считать, что применение известных алгоритмов всегда ведет к наиболее оптимальной реализации. А всегда ли? В докладе обсудим, как простые решения иногда могут привести к лучшим результатам.
Для того чтобы пользователи Lamoda могли получать рекомендации похожих товаров на основе тех, что они выбирают/покупают, мы запустили проект под названием Лакинатор. Как Акинатор, но только для одежды. Для таких рекомендаций необходимо в онлайне уметь искать схожие друг с другом товары в определенных категориях. Поиск идет по подсчитанным векторам.
* Изначально думали использовать поиск по хэш-индексу (lsh), но в итоге остановились на обычном переборе. Расскажу, почему, казалось бы, неэффективное решение может быть самым подходящим для решения задачи.
* После того, как мы остановились на переборе, надо было придумать, как искать топ-N элементов. Расскажу, как выбирали подходящую структуру данных и как работать с бенчмарками в Go.
* Когда микрооптимизации бывают реально полезны. Поговорим про инлайнинг функций в Go. В нашем кейсе он был полезен, так как при поиске перебором одни и те же участки кода исполняются очень много раз. Даже небольшое ускорение такого участка может сильно повлиять на итоговую скорость.
Второй год работает в Lamoda руководителем одной из команд разработки в дирекции R&D. В разработке шестой год. Пишет на Go и на Python. Закончил факультет прикладной математики и информатики в НИУ ВШЭ.
Lamoda