Автор: Хаоксин Чен, Сюсянь Ли, Силинь Су



Введение

Для большинства приложений, которые мы используем сегодня, нас всегда «рекомендуют» на основе алгоритмов. Когда мы хотим послушать музыку и открыть Spotify, у нас есть раздел «Эпизоды для вас»; когда мы открываем карту Google и ищем ресторан, нам предоставляется несколько процентов того, насколько мы совпадаем в этом ресторане.

Есть ли алгоритм, который можно было бы «рекомендовать» предпринимателям для принятия решения об открытии нового ресторана или нет?

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

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

Давайте начнем!

Часть I. Исследовательский анализ данных

Всего наша группа применила 5 наборов данных для исследовательского анализа данных, чтобы увидеть корреляцию между ними: «Бизнес», «Регистрация», «Обзор», «Советы» и «Пользователь». Давайте рассмотрим это один за другим!

1.1 Бизнес

Фрейм данных Business restaurantsbusiness_iddf содержит столбцы (business_id, name, address, city, state, postal_code, latitude, longitude), содержащие основную географическую информацию о каждом ресторане. Столбец is_open показывает, открыт ресторан или нет во время последнего обновления этого набора данных. Столбцы stars — это столбец меток в моделирующей части, который дает рейтинг ресторанов. Колонки categories, attributes, hours содержат описание и деловую информацию о ресторанах.

Поскольку размер набора бизнес-данных содержит так много ресторанов, а в некоторых городах есть только один ресторан, наши наборы данных выбирают только 20 лучших городов с наибольшим количеством ресторанов. Из графика выше видно, что больше всего ресторанов в Лас-Вегасе и Торонто.

На карте выше показано расположение каждого ресторана с подсчетом отзывов и звездами рейтинга. Чем больше круг, тем больше отзывов у этого ресторана. Цвет каждого круга указывает звезду рейтинга. Темно-синий означает звезду с высоким рейтингом, а светло-зеленый — звезду с низким рейтингом.

Мы хотим знать, какой рейтинг является наиболее распространенным. Количество ресторанов в каждом звездном рейтинге показано на графике. Звезда 4.0 имеет наибольшее количество ресторанов, а звезда 1.0 — наименьшее количество ресторанов.

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

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

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

Thecheckin_df также дает нам некоторую информацию о популярности ресторана. Поэтому мы объединили df регистрации с business_df по бизнес-идентификатору для дальнейшего анализа данных. Сюжет представляет собой визуализацию 20 лучших категорий с наибольшим количеством отзывов и чекинов.

Тепловая карта числовых столбцов, объединенных в business_dfи checkin_df, показывает, что только количество просмотров и количество чекинов имеют сильную корреляцию.

1.2 Регистрация

Затем давайте взглянем на набор данных Check-in. Он имеет 2 столбца: один — это идентификатор компании, а другой — дата заезда с указанием времени. Мы думаем о построении графика временных рядов по количеству чекинов с течением времени, чтобы проанализировать тенденцию.

Поскольку общая тенденция количества дополнительных проверок слишком плотная, чтобы ее можно было определить, мы сгруппировали время проверки по месяцам и построили второй график. График временных рядов по месяцам показывает тенденцию гораздо четче, чем предыдущий. Судя по графику этого временного ряда, количество регистраций значительно увеличилось с 2010 по 2014 год и достигло своего пика в 2016 году. Оно немного уменьшилось после 2016 года и резко упало в начале 2020 года, на что, по-видимому, повлиял Covid-19. .

1.3 Отзывы

Набор данных отзывов содержит отзывы клиентов о бизнесе. Он содержит основную информацию о пользователях (user_id), компаниях (business_id) и отзывах (review_id), а также данные об отзывах, такие как комментарии других пользователей к определенным отзывам (useful, funny, cool), содержание отзыва (text) и дату отзыва. Чтобы проанализировать набор данных отзывов, мы могли получить мнения и критику от клиентов.

Для набора данных Review мы сначала изучили общее количество отзывов по мере изменения времени и построили график количества отзывов во временном ряду.

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

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

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

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

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

Теперь найдите 20 самых распространенных слов в содержании tokens. Верните это как список (word, count) кортежей. Затем используйте гистограмму, чтобы визуализировать 20 самых распространенных слов в обзорах Yelp. Согласно барплоту и словесному облаку, мы обнаружили, что некоторые факторы, такие как «еда», «обслуживание», «время» и «место», часто упоминаются в отзывах, что может быть важным атрибутом, когда клиенты оставляют комментарий о ресторане.

Наша группа также провела анализ настроений Afinn для набора данных обзора. Судя по графику, большинство обзоров имеют относительно 0 баллов тональности Afinn, что означает, что большинство обзоров имеют нейтральную тональность. Количество крайне негативных отзывов (с оценкой от -20,0 до -10,0) и количество исключительно положительных отзывов (с оценкой выше 40,0) намного меньше, чем мы ожидали. В целом, отзывы Yelp носят немного позитивный характер.

1.4 Советы

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

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

