В сентябре 2021 года избиратели Калифорнии решили не вспоминать действующего губернатора Гэвина Ньюсома. В августе 2021 года опрос SurveyUSA, спонсируемый San Diego Tribune, KABC-TV Los Angeles и KGTV-TV San Diego обнаружил, что 51% вероятных избирателей проголосовали бы за, чтобы отозвать губернатора Ньюсома, в то время как 40% проголосовали бы. "Нет". После миллионов долларов, потраченных на кампании Да и Нет на то, что считалось близким к выборам. Новостные агентства назвали выборы через час после закрытия избирательных участков из-за большой разницы в результатах. Окончательные результаты показали, что кампания Нет выиграла с разницей в 24%. Это заставило многих задуматься, почему опросы общественного мнения ошиблись.

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

Прежде чем мы начнем, давайте определим процесс науки о данных:

  1. Определите проблему
  2. Соберите и очистите данные
  3. Изучите данные
  4. Смоделируйте данные
  5. Оцените модель
  6. Ответьте на проблему.

Определите проблему

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

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

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

Сбор и очистка данных

Я использовал данные Совместного исследования выборов (CES), общедоступные по адресу https://cces.gov.harvard.edu/data. Набор данных включает данные национальных опросов и опросов штатов за 2006–2020 годы. Этот набор данных состоял из более чем 500 000 респондентов с 94 характеристиками. Характеристики варьировались от возраста и штата респондентов до партийной принадлежности и того, за кого они голосовали на выборах в Сенат, губернатора и президента.

Данные не включают 2021 год, поскольку исследование для этого года все еще проводится. Я сократил набор данных только до штата Калифорния и включил 2016–2020 годы, имея в виду, что в 2018 году проходили выборы губернатора. Я буду использовать 2018 год в качестве данных обучения, поскольку целевой показатель «voted_gov ", настоящее. Я отбросил все строки с недостающими данными и быстро закодировал целевой voted_democrat. Результатом является набор данных ниже.

В итоге у нас был Pandas DataFrame с ~ 3000 строками и 11 функциями.

Изучите данные

Хотя в центре нашего внимания - выборы по отзыву губернаторов в Калифорнии в 2021 году, я изучил демографические данные за 2016–2020 годы, я хотел сосредоточить внимание на демографических сдвигах и факторах, которые могут повлиять на выбор избирателя в качестве демократа или республиканца.

Меня беспокоил дисбаланс данных. В EDA я обнаружил, что наш целевой класс «проголосовавший за демократ» составляет 62% наших данных. После некоторых дебатов я решил, что эта модель должна точно представлять избирателей Калифорнии. На самом деле, в Калифорнии разделение зарегистрированных демократов и республиканцев составляет ~ 60% / 40%. Я решил оставить набор данных 62% Демократов, 38% респондентов вместо того, чтобы считать больше республиканцев.

В базе данных CCES, которую я использовал, используется выборочное сопоставление. Это означает, что они составляют свою выборку случайным образом с целью сопоставить целевую совокупность. В данном случае целевая группа - жители Калифорнии в возрасте от 18 лет и старше. Исследователи также использовали группу добровольных респондентов, чтобы убедиться, что их выборка соответствует демографическим характеристикам взрослых калифорнийцев в целом. Подробная информация об этом процессе доступна в Руководстве CCES 2020, доступном по адресу https://cces.gov.harvard.edu/data.

Смоделируйте данные

Классификатор голосования Scikit-learn - это метод ансамблевого обучения. Он применяет «жесткое голосование» для повышения производительности группы хорошо работающих моделей. «Решительное голосование» означает, как и в случае отзыва голосов, правила большинства. Подобно избирателям в голосовании на отзываемых выборах, «Да» или «Нет», голосование / прогноз другой модели будет либо положительным, либо отрицательным классом. Класс с наибольшим количеством голосов побеждает, и этот элемент классифицируется.

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

Оцените модель

Ниже приведена таблица того, как три отдельные модели работали с классификатором голосования.

Давайте посмотрим на производительность одного логистического регрессора по сравнению с нашим классификатором голосования.

Логистический регрессор (C = 0,1, штраф = «L2»):

Классификатор голосования (логистический регресс C = 0,1, штраф = «L2», классификатор KNN n_neighbors = 7, MN Naive Bayes aplha = 1, fit_prior = True):

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

Ответьте на проблему

Чтобы ответить на нашу первоначальную проблему: «можем ли мы смоделировать и предсказать, будет ли голосование за кандидата от республиканцев или от демократов?», да, мы можем с точностью 93%.

Ради интереса я прогнал данные за 2020 год, у которых не было целевого значения «voted_gov», с помощью модели случайного леса с аналогичными классификационными метриками. Он предсказал, что демократ выиграет с отрывом в 38%, реальные результаты были с отрывом в 24%.

Я думаю, это интересно, потому что все, что делает наша модель, это правильно классифицирует избирателей в наборе данных. Это наводит на мысль о том, что если наш набор данных правильно представляет избирателей Калифорнии, и это были выборы по почте, сделайте выборы по почте лучше «классифицируйте» истинную базу избирателей. Однако это еще одна проблема Data Science.

Репо на Github: https://github.com/zaid-aziz

Linkedin: www.linkedin.com/in/zaid-aziz