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

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

Что ж, сегодня я хотел бы поделиться своим опытом в подобной ситуации -

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

Какой набор данных использовать?

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

О наборе данных

Сердечно-сосудистые заболевания (болезни сердца) являются причиной смерти номер 1 во всем мире, унося ежегодно около 17,9 миллиона жизней, что составляет 31% всех смертей во всем мире.

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

Подводя итоги. Создайте модель для оценки вероятности смерти от сердечной недостаточности.

Преимущество. Это может быть использовано для помощи больницам в оценке степени тяжести пациентов с сердечно-сосудистыми заболеваниями.

Право первого взгляда на данные. Всего 299 строк и 13 столбцов. Столбцы содержат подробную информацию о наличии диабета, высокого кровяного давления, курении или некурящих, количестве тромбоцитов, поле и т. Д. С целевым столбцом 'DEATH_EVENT' то есть, выжил ли человек или умер с учетом 12 характеристик

Чего мы пытаемся достичь

Как выбрать основные «T» функции (т. Е. Столбцы) из доступных «N» функций из набора данных, чтобы получить максимальную точность прогнозов

Подход 1: выберите все доступные «N» функции для предсказания

  • Разделите категориальные и числовые столбцы
  • Изучите числовые столбцы

Возраст умерших людей (55–75 лет) больше возраста живых (50–66 лет).

Не большая разница для креатинин-фосфокиназы в умерших и живых

Для людей, которые умерли: ejection_fraction (25–40) было меньше, чем живым (35–45).

Умерло: тромбоцитов - (200000–310000) немного выше, чем живых (210000–300000)

Умершие: сывороточный креатинин (1,6–2) выше, чем при живых (1–1,1)

Умер: сыворотка_ натрий (132–138) ниже, чем жив (135–140)

Умер: время (25–100) намного ниже, чем живое (100–210)

  • Изучите категориальные переменные: high_blood_pressure + DEATH_EVENT + курение + секс

Курящие женщины имеют более высокую вероятность смерти независимо от наличия HBP, чем мужчины.

У некурящих мужчин с HBP меньше шансов умереть, чем у некурящих женщин.

Некурящие мужчины без HBP имеют более высокие шансы на смерть, чем некурящие женщины без HBP.

курение + DEATH_EVENT + секс + диабет

Женский: вероятность смерти

Некурящие женщины с диабетом имеют более высокую вероятность смерти, чем некурящие женщины без диабета.

У курящих женщин с диабетом выше вероятность смерти, чем у курящих женщин без диабета

Мужской: вероятность смерти

Некурящие мужчины с диабетом имеют меньшую вероятность смерти, чем некурящие мужчины без диабета

У курящих мужчин с диабетом выше вероятность смерти, чем у курящих мужчин без диабета

  • Разделение поезд-тест (80% (количество образцов: 239) от обучения и 20% (количество образцов: 60) для тестирования) от общего количества образцов: 299
  • Построение модели-

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

K-Nearest Neighbor - один из простейших алгоритмов машинного обучения, основанный на методе контролируемого обучения. Алгоритм K-NN предполагает сходство между новыми случаями и доступными случаями и помещает новый случай в категорию, которая наиболее похожа на доступные категории.

Давайте выберем лучшее значение K (то есть ближайших соседей) для K = от 1 до 12.

  • Наблюдения:

Таким образом, из 60 выборок, используемых для тестовых данных, KNN Classifier правильно предсказал 45 выборок, однако он ошибочно классифицировал 15 выборок для K = 2 (т. Е. Ближайших соседей = 2), достигнув точности предсказания 75%.

Подход 2: выберите три основных характеристики для прогнозирования

Как определить основные функции в наборе данных с помощью матрицы взаимосвязей

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

Наблюдение и вывод - три основных предиктора, объясняющих максимальную дисперсию целевой переменной (т. е. DEATH_EVENT).

  • время: Отрицательная ковариация -0,53
  • serum_creatinine: положительная ковариация 0,29
  • ejection_fraction: отрицательная ковариация -0,27

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

График выше подтверждает наш анализ трех основных функций.

Итак, давайте построим модель, используя только три вышеупомянутых элемента.

  • Давайте выберем лучшее значение K (то есть ближайших соседей) для K = от 1 до 12.
  • Распечатываем общее количество неправильно классифицированных образцов

Таким образом, из 60 выборок, используемых для тестовых данных, KNN Classifier правильно предсказал 57 выборок и ошибочно классифицировал только 3 выборки для K = 11 (т. Е. Ближайших соседей = 11), достигнув точности предсказания 95. %

  • Давайте построим окончательную модель с K = 11 и напечатаем матрицу путаницы.

  • Матрица путаницы

Заключение и выводы

  • Выбор только важных функций и удаление нежелательных функций повысили точность модели классификации с 75% до 95%.
  • Мы можем попробовать выбрать 5 основных функций (вместо 3 лучших) и проверить, увеличивает ли это точность.
  • Удаление функций не всегда может приводить к повышению точности и требует проверки в зависимости от ситуации.
  • Точность можно дополнительно повысить за счет добавления новых функций с помощью проектирования функций.
  • Здесь мы узнали, как использовать корреляционную матрицу и параметр важности признаков классификатора дополнительных деревьев для проверки важных функций.

Ура, спасибо за чтение! 😃

Вы можете найти полный код Python в моем репозитории Github.



В случае возникновения каких-либо вопросов, не стесняйтесь связаться со мной в LinkedIn, Medium и Kaggle, и я буду рад поддержать.