Здравствуйте и добро пожаловать в другую статью о моей попытке укротить море рекомендательных систем и бороться с Кракеном (или продуктом - вы сами решаете, как его назвать!)

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

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

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

Однако в этой статье я…

(Барабанная дробь, пожалуйста!)

… Изучите влияние моих поисков на нашу модель.

О, и если вы чувствуете себя потерянным, вот ваша карта.

Но позвольте мне сначала напомнить вам, что такое Системы рекомендаций:

Система рекомендаций - это система, которая направлена ​​на прогнозирование предпочтений пользователя, когда дело доходит до элемента.

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

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

Кластеризация продуктов и распознавание сущностей повернули мое колесо в другом направлении

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

Позвольте мне сказать вам, что это сделало жизнь несколько безопаснее.

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

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

Очень удобно, если я так говорю!

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

При этом создаются группы (кластеры) товаров.

Следующим шагом было присвоение взаимодействий клиента кластеру, которому принадлежат продукты, с которыми он взаимодействовал.

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

Позвольте мне немного рассказать об этом:

Джон купил футболку Nike, Джейн купил футболку Adidas, а Питер купил обувь Adidas.

Футболки оказались в одной группе. Однако обувь - нет.

Взаимодействия были назначены следующим образом:

Но нужно помнить еще об одном: кластер содержал товары только одного пола.

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

Рабочий процесс модели

Проблемы с выбором продукта (и как я решил проблему)

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

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

Я попытался найти способ оценить каждый отдельный продукт в кластере по популярности. Но был параметр, о котором я не учел: это заставляло меня снова и снова выбирать один и тот же продукт из кластера.

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

Теперь, как будто этого было недостаточно, этот метод подсчета очков позволил появиться другому монстру:

Товар для мужчин оказался в группе товаров для женщин.

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

Это закончилось игрой в числа

Как очевидно, в тот момент я был в небольшом проигрыше. Однако не было никакого решения, кроме как протолкнуться - даже если это означало, что я вылезу из строя и сгорел в процессе.

Я использовал те же показатели, что и для созданной первой модели, но возникла небольшая проблема, которая тормозила весь процесс: кластеры.

На этом этапе у меня были группы продуктов, а не отдельные продукты. Кластеры состоят из одинаковых или очень похожих продуктов.

Это не оставило мне выбора, кроме как измерить производительность моего «корабля» на двух разных уровнях: уровень кластера и уровень продукта.

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

  • Его точность увеличена с 2,3% до 7,58%.
  • Его точность увеличена с 0,51% до 1,45%.
  • Его показатель запоминаемости был увеличен с 1,8% до 2,06%.

Пока все хорошо, и эта поездка была названа успешной!

По крайней мере, я так думал. Но я поспешил судить ...

Цифры врут (если неправильно посчитать)

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

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

Но на этом все не закончилось.

Мои расчеты на кое-что были неверными (следите за обновлениями, чтобы узнать, как мне удалось все это исправить!)

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

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

Это просто не входило в уравнение.

Для меня это было похоже на приближение грозы. У меня не было выбора, кроме как найти решение.

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