Как использовать визуализацию данных для выбора функций
В жизненном цикле машинного обучения выбор функций является критическим процессом, который выбирает подмножество входных функций, которые будут иметь отношение к прогнозированию. Включение нерелевантных переменных, особенно с плохим качеством данных, часто может испортить результаты модели.
Кроме того, выбор функций имеет следующие преимущества:
1) Избегайте проклятия размерности, поскольку некоторые алгоритмы плохо работают при высокой размерности, например общие линейные модели, дерево решений
2) сокращение вычислительных затрат и сложности, связанной с большим объемом данных.
3) уменьшить переоснащение, и модель с большей вероятностью будет обобщена для новых данных.
4) повысить объяснимость моделей.
В этой статье мы обсудим два основных метода выбора функций: методы фильтрации и методы оболочки, а также то, как использовать преимущества визуализации данных для принятия решений.
Предварительная обработка данных
Прежде чем перейти к выбору функций, мы всегда должны загрузить набор данных, выполнить предварительную обработку данных и преобразование данных:
1. Загрузить набор данных и импортировать библиотеки
Я использую набор данных Клиент кредитной карты от Kaggle, чтобы предсказать, кто с большей вероятностью будет уволен.
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from pandas.api.types import is_string_dtype, is_numeric_dtype df = pd.read_csv("../input/credit-card-customers/BankChurners.csv")
Теперь давайте взглянем на необработанные данные.
2. Определите прогноз: это упражнение представляет собой задачу классификации, на основе которой мы прогнозируем двоичную переменную Attrition_Flag, которая может быть либо существующими, либо привлеченными клиентами.
3. Изучите недостающие данные:
К счастью, этот набор данных не содержит пропущенных значений, но это не всегда так. Если вы хотите узнать больше о том, как исправить недостающие данные, эта статья может оказаться вам полезной.
4. Преобразование переменных: этот процесс состоит из кодирования категориальных переменных и преобразования всех переменных в один и тот же масштаб. Я выбрал кодировщик меток и масштабирование минимум-максимум соответственно.
Прочтите эту статью, если хотите узнать больше о технике преобразования данных:
Исследовательский анализ данных (EDA)
Визуализация данных и EDA могут быть отличными дополнительными инструментами в процессе выбора функций, и их можно применять следующими способами:
- Одномерный анализ: гистограмма и столбчатая диаграмма помогают визуализировать распределение и дисперсию каждой переменной.
- Корреляционный анализ: тепловая карта помогает выявить сильно коррелированные независимые переменные и уменьшить коллинеарность.
- Двумерный анализ: прямоугольная диаграмма и сгруппированная линейчатая диаграмма помогают выявить зависимость и взаимосвязь между независимыми переменными и переменной ответа.
(для лучшего понимания данных можно выполнить предварительный анализ данных перед преобразованием данных)
Одномерный анализ - гистограмма и столбчатая диаграмма
Чтобы получить обзор распределения, сначала давайте классифицируем характеристики по категориальным и числовым переменным, а затем визуализируем категориальные характеристики с помощью гистограммы и числовые функции с помощью гистограммы. Визуализация распределения дает предложения относительно того, являются ли точки данных более плотными или более рассредоточенными, и, следовательно, является ли дисперсия низкой или высокой. Характеристики с низкой дисперсией, как правило, меньше влияют на прогноз переменной результата.
Корреляционный анализ - тепловая карта
Некоторые алгоритмы требуют отсутствия коллинеарности в независимых переменных, включая логистическую регрессию, которая будет использоваться в этом упражнении. Следовательно, устранение сильно коррелированных функций является важным шагом, чтобы избежать этой потенциальной ловушки. Корреляционный анализ с визуализацией тепловой карты выделяет пары функций с высоким коэффициентом корреляции.
Как показано, нетрудно найти следующие пары сильно коррелированных функций:
- Возраст клиента и месяц_в_Книге (0,79)
- Total_Trans_Amt и Total_Trans_Ct (0,82)
- Avg_Open_To_Buy & Credit_Limit (1)
Основываясь на этом результате, я отказался от следующих переменных:
Двумерный анализ - прямоугольная диаграмма и сгруппированная столбчатая диаграмма
Двумерный EDA исследует взаимосвязь между каждой независимой переменной и целевой переменной. Категориальные характеристики и числовые переменные обрабатываются с помощью сгруппированной столбчатой диаграммы и прямоугольной диаграммы соответственно, и это исследование может дополнительно облегчить статистические тесты, используемые в методах фильтрации, например Тест хи-квадрат и ANOVA.
Сгруппированная линейчатая диаграмма используется в качестве визуального представления анализа хи-квадрат
Каждая независимая переменная устанавливается как основная категория. Целевая переменная устанавливается как вторичная категория с помощью hue = «Attrition_Flag». В результате он показывает, будет ли «Attrition_Flag» различаться по распределению на разных уровнях первичной категории. Если две переменные независимы, то можно ожидать, что распределение будет одинаковым на всех уровнях.
Это та же логика, что и при тесте хи-квадрат, который вычисляет разницу между наблюдаемым значением и ожидаемым значением на основе предположения о независимости. Если зависимости отсутствуют или существуют незначительно, мы ожидаем, что соотношение каждой группы столбцов будет пропорционально отношению привлеченных клиентов к существующим. Если соотношение значительно отличается, то это предполагает большое несоответствие между наблюдаемым значением и ожидаемым значением, что означает высокое значение хи-квадрат, следовательно, отвергает гипотезу о том, что две переменные независимы.
Построив график всех переменных категории по отношению к целевой метке, я обнаружил, что «Card_Category», похоже, отображает изменение соотношения между синим, золотым, серебряным и платиновым. В следующем разделе мы узнаем, верно ли это, в соответствии с количественной оценкой, основанной на методе фильтрации.
Ящичковая диаграмма используется как визуальное представление анализа ANOVA
Ящичный график отображает распределение групп числовых данных по их квантилям. Каждое поле показывает, насколько данные распределены внутри группы, а расположенные рядом поля указывают на разницу между группами. Он согласован с тестом ANOVA, который также анализирует степень различий между группами по сравнению с внутригрупповыми. Если относительная изменчивость велика, например, «Total_Revolving_Bal» и «Total_Cnt_Chng_Q4_Q1», показанные ниже, то это может указывать на то, что эти функции могут способствовать прогнозированию меток. Давайте выясним, можно ли это количественно оценить с помощью теста ANOVA в методах фильтрации.
Если вы хотите получить более полное представление об EDA, не стесняйтесь читать мою статью Полуавтоматический исследовательский анализ данных (EDA) в Python.
Выбор функции
В этой статье представлены два типа методов выбора функций: метод фильтрации и метод оболочки. Принципиальное отличие заключается в том, что метод фильтрации оценивает важность функции на основе статистических тестов, таких как хи-квадрат, ANOVA и т. д., тогда как метод оболочки итеративно оценивает производительность подмножеств функций на основе производительности моделей, созданных этими функциями.
Методы фильтрации
Методы фильтрации оценивают каждую функцию, оценивая ее связь с зависимой переменной. Для задач классификации с категориальными переменными ответа я использую эти три основные функции оценки: Хи-квадрат (score_func = chi2), ANOVA (score_func = f_classif) и взаимная информация (score_func = duplic_info_classif). Чтобы создать модель выбора функций, нам понадобится функция SelectKBest (), а затем укажите, какие функции оценки использовать и сколько переменных нужно выбрать.
selection_model = SelectKBest(score_func=score_function, k=variable_counts)
Я хотел бы знать, как эти два параметра, функция оценки и количество переменных, повлияют на точность модели, обученной выбранным функциям.
Во-первых, чтобы создать функцию выполнения выбора функции и изучить производительность модели, построенной на ней, я определяю функцию feature_selection со следующими шагами:
- импортировать необходимые библиотеки
- создать модель выбора функции на основе двух параметров: score_function (например, хи-квадрат) и количества переменных (например, в диапазоне от 1 до всех функций)
- обучить модель логистической регрессии на основе только выбранных функций
- вычисляет оценку точности
Во-вторых, чтобы проверить, как функции оценки и количество переменных повлияют на производительность модели, я итеративно передаю различные комбинации двух параметров, «variable_counts» и «score_function»,, используя следующие код.
Методы фильтрации с визуализацией данных
Результат был сгенерирован в формате фрейма данных, а затем использовалась линейная диаграмма, чтобы продемонстрировать, как повышается точность по мере увеличения количества выбранных функций. Как показано, за исключением метода взаимной информации, показатель точности стабилизируется на отметке 0,88 после достижения 8 функций.
После этого давайте исследуем, какова оценка каждой функции на основе различных подходов. На этот раз мы будем использовать гистограммы для визуализации оценок, распределенных по функциям в соответствии с хи-квадрат, ановой или взаимной информацией.
Как видите, разные подходы по-разному оценивают одну и ту же функцию, но некоторые функции всегда появляются выше в списке. Например, «Total_Revolving_Bal» всегда входит в тройку первых, что соответствует результатам прямоугольной диаграммы двумерного EDA. И «Card_Category» действительно имеет высокую важность функции по сравнению с другими категориальными переменными, что можно объяснить с помощью сгруппированной гистограммы.
Методы оболочки
Методы оболочки находят оптимальные подмножества функций, оценивая производительность моделей машинного обучения, обученных этим функциям. Поскольку он включает модель в процесс выбора функций, он требует большей вычислительной мощности. В этой статье рассматриваются два основных метода оболочки, прямой выбор и обратное исключение. Для выполнения прямого выбора и обратного исключения нам нужна функция SequentialFeatureSelector (), которая в основном требует четырех параметров:
- модель: для задачи классификации мы можем использовать логистическую регрессию, KNN и т. д., а для задачи регрессии мы можем использовать линейную регрессию и т. д.
- k_features: количество выбираемых функций
- вперед: определите, идет ли речь о прямом выборе или обратном исключении
- скоринг: показатели оценки для определения производительности модели, например проблема классификации - точность, точность, отзывчивость и т. д .; проблема регрессии - p-значение, R-квадрат и т. д.
Прямой выбор
Прямой выбор начинается с отсутствия элементов в модели и постепенно добавляет по одному элементу к подмножеству элементов за раз. Во время каждой итерации новая функция выбирается на основе оценки модели, обученной подмножеством функций.
Поскольку модель машинного обучения заключена в алгоритм выбора функций, нам нужно указать модель в качестве одного из входных параметров. Я выбираю логистическую регрессию для этой проблемы классификации и точности в качестве показателей оценки. Существует небольшая разница в вычислении точности в методе оболочки по сравнению с методом фильтрации. Поскольку мы подбираем только обучающий набор к модели оболочки, оценка точности, возвращаемая самим методом оболочки, полностью основана на наборе обучающих данных. Следовательно, необходимо обучить дополнительную модель выбранным характеристикам и провести дальнейшую оценку на основе набора тестов.
Для этого я использовал приведенный ниже код для импорта необходимых библиотек, а также для создания и оценки модели логистической регрессии, основанной на методе оболочки.
Обратное исключение
Проще говоря, это полная противоположность прямого выбора, начиная с включения всех функций для обучения модели. Затем элементы итеративно удаляются из подмножества функций в зависимости от того, влияют ли они на производительность модели. Точно так же логистическая регрессия и точность используются как метрики модели и оценки соответственно.
Методы оболочки и визуализация данных
Подобно методу фильтрации, я заключил как прямой выбор, так и обратное исключение в «цикл for», чтобы проверить, будут ли значения переменных иметь значение для оценки точности.
Как показано на линейном графике, точность быстро растет, когда количество признаков меньше 4, а затем остается стабильной около 0,88 после этого.
Поскольку в этом наборе данных всего около 20 объектов, выбор объектов может оказаться трудным, чтобы оказать какое-либо существенное влияние на производительность модели. Однако нельзя отрицать, что визуализация данных может помочь нам решить, какие функции и сколько функций подходят для набора данных или целей. Этот принцип определенно можно распространить на другие наборы данных с большим количеством переменных.
Забрать домой сообщение
В этой статье рассматриваются два основных метода выбора функций:
- Методы фильтрации: на основе хи-квадрат, ANVOA и взаимной информации
- Методы оболочки: на основе прямого выбора и обратного исключения.
Мы также рассмотрим, как использовать визуализацию данных, чтобы лучше понять свойства функций и, кроме того, выбрать соответствующее количество функций.
Другие подобные статьи
Первоначально опубликовано на https://www.visual-design.net 24 мая 2021 г.