Это первый блог, написанный мной

«Когда становится тяжело, становится тяжело»

Оглавление

  1. Бизнес-задача
  2. Набор данных Описание
  3. Сопоставление машинного обучения и глубокого обучения
  4. Метрика оценки
  5. Исследовательский анализ данных
  6. Разработка функций
  7. Модели машинного обучения
  8. Результаты, полученные от моделей машинного обучения
  9. Неудачные эксперименты и результаты
  10. Существующее решение
  11. Окончательная модель или решение
  12. Скриншот результатов Kaggle
  13. Развертывание
  14. Будущая работа
  15. использованная литература
  16. Репозиторий на гитхабе
  17. Профиль Linkedin

«Успех должен заключаться не в подсчете очков, а в обучении»

1. Бизнес-задача

Цель этого тематического исследования — предложить подходящую цену продажи продавцу, который желает продать свой товар (обычно подержанный) на онлайн-платформе Mercari, которая связывает продавцов с покупателями. Постановка задачи касается прогнозирования цен на различные товары, будь то одежда, электронные гаджеты и т. д. Mercari — это организация в Японии, которая используется для продажи товаров через Интернет, которые могут быть новыми или бывшими в употреблении. Для онлайн-продавцов определить цену товара может быть сложной задачей. Это может быть полезно для онлайн-продавцов, чтобы автоматизировать действия по определению цены и сократить рабочую силу. Многие товары одного и того же типа имеют разную цену в зависимости от их торговых марок, их условий, сезонов и т. д., а также многих других функций, которые нам нужны. заключается в том, чтобы придумать некоторые технические характеристики и модель мл, чтобы получить наилучший результат, то есть максимально точную цену.

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

