Понимание различных способов определения важности функции

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

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

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

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

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

Загрузка набора данных

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

import pandas as pd
df = pd.read_csv('DIABETES.csv')

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

X = df[['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI','DiabetesPedigreeFunction','Age']]
y = df['Outcome']

Методы важности функции:

1. Использование важных функций Yellowbrick

Yellowbrick — это библиотека визуализации, которая в основном работает для выбора модели и визуализации производительности модели. Он построен с использованием sklearn и построен поверх matplotlib для визуализации.

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

#Creating SVM Model
from sklearn import svm
model = svm.SVC(kernel='linear')
#Importing Yellowbrick Feature Imporance and using it
from yellowbrick.model_selection import FeatureImportances
viz = FeatureImportances(model)
viz.fit(X, y)
viz.show()

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

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
#Visualizing Feature Importance
viz = FeatureImportances(model)
viz.fit(X, y)
viz.show()

2. Важность перестановки

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

from sklearn.inspection import permutation_importance
from sklearn.naive_bayes import GaussianNB
import matplotlib.pyplot as plt
#Defining the model
model = GaussianNB()
model.fit(X, y)
# perform permutation importance
results = permutation_importance(model, X, y, scoring='accuracy')
# get importance
importance = results.importances_mean
# summarize feature importance
for i,v in enumerate(importance):
    print('Feature: %0d, Score: %.5f' % (i,v))
# plot feature importance
plt.bar([x for x in range(len(importance))], importance)
plt.xlabel=df.columns[:-1]
plt.show()

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

from sklearn.linear_model import LogisticRegression
#Defining the model
model = LogisticRegression()
model.fit(X, y)
# perform permutation importance
results = permutation_importance(model, X, y, scoring='accuracy')
# get importance
importance = results.importances_mean
# summarize feature importance
for i,v in enumerate(importance):
    print('Feature: %0d, Score: %.5f' % (i,v))
# plot feature importance
plt.bar([x for x in range(len(importance))], importance)
plt.xlabel=df.columns[:-1]
plt.show()

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

Точно так же вы можете попробовать эти методы на разных наборах данных с разными моделями. Изучите эти методы и поделитесь своим опытом в ответах на эту статью.

Перед тем, как ты уйдешь

Спасибо за прочтение! Если вы хотите связаться со мной, не стесняйтесь обращаться ко мне по адресу [email protected] или в мой профиль LinkedIn. Вы можете просмотреть мой профиль Github для различных проектов по науке о данных и руководств по пакетам. Кроме того, не стесняйтесь просматривать мой профиль и читать различные статьи, которые я написал, связанные с наукой о данных.