LOFO (метод выбора признаков)

алгоритм
LOFO (метод выбора признаков)

LOFO


1. LOFO (в настоящее время применимо ко всем моделям)

LOFO — это схема построения графика важности признаков и другие методы определения важности признаков (термин перехвата для моделей регрессии с линейной корреляцией, важность признаков для случайных лесов, важность признаков для XGBoost и LightGBM — plot_importance, корреляция для линейных данных и т. д.). Для сравнения, его характеристики кратко резюмируются следующим образом:

  • Может лучше обобщать неизвестные наборы тестов
  • Отрицательное значение присваивается характеристикам, оказывающим негативное влияние.
  • Группировка функций, особенно для многомерных функций, таких как TFIDF или ONE-HOT.
  • Функции с высокой степенью корреляции могут быть автоматически сгруппированы, чтобы предотвратить недооценку их важности.

Процесс важности функции LOFO (не учитывать одну функцию):

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

шаг:

    1. Введите все функции, LOFO оценивает эффект модели, включая все функции на основе всех функций;
    2. Удаляйте по одной функции за раз, переобучайте модель и оценивайте ее влияние на проверочный набор;
    3. Запишите среднее значение и стандартное отклонение важности каждой функции.

    Примечание. Если мы не передаем какую-либо модель, моделью, которую LOFO запускает по умолчанию, является LightGBM.

2. FastLOFO (в настоящее время применимо ко всем моделям)

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

  • Быстрый LOFO будет использовать обученную модель и проверочный набор для случайного возмущения каждого значения функции, а затем использовать обученную модель для его прогнозирования.Важность функции FLOFO — это результат прогнозирования модели в проверочном наборе.Разница между предыдущим ненавязчивые результаты.

3. Код

# pip install lofo_importance
from lofo import LOFOImportance
from lofo import FLOFOImportance
from lofo import plot_importance
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error as MSE
from sklearn.metrics import make_scorer
# train_data  label  test_data
clf = LinearRegerssion()
clf = clf.fit(train_data, label)  # 这里随便找了个数据集跑了下,能跑通即可
​
# data 为完整数据集, 后面标出特征列和标签列即可
LOFO = FLOFOImportance(clf, data, [特征列],[标签列] , scoring=make_scorer(MSE))  # cv=cv
​
# get the mean and standard deviation of the importances in pandas format
importances = LOFO.get_importance()
​
importances

image.png

plot_importance(LOFO.get_importance(), figsize=(8, 8), kind='box')

image.png

plot_importance(LOFO.get_importance(), figsize=(8, 8))

image.png

Thank you!