• Нужен ли магазину «Стильный кросселл»: опыт Retail Rocket в анализе изображений для формирования рекомендаций

      Интерес к анализу изображений для формирования рекомендаций растет с каждым днем. Мы решили разобраться, насколько реальные результаты приносит эта трендовая тема. Рассказываем о тестировании использования глубинного обучения (Deep Learning) для улучшения рекомендаций сопутствующих товаров.



      В этой статье мы описываем опыт применения технологии анализа изображений для улучшения алгоритма сопутствующих товаров. Читать ее можно двумя способами: те, кто не интересуется техническими деталями использования нейронных сетей, могут пропустить главы про формирование датасета и реализацию решений и перейти сразу к AB-тестам и их результатам. А тем, кто имеет базовое представление о таких понятиях как эмбендинги, слой нейронной сети и т.д., будет интересен весь материал целиком.
      Читать дальше →
      • +10
      • 1,5k
      • 6
    • Как мы нашли критичную уязвимость AspNetCore.Mvc и перешли на собственную сериализацию

        Привет, Хабр!

        В этой статье мы хотим поделиться нашим опытом в оптимизации производительности и исследовании особенностей AspNetCore.Mvc.



        Предыстория


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

        В результате профилирования мы обнаружили, что большую часть процессорного времени “съедает” десериализация. Мы выкинули стандартный сериализатор и написали свой на Jil, в результате чего потребление ресурсов снизилось в разы. Все работало как нужно и мы успели об этом позабыть.
        Читать дальше →
      • Как писать функциональные требования

          Привет, Хабр!

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

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


          Читать дальше →
        • Рабочее место .NET разработчика или трудности выбора идеальной конфигурации ver.2.0

            Привет, Хабр!

            И снова мы приоткрываем дверь «за кулисы» проекта Retail Rocket. Запуская инженерный блог, мы обещали рассказывать о подходах, используемых в области анализа данных, и разработки технологий, которые позволяют создавать самую популярную на рынке ecommerce платформу персонализации.

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


            Старое рабочее место .NET разработчика в офисе Retail Rocket

            Все также половина нашей команды разрабатывает на .NET, но почти все разработчики сменили Visual Studio и Resharper на Rider 2018. Rider оказался заметно быстрее, чем Visual Studio с решарпером, и мы не устояли. Также из-за все большего количества проектов и файлов, нам пришлось разделить единый solution на несколько. Но нам все еще требуются быстрые машины, чтобы работа оставалась комфортной.

            В начале этого года перед нами встала задача оборудовать еще несколько рабочих мест для разработчиков, мы решили поработать над существующей производительностью и подобрали новые комплектующие.
            Читать дальше →
          • Как обмен данными влияет на качество рекомендаций

              Привет, Хабр!

              Мы уделяем особенное внимание проверке интеграции при подключении нового клиента к платформе и постоянно отслеживаем статус интеграции в процессе работы. Почему это критически важно? Потому что сбор данных — основа формирования качественных рекомендаций.



              Работа рекомендательной системы строится на нескольких важных составляющих: сбор данных, их хранение, обработка, выдача рекомендаций и growth hacking. Плюс «железо» для обеспечения вычислительных мощностей алгоритмов и процесс верстки. Таким образом мы получаем как минимум 7 пунктов, от которых зависит качество рекомендаций, не говоря уже о дорогой команде аналитиков. Как внешний сервис, так и внутренняя система рекомендаций интернет-магазина, должны охватывать все эти пункты и качественно обеспечивать работу на всех этапах.
              Читать дальше →
            • Как принципы игры «Playing Lean» помогают в создании продуктов

                Привет, Хабр!

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

                Сегодня мы хотим рассказать, как игра «Playing Lean» помогает не только погрузиться в методологию бережливого производства, но и применить этот опыт на практике — в разработке продуктов и новых фич.


                Читать дальше →
              • 10 материалов RecSys о рекомендательных системах, которые должен прочитать каждый

                  Привет, Хабр! Сегодня мы хотим поделиться с сообществом подборкой лучших материалов конференции ACM Recommender Systems (RecSys), которые обязательно нужно прочитать каждому специалисту, который занимается рекомендательными системами.


                  Читать дальше →
                • 10 уроков рекомендательной системы Quora

                  • Tutorial


                  Привет, Хабр! Как директор по аналитике Retail Rocket, я периодически посещаю различные профильные мероприятия, и в сентябре 2016 года мне посчастливилось побывать на конференции RecSys, посвященной рекомендательным системам, в Бостоне. Было очень много интересных докладов, но мы решили сделать перевод одного из них Lessons Learned from Building Real­-Life Recommender Systems. Он очень интересен с позиции того, как Machine Learning применять в production системах. Про сам ML написано множество статей: алгоритмы, практика применения, конкурсы Kaggle. Но вывод алгоритмов в production — это отдельная и большая работа. Скажу по секрету, разработка алгоритма занимает всего 10%-20% времени, а вывод его в бой все 80-90%. Здесь появляется множество ограничений: какие данные где обрабатывать (в онлайне или оффлайне), время обучения модели, время применения модели на серверах в онлайне и т.д. Критически важным аспектом также является выбор оффлайн/онлайн метрик и их корреляция. На этой же конференции мы делали похожий доклад Hypothesis Testing: How to Eliminate Ideas as Soon as Possible, но выбрали вышеупомянутый учебный доклад от Quora, т.к. он менее специфичный и его можно применять за пределами рекомендательных систем.
                  Читать дальше →
                  • +20
                  • 6,3k
                  • 6
                • 9 советов по увеличению эффективности парного программирования

                    Привет, Хабр! В своей работе мы используем парное программирование и сегодня хотим поделиться с сообществом советами, которые помогают нам повысить эффективность этого метода.

                    image

                    При парном программировании два программиста решают задачу совместными усилиями, сидя плечом друг к другу за одним компьютером. Первый выступает «водителем», который печатает код на клавиатуре, а второй служит «штурманом» — он следит за тем, чтобы в программе не было ошибок, занимается архитектурой кода, планирует последовательность действий и думает о правильности кодирования в стратегическом масштабе. Такой способ разработки позволяет поддерживать более высокую концентрацию, стимулирует тщательно продумывать решение еще до его реализации и значительно снижает количество ошибок и повышает качество кода.
                    Читать дальше →
                  • Как менеджерам научиться ставить задачи разработчикам

                      Когда речь заходит о разработке, менеджеры и управленцы сразу вспоминают накопившийся массив задач, которые ждут своей очереди, непредсказуемые сроки их реализации, имеющие свойство постоянно меняться, натянутые отношения с IT-отделом, который использует систему «свой-чужой», и множество других проблем, тормозящих развитие бизнеса. Чтобы решить все эти проблемы, необходимо научиться грамотно ставить задачи и общаться с разработчиками. О том, как менеджеры должны ставить задачи, чтобы они были выполнены в срок и в соответствии с заданием, рассказывает Николай Хлебинский, СЕО и сооснователь платформы Retail Rocket.


                      Читать дальше →
                      • +14
                      • 13,9k
                      • 8

                    Самое читаемое