Цель

На сайте электронной коммерции amazon мы соберем данные о женской одежде и порекомендуем пользователю аналогичный тип одежды (но не совсем такой же), который он / она может купить.

Мы увидим следующие шаги один за другим

  1. Получение данных.
  2. Очистка данных.
  3. Предварительная обработка текста.
  4. Текстовые рекомендации по продукту.
  5. Рекомендации на основе изображений.
  6. A / B тестирование.

Сбор данных

Мы берем данные из API рекламы продуктов Amazon, потому что удаление веб-страниц с amazon.com запрещено в соответствии с их политикой.

Вы можете перейти по этой ссылке, чтобы получить свои данные https://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html

Используйте REST API для получения данных с сайта и сохранения их в файле «fashion.json».

В этом случае мы будем работать с данными примерно 1,83 000 женщин-лидеров.

Получите данные, используя эти нижеприведенные комментарии

импортировать панд как pd

data = pd.read_json (fashion.json)

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

Это все функции, присутствующие в моем наборе данных.

Но мы собираемся использовать только 7 функций из этих 19, мы обнаружили, что из 19 функций 7 наиболее актуальны.

1. asin (стандартный идентификационный номер Amazon)
2. марка (марка, которой принадлежит продукт)
3. цвет (информация о цвете одежды, она может содержать много цветов, например: красный и черные полосы)
4. product_type_name (тип одежды, например: РУБАШКА / ФУТБОЛКА)
5. medium_image_url (URL-адрес изображения)
6. title (название продукта. )
7. formatted_price (цена товара)

ОЧИСТКА ДАННЫХ

УДАЛЕНИЕ ОТСУТСТВУЮЩЕЙ СТОИМОСТИ

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

Анализ product_type_name

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

УДАЛЕНИЕ ДУБЛИКАЦИОННЫХ ПРЕДМЕТОВ

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

Удаление дубликатов, часть 1

В этом случае мы собираемся удалить ту одежду, которая отличается от других заголовков только на последние 2/3 слова. Мы оставим только один из этих предметов. С помощью этого процесса мы можем удалить вышеупомянутые два типа дублирования. мы собираемся отсортировать все данные в алфавитном порядке, а затем удалить продукты, которые отличаются только в последних 2 или 3 словах.

Удаление дубликатов, часть 2

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

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

ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ТЕКСТА

ОСТАНОВИТЬ УДАЛЕНИЕ СЛОВ

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

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

STEMMING

Мы делаем корень, чтобы получить корневое слово из слова, удаляя суффикс или префикс на основе нескольких правил. Здесь корневые слова не обязательно должны быть словарным словом. Пример - «Studies» преобразованы в «studi» после стемминга. В нашем случае мы попробовали стемминг, но это не дало хорошего результата. Поэтому мы не собираемся применять это.

ЛЕММАТИЗАТОН

Он сводится к корневому синониму. Это всегда будет словарное слово. Пример - «учеба» будет преобразована в «учебу». Но мы не идем на это еще и потому, что это тоже дает плохой результат.

ПОДОБИЕ ПРОДУКТА, ОСНОВАННОЕ НА ТЕКСТЕ

  1. Мешок слов в названиях продуктов

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

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

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

2. СХОДСТВО ПРОДУКТОВ НА ОСНОВЕ TF-IDF

TF - измеряет, сколько раз слово встречается в документе (в данном случае в одном заголовке), разделенное на общее количество слов, присутствующих в документе.

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

TF-IDF = TF * IDF.

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

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

3. СХОДСТВО ПРОДУКТОВ НА ОСНОВЕ IDF

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

4.СРЕДНИЕ СЛОВА ДО СХОДСТВА ПРОДУКТА НА ОСНОВЕ VEC

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

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

Эта уже обученная модель назначит 300-мерный вектор каждому слову заголовка. Мы собираемся просуммировать все векторы слов одного заголовка и разделить его на количество слов, присутствующих в заголовке (это называется средним словом для вектора). После этого мы снова собираемся вычислить евклидово расстояние между продуктами запроса и другими продуктами, присутствующими в наборе данных.

В этом методе мы получаем следующие похожие продукты:

Взвешенное слово IDF для VEC

Здесь, после вычисления вектора каждого слова, мы вычисляем IDF каждого слова и умножаем их оба для каждого слова и, наконец, суммируем все векторы каждого слова, присутствующего в заголовке. После этого мы делим его суммированием всех слов IDF присутствует в этом заголовке (как мы упоминали ранее, что в наших данных каждый заголовок обычно не повторяет никаких слов, поэтому мы берем слово, взвешенное по IDF, в vec, а не слово, взвешенное по tf-idf, в vec).

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

ШАГИ

  1. Преобразуйте все слова в 300-мерный вектор, используя слово в вектор.
  2. Теперь вычислите IDF каждого слова, представленного в заголовке Ti.
  3. Теперь умножьте вектор и IDF для каждого слова в заголовке.
  4. Теперь просуммируйте все значения шага 3 для одного заголовка.
  5. Теперь разделите значение step4 на суммирование всех IDF одного заголовка.

6. ВЕСОВОЕ ПОДОБИЕ С ИСПОЛЬЗОВАНИЕМ БРЕНДА И ЦВЕТА

Теперь в этом методе мы добавляем фирменную и цветовую характеристику с заголовком. Для цвета мы создаем вектор размерности, равной количеству уникальных цветов, присутствующих во всем корпусе. Используя одну горячую кодировку, мы делаем только одно значение цвета в векторе. равны «1», остальные остаются «0».

Аналогично для бренда мы делаем одно горячее кодирование.

После этого мы присваиваем вес каждому из этих векторов (название, бренд, цвет) в соответствии с нашим желанием. Этот вес будет отдавать приоритет какой-то функции над другой функцией.

Здесь каждый присвоенный вес будет умножен на каждый элемент векторов (вектор заголовка, вектор бренда, вектор цвета). После этого объедините эти три вектора и вычислите евклидово расстояние, чтобы найти сходство.

В нашей записной книжке мы даем вес (w1) вектору заголовка и вес (w2) как бренду, так и цветному вектору. (В ноутбуке мы применяем этот метод немного по-другому. [{((W1) * distance ( title_vector)) + (w2) * (расстояние (brand_vector, color_vector))} / (w1 + w2)]

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

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

7. ПОДОБИЕ ПРОДУКТА НА ОСНОВЕ ВИЗУАЛЬНОГО ПОДОБИЯ

Здесь мы конвертируем каждое изображение продукта в плотный вектор с помощью CNN, а затем вычисляем расстояние каждого вектора от вектора запроса для измерения сходства. Здесь мы используем сеть VGG16 для преобразования (224 224) пиксельного изображения в 25088-мерный плотный вектор.

А / Б ТЕСТИРОВАНИЕ

Какой из перечисленных выше методов выбрать для рекомендации?

Потому что в приведенном выше мы видим только продукт «1», какой алгоритм более эффективен. Но этот процесс неверен, потому что в реальной жизни будут миллиарды продуктов. Сейчас невозможно выполнить все вышеупомянутые методы для каждого продукта и после этого сравнивая эффективность.

Так что делать?

Мы должны провести статистическое тестирование, известное как A / B-тестирование.

При A / B-тестировании мы разделяем наш набор пользователей на неперекрывающиеся разные наборы, и теперь мы рекомендуем каждую группу пользователей разными типами вышеупомянутых методов. Эти неперекрывающиеся наборы или группы выбираются случайным образом. После этого мы должны увидеть какой метод рекомендации дает больше продаж. В соответствии с этим мы должны выбрать один метод.