Мотивация

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

Дэн Ю и Я интересовались, как геолокационные социальные сети могут помочь нам решить эту проблему. Многие компании (например, Yelp, Twitter, Foursquare) имеют данные в реальном времени о проверках пользователей, предпочтениях и их местных предприятиях. Итак, мы попытались составить наш собственный набор данных на основе данных регистрации FourSquare вместе с данными переписи для переписных участков города Нью-Йорка. С этим новым набором данных мы провели немало исследований, чтобы вручную создать функции и применить богатство модели в зависимости от этих функций.

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

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

Для решения интересующей нас проблемы мы опираемся на два отдельных источника данных:

  • Данные переписи населения Нью-Йорка: демографические данные для 2167 участков переписи в Нью-Йорке, основанные на 5-летних оценках исследования американского сообщества 2015 года. [1]
  • Данные FourSquare о регистрации заезда в Нью-Йорке: с 12 апреля 2012 г. по 16 февраля 2013 г. собрано 227 428 регистраций. [2]

Вы могли заметить, что набор данных регистрации не сопоставляет каждое событие с переписным участком Нью-Йорка. Чтобы присоединиться к данным переписи и регистрации, мы сопоставляем координаты широты / долготы каждой регистрации с участком переписи, используя API преобразования блоков переписи FCC. (Это заняло почти 24 часа из-за ограничений ЦП и ограничения скорости API). [код конверсии]

Постановка задачи

Наша первоначальная мотивация была широкой - понимание «демографии» может означать множество вещей, поэтому мы решили ограничить проблему благосостоянием, а точнее, средним доходом домохозяйства. В целях оценки нам необходимо еще больше структурировать нашу проблему, поэтому мы разбиваем данные на квартили, 4 сбалансированных класса, которые можно использовать для прогнозирования: 0–25% (самые бедные), 25–50%, 50–75% и 75–100% (самые богатые).

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

Функциональная инженерия

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

Если мы предположим, что высокий уровень активности положительно коррелирует с более высоким доходом (рис. 1a), num_total_checkins для данного переписного участка может быть репрезентативным для благосостояния региона. Точно так же можно предположить, что частота проверок в разных типах предприятий (рис. 1b) - например, кондитерские и рестораны быстрого питания - может содержать разные сигналы к богатству. Учитывая временные метки каждой регистрации, мы также можем связать активность в разные дни недели (Рис. 1c) или время дня (Рис. 1d), скажем, с 4 утра до 8 утра против 8 утра до полудня, с разным уровнем благосостояния.

Что, если люди, которые посещают кафе с 4 до 8, тоже связаны с богатством? Мы можем это сделать! Создавая составные функции, которые используют преимущества как категорий, так и времени (Рис. 1e, f, g), мы можем фиксировать более сложные отношения в наших функциях.

Наконец, мы можем проверить некоторые из этих предположений, визуализировав наши данные с помощью тепловых карт. Здесь мы построили тепловые карты (более высокая интенсивность для более высокой частоты) проверок для наших функций по сравнению с нашей целью (рис. 3). [блокнот визуализации]

Разработав метод извлечения каждой из этих характеристик, мы можем начать экспериментировать с различными наборами функций, чтобы смоделировать взаимосвязь между проверками на переписном участке и богатством. Для этого мы сравниваем различные подмножества только что извлеченных нами признаков (из рис. 1), оценивая их с помощью перекрестной проверки в k-кратном (k=5) порядке, используя простую наивную байесовскую модель (рис. 3).

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

Оценка модели

После выбора нашего набора функций мы можем продолжить эксперименты с использованием различных моделей. Мы используем результаты наивной байесовской модели в качестве основы для оценки, имея в виду, что случайный шанс (с четырьмя возможными метками) даст точность классификации 0,25. Для экспериментальной гигиены мы разделили данные на 6 частей, зарезервировав 6-ю кратность в качестве тестового набора и используя первые 5 крат для перекрестной проверки. На рис. 4. мы поделились некоторыми результатами некоторых моделей, которые мы подобрали для моделирования данных.

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

Интерпретация результатов

Помимо точности классификации, как мы можем интерпретировать, насколько хорошо работает наша модель?

