Data Scientist. Рекомендательные системы

Содержание

Слайд 2

План работы:

1. Постановка задачи, исходные данные и что с ними нужно сделать.
2.

План работы: 1. Постановка задачи, исходные данные и что с ними нужно
Подсчет топ 10 самых популярных товаров для каждого пользователя и оценка этого подсчета –
как идеал, к которому мы будем стремиться.
3. Roadmap работы, какие подходы и какие библиотеки использовались.
3.1 Implicit ALS и kNN
3.2 LightFM
3.3 Нейросеть
4. Подведение итогов и вывод.

Слайд 3

Постановка задачи:

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

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

Вот это

Превратить вот в это

Получив при этом скор (MAP@10)

>= 0,2094

Но, стремится мы будем сюда ?

> 0,25

Слайд 4

Roadmap экспериментов:

Постановка задачи

«Наивный» алгоритм

Implicit ALS

Implicit kNN

LightFM

Работают на основе разряженных матриц

Первичный анализ данных

Нейронная

Roadmap экспериментов: Постановка задачи «Наивный» алгоритм Implicit ALS Implicit kNN LightFM Работают
сеть

Выбор лучшей системы на основе полученных скоров

Слайд 5

Разбор алгоритмов:

С ним все просто: мы группируем данные по пользователю и считаем

Разбор алгоритмов: С ним все просто: мы группируем данные по пользователю и
кол-во купленных за всю историю продуктов. В результате будем иметь для каждого пользователя такую картину: Повторим эту операцию 100 000 раз (для каждого пользователя) и преобразовав к итоговому виду, получим скор 0.27841.
Это будет наш эталон, к нему мы будем стремиться, однако мы не можем назвать такой подход рекомендательной системой, ведь мы ничего нового не предлагаем пользователю, а принимаем в учет только те товары, про которые он сам прекрасно знает и, более того, любит, т к это его топ.

LightFM

(Матрица формируется не из конкретных данных, а из их индексов)

Нельзя просто так взять и сделать матрицу из списка продуктов/пользователей, необходим маппинг по индексам.
При создании модели можно настраивать и изменять: (функцию потерь, специальные доп. фичи, кол-во эпох обучения, кол-во ядер процессора)
Лучший скор - 0.05358
Ходят слухи, что алгоритм может быть довольно эффективен при правильной подготовке тех самых фичей.

Первичный анализ и «Наивный алгоритм»

Слайд 6

Разбор алгоритмов:

Impllicit:

Удобная и быстрая подготовка данных
Возможность явно передать прямо в библ. модель

Разбор алгоритмов: Impllicit: Удобная и быстрая подготовка данных Возможность явно передать прямо
кол-во товаров, которое мы хотим рекомендовать.
Идеальный вариант, если нужно что-то кому-то быстро предложить

ALS (Alternating Least Squares)

kNN (k Nearest Neighbours)

Основные параметры настройки факторы и итерации (factors, iterations)
Наиболее удачный вариант в нашем случае: factors=30, iterations=8
Лучший скор - 0.05377
Существенно не дотягивает до наших целей

Основные параметры настройки - собственно кол-во ближайших соседей
Наиболее удачный вариант в нашем случае: k=10 (10 соседей)
Лучший скор - 0.12458
Также не дотягивает до таргета, но уже неплохо

(При подготовке данных необходимо категориальное кодирование)

Примечание: в один прекрасный день перестал устанавливаться в Colab стандартным способом (!pip install). Помогла только такая матерная конструкция:
!sudo -H python3 -m pip install implicit --no-cache --force-reinstall --log ./implicit.txt

Слайд 7

Несколько слов о разряженных матрицах.

Ключевым элементов в работе вышеописанных библиотек является т

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

Для работы на понадобится 2 такие матрицы: одна «item-user» и другая «user-item». Первую будем использовать для обучения алгоритма, а вторую для предсказаний. Можно так же транспонировать одну матрицу и использовать для того и другого, но лучше срабатывает первый способ.
После того как матрицы готовы остается только обучить на одной из них алгоритмы и после предсказать(порекомендовать) на другой требуемый топ товаров для желаемого пользователя или списка пользователей.

Исходная группировка

Кодированная разряженная матрица

Слайд 8

Алгоритм на основе нейронной сети.

В качестве вишенки на торте и чего-то по-настоящему

Алгоритм на основе нейронной сети. В качестве вишенки на торте и чего-то
рабочего было решено воспользоваться нейронной сетью.
Исходный набор признаков был преобразован и дополнен, и в итоге получилось 3 признака для пользователей и 6 для продуктов. В качестве таргета был взят факт повторного заказа того или иного продукта конкретным юзером. Весь сет был разбит на трэйн и тест выборки по принципу разницы между первым и последним номера заказа. Если разница была больше 1, то такие строки уходили в трэйн, если меньше – то в тест.
Идея была в том, чтобы по величине сырой сигмоиды после предсказаний судить о «силе» или весе того или иного продукта для конкретного пользователя. Отсортировав все эти продукты по убыванию значения сигмоиды, можно было получить топ N. Не всегда это был топ 10, иногда больше, иногда меньше, ведь с некоторыми продуктами некоторые пользователи могли вовсе не взаимодействовать.
Итоговый сет из 10 продуктов добивался случайным образом из исторического топ10 для каждого юзера. Также он добивался и рандомом из всех возможных продуктов, но добивать из топ10 было выгодней для скора приблизительно на 0.015. Повторы естественно исключались.

Слайд 9

Архитектура нейросети:

2 входа отдельно для продуктовых и пользовательских признаков

Превращаем данные в одномерный

Архитектура нейросети: 2 входа отдельно для продуктовых и пользовательских признаков Превращаем данные
тензор

Объединение

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

Слайд 10

Интересные наблюдения.

Приведу две наиболее удачные конфигурации сетей: одна дала наилучшие финальные рекомендации,

Интересные наблюдения. Приведу две наиболее удачные конфигурации сетей: одна дала наилучшие финальные
другая наивысшую точность предсказаний (accuracy):

Архитектура показана на пред. cлайде, Adam, lr=1e-3, reg. l2=0.01

4 dense(128, 64, 32, 16), Adam, lr=1e-3, reg. l2=0.001

Слайд 11

Формирование рекомендаций по предсказаниям нейросети:

Вид итогового датафрейма, отсортированного по величине выхода сигмоиды:

Как

Формирование рекомендаций по предсказаниям нейросети: Вид итогового датафрейма, отсортированного по величине выхода
было сказано ранее, формируем топ10 для каждого пользователя, где нужно дополняем данные или исключаем наименее популярные

В результате цель была достигнута и получен MAP@10 - 0.27080, что очень близко к оценке исторического топ10 пользователей.

Имя файла: Data-Scientist.-Рекомендательные-системы.pptx
Количество просмотров: 25
Количество скачиваний: 0