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

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

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

Возможно, наиболее распространенными методами фильтрации являются:

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

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.