На рис. 5 показана матрица неточностей для нашей лучшей модели. Мы видим более темные квадраты для Q3 и Q4 (внизу справа) по сравнению с Q1 и Q2 (вверху слева), что означает, что мы лучше справились с прогнозированием высокого дохода, чем низкого дохода. Мы предполагаем, что это связано с тем, что у нас есть больше данных от людей, которые 1) имеют доступ к смартфонам и 2) используют такие приложения, как FourSquare для регистрации на предприятиях, и мы готовы держать пари, что люди, которые соответствуют этим критериям, богаче, чем те, кто кто нет. Другими словами, , поскольку наш набор данных может быть получен в основном от людей определенной демографической группы, у нас с большей вероятностью будет прогнозируемый сигнал для этих классов людей. [блокнот для оценки модели]

Анализ функций

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

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

Как мы это интерпретируем?

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

[Блокнот для анализа функций]

Выводы

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

  • Упростите задачу, чтобы ваш прогресс можно было интерпретировать. Первоначально мы попытались решить проблему регрессии для среднего дохода домохозяйства. Было трудно оценить эффективность наших моделей, интерпретируя MSE, поэтому мы упростили задачу до задачи классификации, в которой мы знали, как выглядит ужасная производительность (ниже случайной вероятности).
  • Проверяйте свои данные на предмет здравомыслия. Мы фактически начали попытки решить наши мотивирующие вопросы, используя набор данных обо всех легально действующих предприятиях Нью-Йорка. Мы попытались выделить тот же тип функций с использованием бизнес-категорий, но, похоже, не смогли зафиксировать какие-либо значимые взаимосвязи в данных. Стало ясно, что данные не обнадеживают.
  • Визуализируйте данные. Это следствие последнего пункта. Чтобы лучше понять свои данные, визуализируйте их! Мы использовали тепловые карты (рис. 2), чтобы понять, действительно ли существуют корреляции в данных.
  • Разработка функций - сложная часть. Несмотря на то, что это вряд ли была «реальная» проблема - мы дополнили два очищенных набора данных - большая часть нашей работы была связана с извлечением значимых функций из данных. Наши самые большие улучшения были достигнуты за счет попадания в зоны наилучшего восприятия функций (см. Подгонку / переоснащение на рис. 3), а не за счет выбора / настройки наших моделей.

Дальнейшая работа (также известная как ваш вклад!)

  • Разработка функций. Мы хотели бы подчеркнуть, что большая часть наших достижений была достигнута за счет более совершенных функций, и мы можем сделать больше для дальнейшего изучения лучших комбинаций функций для моделирования данных без увеличения сложности за счет слишком.
  • Снижение смещения / переобучения: есть место, где можно поиграть с моделированием, особенно для уменьшения некоторых смещений наших моделей. Как вы можете видеть на рис. 4, существует разрыв между точностью обучения и разработки, что означает, что наши данные имеют высокую систематическую ошибку. Некоторые идеи по улучшению этого: опробовать новые функции и настроить дополнительные параметры регуляризации.
  • Регрессионный анализ. Учитывая, что мы проверили наш общий подход с помощью упрощенной задачи классификации, мы конкретизируем регрессионный подход, чтобы попытаться предсказать значения дохода непосредственно для каждого переписного участка.
  • Помимо дохода: мы также можем расширить задачу прогнозирования дохода на другие демографические группы. Например, если вы должны предсказать распределение этнических групп, вы можете использовать подход, который моделирует данные с использованием полиномиальной логистической регрессии.

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

Весь наш код находится здесь, а более подробное описание можно найти здесь.

Исходный пост можно найти здесь.

Особая благодарность Qijia Jiang за отзыв о нашем экспериментальном подходе и Niharika Bedekar за чтение черновиков этого сообщения.

Если у вас есть какие-либо вопросы, предложения или исправления, не стесняйтесь обращаться к нам! Моя электронная почта [vincentsc at cs dot stanford dot edu], или вы можете найти меня в Twitter как @vinceschen. Электронная почта Дэна - [dxyu at stanford dot edu], а его личный сайт - http://danyu.me/.

Приложение

[1] Получено с: https://www.kaggle.com/chetanism/foursquare-nyc-and-tokyo-checkin-dataset/. Первоначально https://sites.google.com/site/yangdingqi/home/foursquare-dataset.

[2] Получено с Kaggle: https://www.kaggle.com/muonneutrino/new-york-city-census-data/. Первоначально http://factfinder2.census.gov (Бюро переписей США / American FactFinder).