Как голосует Конгресс?

Использование машинного обучения для прогнозирования голосования в Конгрессе

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

Данные

Набор данных можно найти на Kaggle здесь.

Столбцы: «Название класса», «Дети с ограниченными возможностями», «Совместное финансирование проекта водоснабжения», «Решение о принятии бюджета», «Замораживание гонораров врачам», «Помощь в Сальвадоре». ',' религиозные группы-в школах ',' запрет на испытания спутников ',' помощь-никарагуан-контрас ',' ракета-носитель ',' иммиграция ',' сокращение корпораций синфуэлз ', «расходы на образование», «суперфонд-право на подачу иска», «преступность», «беспошлинный экспорт», «закон об управлении-экспортом-Южная Африка».

Первый столбец «Название класса» может быть либо «республиканским», либо «демократическим». В других столбцах, представляющих решения Конгресса, указано «n» вместо «нет», «y» для «да» или «?» Для отсутствующего значения.

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

Чтобы передать данные в модель машинного обучения, все данные должны быть числовыми. Используя функцию Python .map (), мы можем преобразовать данные в числовую форму.

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

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

KNN Imputing

Вместо этого мы будем использовать K-ближайших соседей (KNN) для вычисления пропущенных значений.

Как работает KNN?

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

Во-вторых, KNN вычисляет k ближайших точек данных (используя евклидово расстояние). Необходимо указать значение k. Затем точка данных представляет собой среднее значение (или режим, если он указан) значений k соседа.

После применения импутера KNN данные выглядят так:

После обучения модели логистической регрессии на разделении поездов 65–35, модель имеет значение средней абсолютной ошибки (MAE) около 0,006.

После проверки всех значений k в MAE, похоже, мало что изменилось:

Поэтому пока мы будем придерживаться значения k-, равного 5.

Коэффициентный анализ

Коэффициенты модели логистической регрессии можно использовать в качестве анализа:

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

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

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

Значения SHAP также можно визуализировать другими способами.

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

Заключение

  • Замораживание платы за медицинское обслуживание врачей почти полностью было поддержано партийной линией.
  • Отсутствие поддержки врача Бесплатное медицинское обслуживание по программе Medicare - очень важная особенность республиканца.
  • Помощь никарагуанским «контрас» и Сальвадору вызывает наибольшие споры, что означает, что и республиканцы, и демократы голосовали за и против предложения.