www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Предварительная обработка данных для прогнозирования покупок в Интернете

Дата публикации Oct 3, 2019

фотоrupixenнаUnsplash

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

Набор данных можно найти на kaggle-Намерение онлайн-покупателей- вместе с подробным описанием возможностей.

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

Что такое предварительная обработка и почему мы должны это делать?

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

кредиты- гугл

Импорт библиотек и набора данных.

Самый первый шаг в предварительной обработке - это импорт библиотек. Мы использовалипандимпортировать, экспортировать и поддерживать кадры данных, иNumPyдля матричных операций над набором данных.Sklearnбыл использован для анализа данных и создания моделей машинного обучения, как объяснено в остальной части статьи. Matplotlib использовался для построения и визуализации данных во время различных анализов.

Затем набор данных был импортирован и разделен на X (входные объекты) и y (метки).

Обработка пропущенных точек данных

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

Есть два способа обработки пропущенных значений. Удаление всей строки с пропущенными точками данных или заполнение пропущенных значений средним значением, медианой, режимом или наиболее часто встречающимся значением в соответствующем столбце. Поскольку для нас было доступно только 12330 точек данных, мы использовали функцию SimpleImputer в sklearn, чтобы заменить пропущенные значения средними - для числовых данных и наиболее часто - для статистических данных.

Вмененный набор данных - без пропущенных значений

Обработка данных категории

Набор данных состоит из 10 числовых и 8 категориальных атрибутов.

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

Поскольку все операции внутри предиктора, основанного на машинном обучении, являются математическими, ясно, что мы не можем предоставить такие данные, как месяцы; «Январь», «Февраль» и т. Д. К модели. Самый простой способ обработки данных такого типа -Кодировка меткигде каждая категория в определенном атрибуте кодируется уникальным номером; Январь = 0, февраль = 1 и т. Д. (Ознакомьтесь с нашим полным кодомВот)

Хотя этот метод дает приемлемые результаты, модель предиктора также может быть смещена в сторону некоторых категорий, которые были закодированы с численно более высоким значением. (Например, декабрь = 11 и январь = 0). Чтобы избежать этого эффекта, мы использовалиКодировка Onehotдля нашего набора данных. После кодирования начальные 18 входных функций увеличились до 58.

Часть набора данных после однократного кодирования катагорических данных

Выбор лучших функций

Поскольку у нас было 58 входных функций, нам нужно было выбрать функции, которые оказали наибольшее влияние на доход, и удалить те, которые не оказали существенного влияния на доход. Этот шаг очень важен для ускорения обучения и предотвращения ненужного усложнения модели. Существует множество инструментов для изучения влияния каждой функции на доход. Мы использовали sklearn.ensemble'sselectkbestчтобы узнать самые высокие оценки.

Еще одна функция, которую мы использовали для выбора функций, это Sklearn'sExtratreesClassifier,

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

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

Из приведенного выше анализа мы выбрали 12 лучших функций из 58. Это «Административная», «Административная_длительность», «Информационная», «Информационная_длительность», «ProductRelated», «ProductRelated_Duration», «BounceRates», «ExitRates», « PageValues ​​',' Month11 ',' Traffic_Type 'и' visitor1 '(Month11 и visitor1 были результатами одного горячего кодирования, соответствующего ноябрю месяца и типу посетителя, возвращающемуся посетителю)

Выпадающие

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

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

Большинство точек данных (клиентов), которые находились на одном уровне, т. Е. Имели смехотворно большие значения ProductRelated_Duration или Informational_Duration, фактически закончили тем, что что-то покупали на веб-сайте.

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

Добавлены две новые функции в зависимости от их оценки отклонений

Поезд, валидация и тестовые наборы

Мы разделили 1850 точек данных в качестве тестового набора данных. Затем мы использовали функцию разделения тестов поездов в sklearn, чтобы случайным образом отделить часть набора данных от набора значений и перейти к модели прогнозирования. Мы модифицировали модель прогнозирования до тех пор, пока не получим удовлетворительную точность, используя набор значений val для проверки результатов. Затем мы использовали ту же модель в тестовом наборе данных.

Окончательная точность прогноза составила около 94%. Вы можете прочитать все о моделиВотво второй статье серии, или проверитькодв нашем репозитории Github здесь.

Ура!

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map