Изначально анализ был мотивирован и предлагался в некоторых оценках ролей в Data Science. Однако наборы данных были изменены для публикации.

Введение

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

Понимание данных

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

- Данные о посещениях магазинов за 2016 г. (train_restaurant_visitors.csv): предоставляет такие данные, как дата посещения, тип ресторана / магазина, широта и долгота магазина, а также количество посетителей каждого магазина по дате. .

- Информация о праздниках в Японии (Holiday_data.csv): предоставляет различные названия праздников в Японии по дате.

- Данные о погоде в 2016 году (new_weather_data2.csv): предоставляет широкий спектр погодных атрибутов на каждый день с точки зрения ключевых категорий: температура, влажность, дождь, солнце, снег и ветер.

Подготовка и исследование данных

Очистка данных

После просмотра трех наборов данных я признал, что было много пропущенных значений. Я классифицировал уровни недостающих значений на три: ›60% отсутствует,‹ 20% отсутствует, 100% отсутствует, прежде чем предлагать решения для каждой категории. Для первого решения я решил удалить все переменные с отсутствующими значениями более 60%. Чтобы иметь дело с функциями ниже 20% отсутствующих значений, я использовал медианный подход для числовых значений атрибутов погоды: Temp, Sun, Rain_avg_year, Sun_avg_year Total_precip. Что касается информации о праздниках, я заменил отсутствующие значения на Normal_day, поскольку данные с информацией о праздниках составляют небольшой процент в течение года.

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

Наконец, я удалил другие нерелевантные функции данных из нашего набора основных данных во время процесса очистки и объединения, в результате чего получился окончательный набор данных, который будет использоваться для частей преобразования, EDA и моделирования. Окончательный набор данных содержит следующие переменные: 1. Дата, 2. Месяц, 3. Число_посетителей, 4. Тип, 5. Имя_праздника, 6. Температура, 7. Общее_получение, 8. Rain_avg_year, 9. Sun, 10. Sun_avg_year.

Преобразование данных

Глядя на распределение нашей зависимой переменной number_of_visitors, я пришел к выводу, что наши данные не распределяются нормально, но немного искажены. После запуска графика QQ нам нужно было преобразовать наши данные для нормального распределения. Новый график QQ демонстрирует, что значения нашего журнала (number_of_visitors) распределены гораздо более нормально, что позволяет нам продвигаться вперед с нашим анализом.

Еще одно преобразование, которое я сделал, - это преобразование всех наших строковых столбцов в факторные / категориальные переменные: Type, Holiday_Name и Month.

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

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

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

Рассматривая типы ресторанов / магазинов во временном анализе, мы также увидели, что некоторые из новых магазинов, открытых во второй половине 2016 года, предлагали новые категории с более высоким средним числом посетителей.

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

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

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

Затем я строю двухмерные коробчатые диаграммы, чтобы визуализировать взаимосвязь между количеством посетителей и независимыми переменными. Учитывая праздничную дату, интересно, что в Новый год люди меньше всего ходили в магазин или ресторан. Между тем, другие мероприятия, такие как День рождения Императора или День Сёва, привлекали множество людей, чтобы посетить магазины. Что касается категории магазинов / ресторанов, мы увидели преобладание азиатской кухни, которая может быть наиболее доступной в такой азиатской стране, как Япония. И наоборот, не так много людей ходили в другие элитные заведения, такие как бар / коктейль, за тот же период.

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

Корреляционный анализ

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

Наконец, я рассмотрел, существует ли проблема коллинеарности в наших данных с текущими главными 13 переменными, используя другую матрицу корреляции:

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

Выбор функций и моделирование

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

Метод 1. Метод фильтрации

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

Мы знаем, что количество посетителей сильно коррелирует с рядом переменных (наш «Топ-13»). Мы использовали полилинейную регрессию, чтобы построить оптимальную модель прогнозирования количества посетителей. Я называю это «Модель 1», в которую включены наши объяснительные переменные «13 лучших» (переменные сильно коррелируют с количеством посетителей). Используя метод разделения поездов и тестов, мы получаем сводку по Модели 1, как показано ниже:

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

Метод 2: метод оболочки

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

Модель 2.1: Обратное исключение

Сначала я впишу в модель все возможные элементы. После проверки производительности модели она будет итеративно удалять худшие функции одну за другой, пока общая производительность модели не достигнет приемлемого диапазона (с использованием значения p, превышающего 0,05). Я называю это «Модель 2.1», которая включает в себя все важные независимые переменные. Используя метод Train-Test Split, мы получаем сводку по модели 2.1, как показано ниже:

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

Модель 2.2: RFE (исключение рекурсивных функций)

Этот метод рекурсивно удаляет атрибуты и строит модель на тех атрибутах, которые остались. Он учитывает показатели точности для ранжирования функции в соответствии с их важностью. Метод RFE принимает в качестве входных данных модель, которая будет использоваться, и количество требуемых функций. Затем он ранжирует все переменные, причем 1 является наиболее важной. Он также поддерживает: True как актуальную функцию и False как нерелевантную функцию.

