Если бы компания могла создавать продукты, которые интересуют клиентов? Представьте, какую прибыль получила компания.

В этом может помочь наука о данных.

  1. Обзор проекта

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

2. Постановка проблемы

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

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

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

Площадь под кривой

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

AUC имеет диапазон [0, 1]. Чем больше значение, тем лучше производительность нашей модели.

4. Исследование данных.

4.1 Набор данных

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

4.2 Анализ данных

Как мы видим на рисунке 1, количество строк равно 180275, а количество столбцов равно 21. Мы можем видеть на рисунке 2, что из 21 атрибута набора данных 14 из них имеют пропущенные значения и среди них, 11 числовые.

В описании типов данных целевой класс, соответствующий атрибуту Interest, является плавающим типом. Поскольку целевой атрибут имеет только два значения 0 и 1, и во избежание путаницы, поскольку мы работаем с проблемой классификации, мы преобразуем тип данных целевого класса в объект. Еще одно обнаруженное нами несоответствие данных связано с типом данных атрибута Has_lid. Поскольку он имеет только два уникальных значения, он не обязательно должен быть плавающего типа, и по этой причине он также будет преобразован.

5. Визуализация

Еще один способ начать изучение одной переменной — использовать гистограмму. Гистограмма делит переменную на интервалы, подсчитывает точки данных в каждом интервале и показывает интервалы по оси x и подсчеты по оси y.

Я использую библиотеку seaborn, чтобы узнать распределение числовых атрибутов моего набора данных. На рисунке 3 мы можем заметить, что существует большее количество продуктов с емкостью в литрах от 4 до 7 литров.

Мы также можем наблюдать диспропорцию в целевом классе.

Корреляция

С помощью метода dataframe.corr(), доступного в пандах, можно показать корреляцию между всеми числовыми атрибутами набора данных. На рисунке 4 мы видим корреляцию выше 0,5 для атрибутов высоты, емкости и ширины.

6. Этапы предварительной обработки данных

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

  1. Если количество пропущенных значений незначительно, значения могут быть удалены.
  2. пропущенные значения можно заменить средним значением в этом столбце.
  3. Использование методов интерполяции для заполнения пропущенных значений.
  4. Наиболее частое значение категории или создание новой категории для категориальных данных.

Для заполнения недостающих значений атрибута Вместимость было рассмотрено уравнение объема. Продукты с формой круга Я использую следующее уравнение. V = 4/3 * пи * г³. Предполагая, что r = ширина/2,0.

Изделия прямоугольной или квадратной формы использую по формуле = (длина * ширина * высота) / 1000

7. Реализация
Перед использованием алгоритма машинного обучения были созданы фиктивные переменные для категориальных переменных.
Кодировщик меток — очень эффективный инструмент для кодирования уровней категориальных признаков в числовые значения. Другой используемый метод — One Hot Encoder, который берет столбец с категориальными данными, закодированными метками, а затем разбивает столбец на несколько столбцов. Числа заменяются на 1 и 0, в зависимости от того, какой столбец имеет какое значение. Когда мы использовали кодировщик Label, мы могли сбить нашу модель с толку, думая, что в столбце есть данные с каким-то порядком или иерархией, когда у нас их явно нет. Чтобы избежать этого, мы «OneHotEncode» этот столбец. Из-за большого количества цветов, которые у нас есть в продуктах, мы будем применять Label Encoder к атрибуту цвета, а для других атрибутов мы будем применять One Hot Encoder.

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

7.3 Моделирование

На этом этапе я буду использовать Random Forest и LGBMClassifier для обучения набора данных. Random Forest и LGBM — это методы на основе ансамбля, которые создают набор классификаторов, решения которых объединяются в одно решение (невесомые голоса или средние голоса) путем сортировки новых данных с учетом голосов их прогнозов.

Для поиска наилучших параметров модели можно использовать алгоритм RandomSerach или GridSearch.

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

На рисунках 6 и 7 мы видим показатели оценки AUC и F1 для тестового набора данных.

8. Уточнение

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

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

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

9. Результаты

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

Используя передискретизацию, мы заметили на рисунках 9 и 10, что для Random Forest и LGBMClassifier были улучшены показатели AUC и F1.

10. Обоснование

10.1 Модель

Random Forest обладает многими характеристиками, которые делают его интересным алгоритмом для моделирования решения задач, таких как:

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

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

10.2 Метрика

И AUC, и F1 полезны, когда существует диспропорция между целевым классом.

10.3 Выбор функций

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

11. Отражение

Некоторые из проблем, с которыми я столкнулся в этом проекте:

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

12. Будущие улучшения

  1. Могут быть использованы другие методы работы с несбалансированными данными и другие алгоритмы.

Для получения дополнительной информации об этом анализе вы можете найти их в Jupyter Notebook, доступном здесь https://github.com/mayrazp/Capstone-Project.