1,5 пользователя

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

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

Один из столбцов во фрейме данных под названием Elite представляет годы, в течение которых пользователь идентифицируется как элитный. Нам любопытна разница между элитными членами и неэлитными членами. Из левого графика видно, что большинство пользователей не являются элитными членами, и трудно обнаружить разницу между элитными членами разных лет. Поэтому мы строим еще один график, который является только элитным. На правом графике мы могли четко видеть разницу между элитными членами разных лет. Около 1/3 членов элиты имеют более 5 лет опыта работы в элите, что также является самым большим процентом. Только 5 процентов членов элиты имеют опыт работы более 10 лет.

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

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

Часть II. Моделирование

2.1 Анализ множественных соответствий

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

Настройка для МКА.

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

2.2 Хи-квадрат

Перед тестом значение звездочек необходимо преобразовать из чисел с плавающей запятой в целые числа. Таким образом, мы заменили 0,5 на 1, 1,5 на 2, 2,5 на 3, 3,5 на 4 и 4,5 на 5. Столбец включает новые звезды, созданные как new_star. Затем мы выполнили тест хи-квадрат, чтобы определить характеристики, которые являются основными для оценок.

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

Поскольку наши данные несбалансированы, мы используем двоичную метку для замены исходной метки звездного рейтинга. Рейтинг ‹ 4 будет равен 0 (ниже среднего), а рейтинг ≥ 4 будет равен 1 (выше среднего).

Randomoversampler используется для завершения баланса наших данных.

2.3 Логистическая регрессия

Тепловая карта матрицы путаницы показана ниже:

2.4 Случайный лес

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

После поиска по сетке мы получили лучшие гиперпараметры случайного леса, то есть n_estimator = 64, max_depth = 15.

Матрица путаницы показана ниже:

Наконец, модель случайного леса имеет лучшую производительность, чем модель логистической регрессии. Окончательная точность модели логистической регрессии составляет 63,0, а окончательная точность модели случайного леса — 66,0. Эта возможная причина заключается в том, что случайный лес строит несколько деревьев решений, выбирая подмножество общих переменных для построения каждого дерева.

Проблемы и препятствия

  • Выбор переменных. Исследовательский анализ данных (EDA) – фундаментальная часть нашего проекта, которая повлияет на качество моделей в процессе машинного обучения. Когда мы выполняем процесс EDA, выбор переменных может быть проблемой. Поскольку для определения рейтинга ресторана взаимодействуют многие атрибуты бизнеса, мы должны определить важность каждого фактора и сосредоточиться на тех, которые сильно влияют на результат. Кроме того, нам также необходимо учитывать количество комбинаций переменных при построении графика.
  • Ярлык дисбаланса, так как мы используем звездочки в качестве меток. При выполнении EDA мы обнаруживаем, что количество каждой метки сильно отличается, что приводит к низкой точности нашей модели. Поэтому мы решили перенести мультиклассовые метки в двоичные метки, что означает, что мы используем хорошие оценки и плохие оценки, чтобы сбалансировать метки в цифрах.
  • PCA или MCA? В лекции профессор обсудил анализ основных компонентов (PCA) для уменьшения размерности (количества признаков). Когда мы пытаемся использовать PCA для уменьшения размерности, мы получаем ужасный результат. После обсуждения с ТА и поиска в Интернете, по сравнению с PCA, анализ множественных соответствий (MCA) более подходит для работы с булевыми функциями. Поэтому мы используем MCA для выбора значимых признаков.
  • Сложность модели. Когда мы разрабатываем собственную модель, ее легче сделать неподходящей или чрезмерной для обучающих данных, если мы неправильно выберем сложность модели. Чтобы решить эту проблему, жизненно важно выбрать функции и алгоритм машинного обучения, тем более что в нашем наборе данных есть несколько функций (атрибутов). Поэтому мы должны понимать важность каждого атрибута и их взаимосвязей, которые содержат много рабочих нагрузок.
  • Обновление модели. Со временем набор данных будет обновляться, что может сделать наш алгоритм несовершенным. Нынешняя краткая модель может стать неточной в будущем. Поэтому нам необходимо постоянно обновлять и поддерживать нашу модель, применяя последний набор данных, что может стать проблемой для нашего проекта.

Будущее направление

Для этого проекта мы только прогнозируем, будет ли рейтинг ресторана ниже или выше среднего рейтинга. Из-за ограничений используемых нами моделей мы не можем присвоить ресторану звездный рейтинг [1, 1,5, 2, 2,5, 3, 3,5, 4, 4,5, 5]. Мы попытались предсказать конкретный звездный рейтинг, но точность составляет около 30%. Таким образом, в будущем потребуется более совершенная модель, которая может предсказать конкретный звездный рейтинг ресторана с выбранными характеристиками, или лучший способ сбалансировать данные. Кроме того, мы использовали только функции в атрибутах для обучения данных в этом проекте, поэтому в будущем мы можем захотеть использовать больше функций, таких как местоположение, информация о районе, обзоры и информация о меню.