«Данные становятся новым сырьем для бизнеса». — Крейг Манди

Система предложения и рекомендации по цене продукта — это проблема, которая в настоящее время довольно часто встречается на веб-сайте электронной коммерции. Когда были придуманы термины «машинное обучение» и «глубокое обучение», примером этого является такая фирма, как Mercari, которая является крупнейшим в Японии интернет-магазином, основанным в 1991 году и управляемым рынком с JPY (японские иены) 10 миллионов в ежемесячные транзакции?

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

Один из этих свитеров стоил 335 долларов, а другой — 9,99 долларов. Сможете ли вы угадать, какой из них продается по какой цене? Небольшие детали могут означать большие различия в цене.

Это именно та проблема, которую Mercari бросила вызов сообществу Kaggle, с призовым фондом в 100 000 долларов.

Оглавление

  1. Проблема бизнеса.
  2. Источник данных/извлечение данных.
  3. Метрики оценки.
  4. Существующее решение.
  5. Подход первого разреза.
  6. Исследовательский анализ данных (EDA).
  7. Особенности инженерии.
  8. Модели машинного обучения.
  9. Модели глубокого обучения.
  10. Развертывание.
  11. Будущая работа и улучшения.
  12. Использованная литература.

1. Деловая проблема.

Самый важный и сложный аспект путешествия в науку о данных — понять заявленную постановку задачи.

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

Бизнес-цели и ограничения

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

Теперь я расскажу вам шаг за шагом о методах, которые я использовал для решения этой проблемы, и о том, как я попал в 6% лучших (на 121-м месте) в таблице лидеров Kaggle. Конкурс давно закончился

2. Источник данных/извлечение данных.

Данные предоставляются Kaggle в двух файлах: один для обучения, а другой для тестирования. Учебный файл содержит около 1,4 миллиона записей, тогда как тестовый файл содержит около 3 миллионов записей. Файлы имеют формат .tsv и имеют размер 735 МБ и 325 МБ соответственно.

(1) имя: - Название листинга. Обратите внимание, что мы очистили данные, удалив текст, похожий на цены (например, «Хороший продукт за 20 долларов США»), чтобы избежать утечки. Эти удаленные цены представлены как (Хороший продукт по адресу).

(2) item_condition_id: состояние товаров, предоставленных продавцом.

(3) category_name:-Категория листинга 3

(4) brand_name: - Торговая марка продукта.

(5) цена: цена, по которой товар был продан. Это целевая переменная, которую вы будете прогнозировать. Единицей является доллар США. Этот столбец не существует в тесте. tsv, так как это то, что вы будете предсказывать.

(6) доставка: -1, если стоимость доставки оплачивается продавцом и 0 покупателем.

(7) item_description: — полное описание предмета. Обратите внимание, что мы очистили данные, чтобы удалить текст, похожий на цены (например, 200 долларов США).

3. Показатели оценки.

RMSLE=среднеквадратичная логарифмическая ошибка.

n = общее количество наблюдений.

p=прогнозируемое значение.

а=фактическое значение.

log(y)=натуральный логарифм y.

Выбор метрики обусловлен следующей причиной.

  • Он устойчив к выбросам.
  • Он масштабно инвариантен.

4. Существующее решение.

(a) Первое решение: –

Павел и Константин выиграли соревнование с большим отрывом, набрав всего 83 строки кода.

• Объединить характеристику имени и характеристику бренда.

• Объединить функцию item_description и categorical_name.

• Только 5 функций: имя, текст, покупка, описание товара и цена.

• Применить векторизатор TFIDF к тексту и item_description.

Двойной размер пакета не снижает скорость обучения

• Некоторая парализация: они обучают 4 модели параллельно.

(b) Другое решение:-

• Применить систему голосования: - предсказанная_цена=SGDRegression*0,60+Ridge*0,18+LGBM*0,10+Regressor*0,12.

• Применять модель GRU с использованием встраивания слов Glove вместо LSTM, поскольку это занимает больше времени, чем GRU.

• Используйте простой многоуровневый персептрон (он дает низкий RMSLE)

