Выбор функции с использованием fast_ml

Введение

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

Важность выбора функций в машинном обучении

Качество модели машинного обучения зависит от ваших данных - мусор на входе, мусор на выходе. (Мусор здесь будет означать плохие данные / шум в данных).

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

Этот пост предназначен для определения всех тех функций, которые являются постоянными. Он бывает двух видов:

  1. Постоянная функция: одинаковое значение во всех записях.
  2. Квазипостоянный признак: одно из значений доминирует 99,9%.

Давайте разберемся в этом подробнее

1. Постоянное значение (одинаковое значение во всех записях)

Как показано на изображении в качестве примера, у вас есть только Toyota в качестве значения в Car Make для всех записей в ваших данных. Если использовать эту функцию в обучении, ваша модель машинного обучения не даст ничего полезного. Вам лучше отказаться от этой функции. Точно так же таких функций может быть намного больше, и вам нужен более автоматический способ определения этого.

1) Используйте функции get_constant_features, чтобы получить все постоянные функции.

2) Сохраните все постоянные функции в виде списка для удаления из набора данных.

3) Удалите все такие объекты из набора данных. Мы видим, что количество функций упало с 301 до 268.

2. Квазиконстанта (одно из значений доминирует ~ 99% записей)

Как показано на изображении в качестве примера - в ваших данных на «Камри» приходится 99,9% записей. Если использовать эту функцию в обучении, ваша модель машинного обучения не даст ничего полезного. Или, что еще хуже, ваша модель может извлекать уроки из крайних случаев и вызывать переоснащение. Вам лучше отказаться от этой функции. Точно так же таких функций может быть намного больше, и вам нужен более автоматический способ определения этого.

1) Используйте функции get_constant_features, чтобы получить все постоянные функции.

  • порог: пороговое значение для определения квази-степени данных, которые вы хотите удалить. 99%, 99,9%, 98% и т. Д.

2) Сохраните все квазипостоянные функции в виде списка для удаления из набора данных.

3) Удалите все такие объекты из набора данных. Мы видим, что количество функций упало до 123 с 268.

Резюме

Фрагмент кода для функций констант и квазиконстант:

from fast_ml.utilities import display_all
from fast_ml.feature_selection import get_constant_features
# Use the function to get the results in dataframe
constant_features = get_constant_features(df)
display_all(constant_features)
# All the constant features stored in a list
constant_features_list = constant_features['Var'].to_list()
# Drop all the constant features from the dataset
df.drop(columns = constant_features_list, inplace=True)

Спасибо за чтение!!

Ноутбук с полнофункциональным кодом доступен по следующему адресу: