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

Неудивительно, что преступность, как правило, значительно выше в Сан-Франциско, Лос-Анджелесе или Нью-Йорке, чем в менее населенных городах Америки. И за последнее десятилетие политики, а также полиция изо всех сил пытались найти «решение» для сдерживания неизбежной преступности в мегаполисах. Как студенты Университета Сан-Франциско, Аннализа Мут, Джейлин И. Мун и я стремились построить модель, которая предсказывает, какой тип преступления с большей вероятностью будет раскрыт в Город. Это перекликается с нашей целью помочь SFPD и правительству в будущих секторах патрулирования, планировании и улучшении политики.

Данные

Для начала мы решили обработать два набора данных отчетов полицейского управления об инцидентах, предоставленные городом и округом Сан-Франциско на веб-сайте DataSF в рамках инициативы по открытым данным. Сложенные наборы данных составляют около 2,1 миллиона строк и содержат отчет о происшествиях в полиции, поданный офицером или отдельным лицом с 1 января 2003 г. по 28 марта 2020 г.

Столбцы (или функции), используемые в нашем исследовательском анализе данных и прогнозных моделях:

  • Incident_Num ~ номер записи, присвоенный инциденту.
  • Категория ~ какое преступление произошло
  • X, Y ~ широта и долгота места совершения преступления.
  • PdDistrict ~ полицейский участок, который отреагировал на преступление
  • Дата ~ дата совершения преступления
  • DayOfWeek ~ день недели, когда произошло преступление
  • Год ~ уникальный год совершения преступления

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

Сжатие данных

Поскольку размер наших данных составляет примерно 650 МБ, нам нужно было уменьшить набор данных, чтобы время выполнения было приемлемым. После того, как мы выбрали нужные столбцы, мы смогли объединить наши два набора данных о преступлениях (один с 2003 по 2018 год, а другой с 2018 года по настоящее время). В зависимости от того, нужно нам это или нет, мы также объединили наш набор данных Weather с предыдущим. Это был наш основной набор данных, который мы использовали на протяжении всего проекта.

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

Глядя на верхний график выше, частота 10 основных преступлений оставалась относительно постоянной в период 2003–2012 годов. Однако по мере приближения 2018 года наблюдается резкий скачок - примерно 30000 случаев кражи / кражи. Это значительный рост, на который правоохранительные органы следует обратить внимание - будь то рост населения или рост бедности. Помимо этого, не было значительного увеличения или уменьшения по остальной десятке преступлений.

Рассматривая левый нижний график, мы сразу заметили, что в будние дни совершается больше преступлений, чем в выходные. Кроме того, мы смогли увидеть, что большинство преступлений было зарегистрировано при температуре от 10 до 20 градусов по Цельсию, то есть от 50 до 68 градусов по Фаренгейту. Мы должны отметить, что это имеет смысл и перекликается с нашей гипотезой о том, что в этот тип погоды собирается выходить больше людей, поскольку погода в Сан-Франциско большую часть времени попадает в этот диапазон.

На правом нижнем графике мы смогли увидеть интересную тенденцию с точки зрения частоты преступлений в час. Кажется, что вне зависимости от района в ранние часы дня (см. Часы 1–7) значительно меньше преступлений, чем в более позднее время дня. Кроме того, мы смогли сделать вывод, что большинство преступлений было совершено в Южном, Миссионерском, Северном и Центральном полицейских округах, которые считаются «деловыми», о чем мы поговорим далее.

Включены новые переменные

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

  • Сезон ~ время года совершения преступления (Весна, Лето, Осень, Зима).
  • distType ~, считался ли полицейский участок центром города или жилым районом. Мы разбили все районы в центре на следующие категории: Северный, Центральный, Южный, Бэйвью, Тендерлойн. Все остальные районы СФ, не названные в названии, должны были быть названы «жилыми».
  • Час ~ час, в который произошло преступление
  • AirTemp ~ температура воздуха в день совершения преступления. AirTemp подразделяется на «горячий», «холодный» и «средний_темп».
  • Res_night / Dtwn_night ~ каждая строка записывалась как «1», если преступление было совершено в ночное время в жилом районе или центре города.
  • Время ~ мы разделили столбец «Время» на «утро», «день», «вечер» и «ночь».
  • dayClass ~ каждое преступление записывается как в будний, так и в выходной день.

