Выбор подходящих функций для включения в модель — один из самых важных этапов, которые специалист по данным может предпринять для создания успешной модели машинного обучения. Процедура поиска и выбора наиболее подходящих и информативных функций из набора данных для реализации при создании прогностической модели называется выбором функций. Для выбора функций доступно несколько видов методов, включая методы фильтрации, методы-оболочки и методы внедрения.
В следующем сообщении блога мы сосредоточимся на методах фильтрации, которые представляют собой тип метода выбора признаков, который исследует важность каждого признака независимо от используемой модели. Методы фильтрации оценивают характеристики на основе статистических критериев, таких как корреляция с целевой переменной, и ранжируют их в порядке значимости.
Ключевым преимуществом подходов с фильтрами является их скорость и простота, поскольку они не требуют обучения модели машинного обучения. В результате методы фильтрации являются отличным первым шагом в выборе признаков, поскольку они могут немедленно уменьшить размерность набора данных и повысить производительность модели.
Возможно, наиболее распространенными методами фильтрации являются:
я. Выбор признаков на основе корреляции: с помощью этого метода рассчитывается корреляция между каждым признаком и целевой переменной. Для включения в модель для построения модели рассматриваются признаки с наибольшей корреляцией.
II. Тест хи-квадрат: для категориальных функций этот подход оценивает независимость между функцией и целевой переменной. Для построения модели выбираются атрибуты с наибольшей статистикой хи-квадрат.
III. Взаимная информация: этот подход оценивает взаимные зависимости каждого атрибута и целевой переменной. Для построения модели выбираются атрибуты с максимально возможной оценкой взаимной информации.
IV. Порог дисперсии. Эта стратегия исключает функции с низкой дисперсией, поскольку они вряд ли окажут существенное влияние на производительность модели.
Использование Python для понимания концепции.
Вот пример кода Python, демонстрирующий способы выполнения Выбора функций на основе корреляции с помощью f_regression:
# Importing relevant libraries. import pandas as pd import numpy as np from sklearn.feature_selection import SelectKBest from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score
pandas
используется для обработки и анализа данных.numpy
— это библиотека числовых вычислений, используемая для работы с массивами и матрицами.SelectKBest
изsklearn.feature_selection
используется для выбора лучших K функций на основе заданной функции оценки.train_test_split
изsklearn.model_selection
используется для разделения набора данных на наборы для обучения и тестирования.LogisticRegression
изsklearn.linear_model
используется для создания модели логистической регрессии для классификации.accuracy_score
изsklearn.metrics
используется для расчета точности прогнозов модели.
# Creating a dummy dataset for student performance classification. data = {'Age': [18, 19, 20, 21, 22, 23, 24, 25], 'Gender': ['Male', 'Female', 'Male', 'Male', 'Male', 'Female', 'Female', 'Male'], 'StudyHours': [2, 4, 6, 8, 10, 12, 14, 16], 'Attendance': ['Low', 'Low', 'High', 'High', 'High', 'High', 'Low', 'High'], 'Pass': [0, 0, 1, 1, 1, 1, 0, 1]} df = pd.DataFrame(data) # Encode categorical variables df = pd.get_dummies(df, columns=['Gender', 'Attendance']) # Separate the features and target variable X = df.drop(columns=['Pass']) y = df['Pass'] # Apply the Pearson correlation coefficient for feature selection from sklearn.feature_selection import f_regression selector = SelectKBest(f_regression, k=2) X_new = selector.fit_transform(X, y) # Print the selected features selected_features = X.columns[selector.get_support()] print("Selected Features: ", selected_features)
Модуль f_regression в scikit-learn — это подход к выбору признаков, который вычисляет p-значения для каждого признака по отношению к целевой переменной с использованием F-значения (статистики F-теста). F-значение отражает линейную зависимость функции от цели, а p-значения оценивают статистическую значимость связи. С помощью функции оценки f_regression функция SelectKBest выбирает K лучших объектов с наибольшими F-значениями, что указывает на самые сильные линейные отношения с целевой переменной.
Этот кодовый блок выбирает функции на основе коэффициента корреляции Пирсона. Он использует функцию SelectKBest с f_regression в качестве функции оценки для вычисления коэффициента корреляции Пирсона между каждой функцией и целевой переменной. Он выбирает два верхних атрибута с лучшими оценками и преобразует набор данных, чтобы он включал только эти атрибуты. Результирующий набор данных X_new содержит только два верхних объекта, и их имена отображаются с помощью selected_features.
# Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42) # Train a logistic regression model using the selected features model = LogisticRegression() model.fit(X_train, y_train)
Используя функцию train_test_split из sklearn.model_selection, этот блок кода делит набор данных на наборы для обучения и тестирования. Для воспроизводимости результатов данные делятся на 80 % для обучения и 20 % для тестирования, при этом для параметра random_state установлено значение 42. Функция LogisticRegression из sklearn. Затем linear_model используется для обучения модели логистической регрессии на обучающих данных. Модель учится предсказывать целевую переменную y, используя только функции, выбранные во время выбора функций и сохраненные в X_new. Подходящий подход используется для оптимизации параметров модели с использованием обучающих данных в процессе обучения модели.
# Make predictions on the testing set y_pred = model.predict(X_test) # Evaluate the model's performance accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy)
Следует подчеркнуть, что методы фильтрации — это надежная и эффективная стратегия для выбора функций и повышения производительности модели машинного обучения. Но для получения наилучших результатов часто требуется сочетать методы фильтрации с дополнительными методами, такими как обертка или встроенные методы.
Наконец, я подчеркнул важность выбора функций в машинном обучении и выделил три типа методов выбора функций: фильтрация, упаковка и встраивание. Я также предложил подход к фильтрации, который использует выбор функций на основе корреляции вместе с фрагментами кода для его реализации. Хотя я не смог охватить все методы выбора признаков, в следующих постах я расскажу о других методах, таких как критерий хи-квадрат, взаимная информация и порог дисперсии. Я надеюсь, что эта запись в блоге помогла вам лучше понять методы выбора функций и способы их реализации в Python. Если у вас есть какие-либо вопросы или отзывы, пожалуйста, свяжитесь со мной через LinkedIn.