• Создайте 3 или 4 модели глубокого обучения и примените систему голосования.

(c) Модели Mercari RNN + 2Ridge с примечаниями (~0,42755)

  • Создайте модель, используя RNN, Ridge и RidgeCV, которые достигают RMSLE примерно 42%.
  • использовать слой GRU для текстовых функций более 300 тыс. функций для моделей Ridge.
  • используйте небольшой размер партии с эпохами 2.

5. Подход первого разреза.

• Только два объекта содержат значения NULL brand_name 42,67% и category_name 0,42%. Преобразуйте значения NULL brand_name в новый бренд с именем «missing_brand» и удалите строки, содержащие отсутствующее имя category_name.

• В ценовых функциях минимальное значение цены равно 0 долларов, а максимальное — 2009 долларов. Я думаю, что в данных есть выбросы, потому что ни один продукт не является бесплатным. цена следует за логарифмическим нормальным распределением, преобразуя его в распределение Гаусса.

• Название_Категории: - Содержит два «/».

любит:-Женщины/Ювелирные изделия/Ожерелья.

Преобразуйте название категории в три разных функции main_category, sub_category, item_category.

Данные, содержащие текстовую информацию.

item_description и имя преобразуются в

(i) Примените BOW, TFIDF, Avg W2V, TFIDF Avg W2V, преобразуйте его в разреженный вектор, после чего примените модели машинного обучения.

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

• Используйте показатель полярности для функций item_description и name.

• Используйте Ridge, Linear Regression, Random Forest, AdaBoost Regressor, Bagging Regressor, XGBoost Regressor, LGBM Regressor, выберите 4 лучшие модели и регрессор голосования.

• Создайте 3 или 4 модели глубокого обучения с помощью функции встраивания Word в текст с настройкой гиперпараметров и примените регрессор голосования.

6. Исследовательский анализ данных (EDA).

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

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

Анализ цены (целевая переменная)

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

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

Мы можем заметить, что 99 процентов затрат составляют менее 170 долларов, если посмотреть на цены в вышеупомянутых процентилях. Выбросы – это цены, намного превышающие средние. На данный момент доступны два варианта. Наша модель никогда не научится прогнозировать более высокие цены, поскольку мы отвергаем выбросы. Это стоит менее 2000 долларов, но больше 5 долларов.

Примените преобразование Бокса-Кокса к цене.

Из графика Q-Q видно, что распределение не является полностью гауссовым.

Анализ состояния элемента

Значение 1 для идентификатора состояния элемента является наиболее распространенным в данных. В более чем 6 миллионах записей есть товары со значением идентификатора состояния товара, равным 1, а значение идентификатора состояния товара, равное 5, является наименее повторяющимся среди всех товаров.

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

Можно сказать, что log_price равномерно распределен для каждого из item_condition_id.

Анализ состояния доставки

  • Мы можем заметить, что большую часть расходов по доставке несут исключительно покупатели. (56%)
  • 44,0% товаров, стоимость доставки которых оплачивается продавцами.

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

Анализ колонки брендов

Возьмем топ-15 брендов наиболее часто повторяющихся товаров в данных.

Взяв за отправную точку топ-15 самых дорогих брендов данных.

Облако слов Бренд (Victoria Secret, пропавший, розовый, Michael kors, Adidas) является наиболее распространенным брендом.

Облако слов самого дорогого бренда (розовый, отсутствует, victoria secret, Nike) — это самый дорогой бренд.

Анализ столбца имени.

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

Bundle, Reserved и Converse — это первые три названия продуктов, которые чаще всего повторяются. В данных содержится около 2000 продуктов Bundle.

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

Облако слов имени (бесплатный корабль, черный, бренд, новый, розовый) является наиболее частым словом.

Анализ столбца main_category.

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

Возьмем 15 лучших товаров main_category, которые в данных чаще всего имеют более высокие цены.

Облако слов из main_category наиболее часто встречающееся слово (женщины, дети, электроника, красота).

Анализ столбца sub_category.

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

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

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

Анализ столбца item_category.

