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

Улучшает все

Вот почему категории важны и как их использовать:

  1. Лучшее взаимодействие с пользователем. Пользователи, которые просматривают страницы, могут интуитивно пробираться через Blibli, чтобы найти то, что они хотят, вместо того, чтобы пролистывать страницы без конца. Если пользователи хотят выполнить поиск в телефонах Android, они просто найдут их в категории Мобильные телефоны, планшеты и гаджеты ›Мобильные телефоны› Android. Упрощение навигации по Blibli - один из наиболее важных элементов пользовательского интерфейса, который приведет к более высокому коэффициенту конверсии.
  2. Повышение релевантности поиска. Правильная категоризация позволяет нашей поисковой системе быстрее находить товары и предоставлять более точные и релевантные товары.
  3. Убедитесь, что продавцы помещают товары в правильную категорию. Продавцы уверены, что их товары видны нашим покупателям. Тогда покупатели не пропустят ни одного товара только потому, что его потеряли.

Что мы делаем?

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

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

Данные

В нашем хранилище данных зарегистрировано более 8 миллионов продуктов, которые уже классифицированы и обрабатываются вручную. Но, как упоминалось ранее, это не заслуживает 100% доверия. Что мы можем с этим поделать. Мы доверяем машинному обучению! Это потому, что у нас нет других внешних данных, которые можно было бы использовать, которые полностью соответствуют нашим категориям. Вот как выглядят данные в нашем случае

Как видно из приведенных выше примеров, категории, которые мы хотим прогнозировать, являются иерархическими и имеют разные уровни. В одном из примеров есть категории с 4 уровнями: Bliblimart на уровне 1, Minuman на уровне 2, Susu на уровне 3 и т. Д. У другого всего 3 уровня. Итак, мы выбираем самую низкую категорию, которая есть у каждого продукта, то есть уровень 3. Все уровни объединяются и рассматриваются как одна категория.

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

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

Время игры!

Подготовьте набор данных. Прежде чем применять к ним алгоритмы машинного обучения, текстовые данные необходимо преобразовать в числовое представление. Используемый нами метод - токенизатор от Keras. Этот процесс также охватывает этап предварительной обработки, такой как удаление специальных символов, преобразование всех в нижний регистр и добавление слов, содержащих более трех букв. Перед этим разделите данные на 80% для обучения и 20% для проверки.

Создание экземпляра и обучение модели. После преобразования текстовых данных в числовое представление можно применять модели классификации. После экспериментов с различными алгоритмами классификации мы остановились на RNN с использованием Long Short Term Memory (LSTM).

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

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

Следующий уровень в нашей сети Keras LSTM - это слой исключения для предотвращения переобучения. Наконец, к выходному слою применена активация softmax. Ниже приводится полное описание модели.

Начало конца

Мы обучили и протестировали более сотни моделей, чтобы достичь наилучшего сочетания скорости обучения, эпохи и архитектуры, и дали результаты с точностью 87,89%, точностью 87,64% и 87,84% при запоминании со средним показателем f1, равным 0,875.

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

Постоянное улучшение лучше, чем отложенное совершенство - Марк Твен