Кластеризация K-средних

Значительное увеличение количества краж / краж в 2018 году мотивировало наш интерес к анализу влияния среднего дохода домохозяйства по округам на относительную частоту преступлений. Таким образом, мы создали модель кластеризации, чтобы проверить, соответствует ли наша гипотеза о том, что районы с высоким доходом более подвержены преступлениям, с набором данных. Группирование результатов, полученных из k = 2 кластеров (как показано на графике метода локтя ниже), похоже, согласуется с нашей гипотезой.

Модель множественной регрессии

Чтобы выяснить главные факторы, определяющие высокий уровень преступности в SF, мы создали модель множественной пояснительной линейной регрессии. Из-за наличия нескольких категориальных переменных для тестирования мы быстро закодировали эти переменные, чтобы правильно использовать их в нашей регрессионной модели. После создания нашей модели мы использовали список коэффициентов, чтобы определить, какие из протестированных факторов являются наиболее важными. Обладая этой информацией, мы смогли сделать вывод, что следующие переменные оказали значительное влияние на частоту преступлений: distType, PdDistrict, AirTemp, Season и res_night / dtwn_night.

Но остерегайтесь ловушки фиктивной переменной! Поскольку наши категориальные переменные были преобразованы в количественные переменные (1 или 0) и двоичные по своей природе, это может привести к идеальной мультиколлинеарности - случаю, когда 2 или более предположительно независимых переменных сильно коррелированы. Чтобы преодолеть эту ловушку, произвольно отбрасывается первый столбец на столбцы с горячим кодированием.

Использование результатов регрессии для многоклассовой классификации

Имея список наиболее важных факторов преступности в Сан-Франциско, мы были заинтересованы в том, чтобы предсказать, какие типы преступлений наиболее вероятно обнаружатся. Например, если мы рассмотрим переменные «PdDistrict» (наше определение области преступления), «dayClass» и «Time» как характеристики, мы сможем предсказать преступления, которые могут произойти в определенное время дня. Поскольку мы стремились предсказать, к какому из 10 классов преступности относятся невидимые данные, мы использовали метод многоклассовой классификации. Этот метод предназначен для классификации экземпляров с тремя или более классами.

Для этого мы обучили нейронную сеть (NN) с помощью TensorFlow - библиотеки с открытым исходным кодом для разработки и обучения моделей машинного обучения. Кроме того, мы с нуля реализовали многоклассовую логистическую регрессию со стохастическим градиентным спуском (SGD), чтобы определить, какой метод даст более высокую точность. Простой способ представить себе логистическую регрессию - это представить один слой нейронной сети. В соответствии с контекстом этой проблемы, потери были измерены с помощью категориальной функции кросс-энтропийных потерь, поскольку она вычисляет расстояние между предсказанными метками и наблюдаемыми классами в нашем наборе данных. Точность была определена как (количество правильных прогнозов) / (общее количество прогнозов) для сравнения прогностической способности обеих моделей. Функция активации SoftMax была необходима в обеих прогностических моделях для вывода вектора вероятностей для каждого класса. И побеждает категория с максимальной вероятностью!

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

Ниже приведен график точности обучения и проверки и график потерь по мере обучения модели. Наблюдалось переобучение, потому что тенденция потери валидации начала увеличиваться больше всего после 7 эпох, в то время как потеря тренировки продолжала уменьшаться. NN привел к точности обучения 42,1% и точности проверки 41,7%. При скорости обучения 0,00001 и 10 эпох наша модель SGD дала точность 41,9%.

Поскольку исходные данные о погоде состояли из подавляющего количества «нулей», мы решили создать веб-сканер для новых данных о погоде за 2003 год, чтобы наблюдать эффект включения большего количества зарегистрированных инцидентов. Ниже приведен обновленный график точности и потерь обучения и проверки по мере обучения новой модели (с 80 нейронами в двух плотных слоях). Как видно, точность новой модели снизилась до 31,8% (примерно на 10% меньше, чем у нашей предыдущей модели). Ранняя остановка в меньшее количество эпох и добавление выпадающих слоев в нашу текущую модель рассматриваются в качестве улучшенной будущей модели.

Обернуть

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

В сотрудничестве с Аннализ Мут и Джейлин Ю. Мун, USF Spring ‘20.

Источники