Определив 12 как оптимальное количество функций, я подобрал эти 12 переменных и назвал это «Модель 2.2». Используя метод Train-Test Split, мы получаем сводку по модели 2.2, как показано ниже:

В модели 2.2 мы увидели, что все переменные имеют отрицательную связь с целевой переменной - количеством посетителей. Как и в модели 2.1, наиболее значимым из них является type_Bar / Cocktail, что говорит о том, что люди меньше всего ходят в это место.

Метод 3: встроенный метод

Методы регуляризации - это наиболее часто используемые встроенные методы, которые штрафуют функцию с учетом порогового значения коэффициента. Я сделаю выбор функций с помощью лассо. Если переменная не имеет значения, Лассо штрафует коэффициенты и делает их равными нулю. Следовательно, характеристики с коэффициентом = 0 удаляются, а остальные берутся.

Используя метод регрессии LASSO, мы разработали «Модель 3», которая выполняет как выбор переменных, так и регуляризацию. Глубоко погрузившись в отбор переменных, у нас есть 30 основных предикторов, наиболее важных для модели. Это делается с помощью MDI (важность Джини или среднее уменьшение примесей), который вычисляет важность каждой функции как сумму количества разбиений (по всем деревьям), которые включают эту функцию, пропорционально количеству разбиений, которые она разбивает.

Краткое изложение модели 3 приведено ниже:

По сравнению с Model 1, Model 2.1 и Model 2.2 у нас есть дополнительные сведения из группы переменных «Месяц». Однако, еще раз, мы можем подтвердить обратное влияние на целевую переменную Type_Asian (положительное) и Type_Bar / Cocktail (отрицательное).

Оценка

После запуска наших четырех моделей я использовал четыре показателя: R-квадрат, MAE, MSE, RMSE, чтобы оценить эффективность прогнозирования нашей модели. Как мы и ожидали из приведенной ниже таблицы, Модель 2.1, использующая обратное исключение, является лучшей с точки зрения всех показателей. Другая модель, которая имеет очень близкую производительность, - это Модель 3 с использованием LASSO Regularization.

Ожидается, что метод Filter (Модель 1) менее точен, а методы Wrapper и Embedded (Model 2.1 и Model 3) предлагают более точные результаты. Однако эти две более поздние модели на практике потребуют больших вычислительных ресурсов при работе с большим количеством функций.

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

Проанализировав группу наборов данных, связанных с посещаемостью магазинов, я смог создать модель, которая может помочь высшему руководству, специалистам по планированию ресурсов и особенно менеджерам магазинов в индустрии еды и напитков предсказывать пешие посещения их магазинов / ресторанов и получать более точные результаты. понимание предпочтений клиентов на рынке Японии. Я обнаружил, что Модель 2.1, использующая обратное исключение, работает лучше, чем другие. Я также увидел впечатляющую точность предсказания модели 3, которая использует регуляризацию LASSO. В общем, я обнаружил, что некоторые переменные имеют положительную связь с количеством посетителей, а другие - отрицательную связь с целевой переменной. В холодное время года (8, 9, 10 и 11 месяц) меньше людей ходят в магазины / рестораны, а Type_Bar / Cocktail - наименее популярное место. Однако в декабре посещаемость снова увеличивается и достигает пика летом, когда погода более благоприятна для покупок. Также очевидно, что Type_Asian оказывает наиболее существенное маржинальное влияние на количество посетителей. Еще один вывод, о котором стоит упомянуть, - это группа переменных, связанных с праздником, поскольку она не оказывает значительного влияния на решения японских клиентов о покупках или ресторанах.

Однако у этого анализа есть некоторые ограничения. Во-первых, в наборе данных было много пропущенных значений некоторых атрибутов, что может снизить точность нашего прогноза. Решением для этого является включение более квалифицированных данных путем сотрудничества с поставщиком данных для этапа интеллектуального анализа и очистки. Во-вторых, по соглашению с поставщиком данных я не смог использовать переменные, касающиеся местоположения магазина / ресторана, которые могут быть хорошими предикторами посещаемости магазина. Еще одним ограничением является отсутствие функций данных, относящихся к магазину / ресторану, таких как емкость магазина, рейтинг магазина и обслуживание клиентов. Эти факторы могут повлиять на силу привлечения посетителей. Мы можем решить эту проблему, запросив дополнительные внутренние данные у поставщика данных. Последнее, что касается периода времени данных. В этом анализе у нас были данные о посещаемости магазинов только за 2016 год, что может не отражать текущую ситуацию на рынке и в бизнесе. Следует рассмотреть предложение о дальнейшем расширении этого анализа для поставщика данных за счет включения более обновленных данных. В будущем мы также можем попробовать другие меры производительности и другие методы машинного обучения для повышения производительности и сравнения результатов.