Это тематическое исследование основано на известном конкурсе Kaggle, проведенном в 2018 году: Mercari Price Suggestion Challenge (https://www.kaggle.com/c/mercari-price-suggestion-challenge)

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

2.Описание набора данных

https://www.kaggle.com/c/mercari-price-suggestion-challenge (https://www.kaggle.com/c/mercariprice-suggestion-challenge)

Файлы состоят из списка списков продуктов. Эти файлы разделены табуляцией.

  1. train_id : идентификатор листинга.
  2. name : название листинга. Обратите внимание, что мы очистили данные, удалив текст, похожий на цены (например, 20 долларов США), чтобы избежать утечки.
  3. item_condition_id: состояние товаров, предоставленных продавцом.
  4. category_name : категория объявления.
  5. brand_name :название бренда
  6. доставка: 1, если стоимость доставки оплачивается продавцом и 0 покупателем 8.
  7. item_description: полное описание товара.
  8. price : цена, по которой товар был продан. Это целевая переменная, которую вы будете прогнозировать. Единицей является доллар США.

3. Сопоставление машинного обучения/глубокого обучения

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

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

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

4. Метрика производительности

В качестве показателя производительности здесь используется среднеквадратическая ошибка журнала (RMSLE). Если x_i — прогнозируемая цена, а y_i — фактическая цена, то RSMLE между ними определяется по формуле:

Почему RSMLE не RMSE?

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

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

В этом сегменте выполняется глубокий анализ данных, и это будет полезно для понимания данных и их природы. Итак, давайте обсудим один за другим

5.1.1 УНИВЕРСАЛЬНЫЙ АНАЛИЗ ИМЕН

Наблюдение

  1. Вышеприведенный график представляет собой характеристику имени данных, которая показывает длину имени и количество продуктов, соответствующих именам этой длины.
  2. Так как ожидается, что название продукта не должно принадлежать тому, что оно должно быть снято и осмысленно, о том же говорит и этот сюжет.
  3. Более 3 миллионов товаров имеют длину имени, равную 4
  4. Количество продуктов с длиной имени 5 больше 2,5 миллионов и меньше 3 миллионов
  5. Количество продуктов с длиной имени 6 больше 2 миллионов и меньше 2,5 миллионов
  6. Из приведенного выше графика видно, что по мере увеличения длины имен количество продуктов уменьшается.

Наблюдение

  1. Ясно, что по мере увеличения длины продукта кривая становится крутой, что показывает, что название короткое и точное.

2. Самая длинная длина названия товара 17

5.1.2 УНИВЕРСАЛЬНЫЙ ПУНКТ_CONDITION_ID

Наблюдение

  1. Таким образом, есть четыре категории 1,2,3,4, которые описывают состояние продукта.

2. более 6,5 миллионов принадлежит 1 в состоянии id

3. Более 4 миллионов и менее 5 миллионов принадлежат 3 в условии id

4. Около 4 миллионов продуктов относятся к классу 2 по идентификатору состояния.

5. Было замечено резкое падение в классе 4 и 5, которое значительно меньше.

5.1.3 ОДНА ИМЯ КАТЕГОРИИ

Наблюдение

  1. Можно заметить, что category_name состоит из подкатегорий, разделенных разделителем «/».

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

3. Эти подкатегории называются cat1,cat2, cat3 sub_category.

4. Около 4 миллионов продуктов относятся к классу 2 по идентификатору состояния.

5. Было замечено резкое падение в классе 4 и 5, которое значительно меньше.

5.1.3 .1 ОДНОМЕРНАЯ КАТЕГОРИЯ 1

Наблюдение

  1. Приведенный выше график находится между категориями, и количество продуктов относится к этим категориям.
  2. Кажется, существует одиннадцать широких категорий, количество продуктов, принадлежащих к категории женщин, значительно выше, чем к любой другой, что составляет 664385.
  3. Остальные категории вместе с номером товара под ними указаны выше.

5.1.3 .2 ОДНОМЕРНАЯ КАТЕГОРИЯ 2

Наблюдение

  1. Сюжет примерно между топ-10 уровней 1 подкатегории и количества товаров
  2. Просто для удобства чтения сюжета выбрано 10 наиболее часто встречающихся подкатегорий
  3. Вышеприведенная кривая кажется неясной, поскольку на этом уровне категории Спортивная одежда, косметика, топы и блузки, обувь доступно 114 различных элементов или названий, число которых значительно выше, чем у любого другого.

5.1.3 .3 ОДНОМЕРНАЯ КАТЕГОРИЯ 3

Наблюдение

  1. Сюжет находится между 10 верхними уровнями, 2 подкатегориями и количеством продуктов.
  2. Приведенная выше кривая кажется неясной, поскольку на этом уровне категории доступно 864 различных элемента или имени, поэтому выбирается 10 лучших.
  3. Мы можем заметить, что количество продуктов уменьшилось, но уменьшение не резкое, статистика оказывается довольно близкой, наименьшее количество составляет 1, а наибольшее количество составляет 60177. Брюки, колготки, леггинсы. Это совершенно ясно из приведенных выше данных.

5.1.4 BRAND_NAME

Наблюдение

  1. Сюжет примерно между топ-10 брендов по частоте и количеству продуктов.
  2. Приведенная выше кривая кажется неясной, поскольку на этом уровне категории доступно 4810 различных элементов или имен.
  3. Из приведенных выше данных видно, что в этом наборе данных содержится 4810 уникальных торговых марок, включая одно отсутствующее название.

Наблюдение

  1. Это наблюдение из двух приведенных выше графиков.
  2. График выше примерно между 10 лучшими брендами и количеством продуктов.
  3. Из приведенных выше данных видно, что в этом наборе данных содержится 4810 уникальных торговых марок, включая одно отсутствующее название.
  4. Для анализа мы выбрали 10 лучших брендов и обнаружили, что существует очень резкое изменение в отсутствующем названии бренда, а среди брендов продукты розовых брендов занимают первое место в подсчете после отсутствующих названий, но разница гораздо меньше.
  5. Кроме того, есть некоторые бренды, у которых зарегистрирован только один продукт.

5.1.5 IS_SHIPPING

Наблюдение

  1. Вышеприведенная кривая находится между доставкой и подсчетом количества продуктов, количество отгруженных продуктов == 0 больше, чем количество отгруженных продуктов == 1.
  2. Таким образом, эта статистика может помочь предсказать, какая цена или диапазон цен отправлены == 0 или отправлены == 1 в дальнейшем анализе.
  3. Shiped== 0 represem=nt Доставка оплачивается продавцом, а Shiped==1 означает, что доставка оплачивается покупателем.

5.1.6 ПУНКТ_ОПИСАНИЕ

Наблюдение

  1. На приведенном выше графике показаны первые 10 продуктов с количеством слов, поэтому, чтобы сделать график аккуратным, я учитывал только первые 10 подсчетов.
  2. Диапазон длины описания варьируется от 3 до 245. Понятно, что количество товара с меньшим количеством слов в описании больше по сравнению с большим количеством слов в описании.
  3. В этих столбцах отсутствуют 4 значения.
  4. Выше учитывалось количество только 10 лучших продуктов вместе с их количеством слов.

5.1.7 ЦЕНА

Наблюдение

  1. это прайс в pdf
  2. большой диапазон продуктов от 0 до 250 в соответствии с приведенной выше кривой
  3. кривая крутая с заостренным концом не по Гауссу

Наблюдение

  1. мы можем наблюдать в приведенном выше cdf цены
  2. более 99% ценового диапазона данных от 0 до 250
  3. CDF показывает, как диапазон изменяется от 0 до примерно 350, затем кривая медленно движется к 1.

5.2.1 ДВУСТОРОННИЙ АНАЛИЗ ЦЕНЫ С SHIPPING_ID

Наблюдение

  1. анализ затруднен, так как график неясен
  2. давайте возьмем лог цены, а затем проанализируем зависимость

Наблюдение

  1. Вышеприведенный график представляет собой pdf-файл, а гистограмма цены относительно доставки оплачена или нет.

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

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

Наблюдение

  1. Это диаграмма между ценой и доставкой

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

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

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

5.2.2 ДВУСТОРОННИЙ АНАЛИЗ ЦЕНЫ С CONDITION_ID

Наблюдение

  1. Из приведенных выше двух графиков подтверждается, что точки сильно перекрываются.

2. Из диаграммы видно, что цена для condition_id =4 примерно меньше 1300, а для товара класса 5 цена меньше 750.

3. Это можно сделать из вышеприведенного блочного графика, гистограммы и PDF-файла сильно перекрываются.

4. Считается, что log_price более точно визуализирует эти наблюдения.

5.2.3 ДВУСТОРОННИЙ АНАЛИЗ BRAND_NAME AND PRICE

этот код группирует данные на основании того, указана ли им торговая марка или нет. и это полезно в анализе данных

Наблюдение

  1. Оба эксперимента не могут предсказать диапазон цен для продукта без торговой марки и с торговой маркой.

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

3. Кривая цен на бревна также объясняет то же самое

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

Заключение разведочного анализа данных

  • Из всего вышеперечисленного анализа данных делаются некоторые выводы
  • Во-первых, при рассмотрении одной или двух характеристик цена не может быть предсказана.
  • Такие функции, как condition_id и созданные функции, такие как is_brand, не могут указывать цену продукта.
  • столбцы brand_name, category, description состоят из nan или отсутствующих значений и обрабатываются
  • Имя категории представляет собой многоуровневую подкатегорию, поэтому выполняется предварительная обработка, чтобы разрушить эту иерархию, а затем выполняется EDA.
  • Большая часть цены находится в диапазоне (0,250]
  • Построение точечной диаграммы было бесполезным в качестве ящичковой диаграммы, а pdf показывает перекрытие данных.
  • Таким образом, можно сделать вывод, что простая модель с условием «если-иначе» не может решить эту проблему, и нам нужно воспользоваться помощью более высоких алгоритмов машинного обучения.
  • Следующая задача — характеристика или разработка признаков.

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

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

6.1 Название продукта и описание товараn

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

  1. Преобразование всех слов в нижний регистр.
  2. Удаление стоп-слов
  3. Удаление знаков препинания и специальных символов.
  4. Удаление нежелательных множественных пробелов
  5. Обработка буквенно-цифровых значений и так далее.

6.1.1. встраивание слов или преобразование слов в векторы

После описанных выше шагов предварительной обработки выполняется проектирование признаков. Каждое слово представлено в виде d-мерных плотных векторов. Слово для векторов создается двумя способами: один — это глубокое обучение, а другой — матричная факторизация. Чем больше значение d, тем больше информационный вектор, если корпус данных велик, значение d также велико, здесь d не является измерением данные, а d — размерность векторов, соответствующих каждому слову. Слово в вектор — это предварительно обученная модель на огромном количестве Википедии и других текстовых данных, которая дает нам векторное представление каждого слова, которое мы используем в качестве матрицы данных и вводим в наши традиционные модели машинного обучения. самые популярные представления лексики документов. Он способен фиксировать контекст слова в документе, семантическое и синтаксическое сходство, связь с другими словами и т. д. Что такое встраивание слов? Грубо говоря, это векторные представления определенного слова.

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

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

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

6.2. brand_name, item_category

6.2.1 Бренд_название

  1. на этом уровне категории доступно 4310 различных элементов или имен, включая неизвестные бренды или отсутствующие значения.
  2. этот признак считается категориальным признаком.
  3. one_hot_encoding выполняется для обработки этих функций, которые приводят к размерному вектору 4310.

6.2.2 item_category

  1. Можно заметить, что category_name состоит из подкатегорий, разделенных разделителем «/».
  2. Таким образом, эту иерархическую природу необходимо было решить, разбив каждую на отдельную подкатегорию.

3. Эти подкатегории называются cat1,cat2, cat3 sub_category.

6.2.2.1 категория 1

  1. одногорячее кодирование применяется к cat1.
  2. Результатом этого кода является 11-мерный вектор
  3. В этой категории присутствует 11 уникальных значений

6.2.2.2 категория 2

  1. onehotencoding применяется на cat2.
  2. Результатом этого кода является 116-мерный вектор.
  3. В этой категории присутствует 116 уникальных значений.

6.2.2.3 категория 3

  1. одногорячее кодирование применяется к cat3.
  2. Результатом этого кода является 872-мерный вектор.
  3. В этой категории присутствует 872 уникальных значения.

6.3 item_condition_id,доставка

  1. Выходные данные обеих функций являются одномерными.
  2. Эти признаки рассматривались как числовые признаки.

Окончательная матрица характеристик 6.4

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

7. Традиционные модели машинного обучения

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

7.1 Линейная модель

7.1.1 линейная регрессия

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

настройка параметра выполнена, а альфа-это гиперпараметр

7.2 нелинейная регрессия

7.2.1 CatBoost

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

настроенные гиперпараметры: learning_rate, depth, l2_leaf_reg

7.2.2 легкий гбм

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

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

Learning_rate, max_depth, num_leaves, min_child_samples — настроенный гиперпараметр.

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

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

из приведенной выше таблицы было сделано несколько наблюдений -

  1. линейная регрессия, примененная к матрице данных после извлечения вышеуказанных признаков, и полученный показатель перепродажи равен 0,6720.
  2. световой пистолет, примененный к матрице данных после извлечения вышеуказанных признаков, и полученный показатель перепродажи равен 0,5857.
  3. Повышение кота, примененное к матрице данных после извлечения вышеуказанных признаков, и полученный показатель перепродажи равен 0,5785.

9. Неудачные эксперименты и некоторые выводы

  1. Случайный лес и xgboost применялись к этой матрице данных, но они были очень дорогими, когда дело доходит до временной сложности.
  2. Кроме того, вышеупомянутая разработка функций также довольно дорогая, когда речь идет о памяти.
  3. поскольку окончательная матрица данных, полученная после объединения всей матрицы признаков, приводит к ошибке памяти на обычном ПК или в colab.
  4. приведенная выше модель была обучена на оперативной памяти большой емкости, что невозможно.
  5. Извлечение функций играет жизненно важную роль, однако необходимо обратить внимание на то, как использовать ограниченные ресурсы, такие как память и т. д., при добавлении функций.
  6. результат вышеуказанных экспериментов также не является удовлетворительным.
  7. поэтому, получив знания из вышеупомянутых экспериментов, это побуждает нас искать существующие решения и способы, которыми они должны использовать память.

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

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

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

11. Окончательная модель или решение

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

  1. И имя, и текст кодируются с использованием вложений.
  2. Векторы перчаток используются в качестве вложений.
  3. item_condition_id и доставка используются как есть

4. На рис. выше показана архитектура, которая используется в окончательном решении.
5. Это непоследовательная модель, использующая lstm, conv1d и простой млп.
6. После встраивания слоев lstm и conv1d используются один за другим, как показано на рис. выше.
7. Вышеупомянутая архитектура соблюдается и позволяет достичь среднеквадратичного значения 0,47, что намного ниже, чем у всех моделей.

12. Снимок экрана с Kaggle

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

это видео для развертывания модели с использованием фляги

посетите репозиторий, указанный ниже, для получения кода.

14. Будущая работа

  1. еще один слой или дополнительная архитектура могут улучшить оценку.
  2. использование матрицы разреженных данных в Keras является довольно распространенной практикой, как и первоклассное решение.
  3. FTRL, FMTRL могут быть использованы в будущей работе.
  4. для традиционного машинного обучения извлечение функций должно выполняться таким образом, чтобы уменьшить использование памяти.
  5. использование сентиментальной оценки в качестве одной из функций может улучшить результат, который будет опробован в будущем.

15. Ссылки

  1. https://medium.com/swlh/mercari-price-suggestion-challenge-an-end-to-end-machine-learning-case-study-4a6d833fa1c7
  2. https://medium.com/analytics-vidhya/mercari-price-suggestion-challenge-a-machine-learning-regression-case-study-9d776d5293a0
  3. https://www.kaggle.com/arunsingh314/mercari-ml-models
  4. https://www.kaggle.com/ilyasedelnikov/20200905-mercarilightgbm
  5. https://www.kaggle.com/pjarbas/electronics-prices-prediction
  6. https://www.kaggle.com/arunsingh314/mercari-mlp-0-3848
  7. https://www.youtube.com/watch?v=Um1e6psCj_o&ab_channel=Bruce Шарп
  8. особая благодарность и уважение https://www.appliedaicourse.com

16. Репозиторий GitHub



17. Репозиторий LinkedIn

linkedin.com/in/shivam-khandelwal-b35749107