Возьмем 15 лучших item_category продуктов, которые наиболее часто повторяются в данных, и почти 60 000 продуктов имеют брюки, колготки, легги в качестве item_category.

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

Облако слов item_category наиболее часто встречающееся слово (футболки, брюки, колготки, макияж, рубашки, верх).

Корреляция между числовыми переменными.

7. Разработка функций.

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

Разделить категории на три части.

Предварительно обработать текстовые данные.

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

  • Удалить знак смайликов.
  • Расконтрактуйте текст. Например, нельзя —› нельзя; Я я; я -› я буду
  • Удалить знаки препинания и лишние пробелы
  • Удалите стоп-слова для item_description.

Добавьте дешевые и дорогие бренды.

Оценка тональности.

⑤ Введите отсутствующий бренд, используя столбец item_description и имя.

8. Модели машинного обучения.

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

SGD-регрессорr. Это регрессионная модель, в которой используется метод «стохастического градиентного спуска». Оценка по резюме составляет 48,87%.

Регрессор гребня: это также модель линейной регрессии с регуляризацией L2. Регуляризация L2, безусловно, уменьшит веса для менее важных функций, но, в отличие от L1, она никогда не уменьшит их до нуля. Это дало оценку резюме 48,89%.

Ridge CV: это также модель линейной регрессии с регуляризацией L2. Было показано, что это дает лучшие результаты по сравнению с двумя вышеупомянутыми регрессионными моделями. Оценка по резюме составляет 45,24%.

LGBM: это упрощенная версия модели повышения градиента. Это ансамблевая модель на основе дерева. Оценка по резюме составляет 48,36%.

После этого применяется ансамблевая модель.

9. Модели глубокого обучения.

В конце концов, я использую методы глубокого обучения (DL). Модели, с которыми я работал, представлены ниже.

• Простые методы глубокого обучения (DL).

• Модель LSTM с встраиванием перчаток, встраиванием быстрого текста и простой моделью LSTM без веса.

• 1D CNN с использованием Glove Embedded, Fast text Embedding и простой 1D-модели без веса.

  • Комбинация 1D CNN и LSTM с использованием быстрого встраивания текста.

Простая модель многослойного персептрона (MLP)

«Жизнь действительно проста, но мы настаиваем на том, чтобы ее усложнить» — Конфуций.

Обучите три модели с одинаковой архитектурой, но с разной скоростью отсева и скоростью обучения.

LSTM-модель

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

• Используйте слой внедрения быстрого текста, чтобы получить RMSLE примерно 37,71 % для данных Train и 41,68 % для тестовых данных.

1D модель CNN

Я решил использовать слой 1D CNN в своем проекте, так как был уверен, что модели DL будут работать лучше, чем стандартные методы ML. Для текстовых данных обычно используется слой 1D CNN. Он свертывается только в одномерном пространстве (и тексты находятся в одномерном). Я использовал встраивание 300 измерений для текстового представления и объединил все числовые функции. Он будет обработан слоем 1D CNN, а затем слоем MaxPooling. Здесь я подправил модель, пытаясь немного усложнить ее, включив пропущенные соединения и конкатенации.

Используйте сложную архитектуру для 1D CNN + LSTM.

• Используйте слой внедрения быстрого текста, чтобы получить RMSLE приблизительно 36 % для данных обучения и 44 % для тестовых данных.

Используйте более сложную архитектуру для 1D CNN + LSTM.

• Используйте слой внедрения быстрого текста, чтобы получить RMSLE приблизительно 40 % для данных обучения и 42 % для тестовых данных.

10. Развертывание.

Я использовал Flask для создания веб-приложения, а затем развернул модель в Amazon AWS.
Вот небольшое видео о моем развернутом приложении в действии.

11. Будущая работа и улучшения.

● Мы можем попробовать другие типы вложений слов, такие как вложения Word2Vec, Tfidf Word2Vec.

● Попробуйте использовать больше данных. найти данные из веб-скрапинга.

● В этой теме я также хотел бы попробовать сверточные нейронные сети.

12. Ссылки.

Профиль LinkedIn



Ссылка на гитхаб