LOFO
1. LOFO (в настоящее время применимо ко всем моделям)
LOFO — это схема построения графика важности признаков и другие методы определения важности признаков (термин перехвата для моделей регрессии с линейной корреляцией, важность признаков для случайных лесов, важность признаков для XGBoost и LightGBM — plot_importance, корреляция для линейных данных и т. д.). Для сравнения, его характеристики кратко резюмируются следующим образом:
- Может лучше обобщать неизвестные наборы тестов
- Отрицательное значение присваивается характеристикам, оказывающим негативное влияние.
- Группировка функций, особенно для многомерных функций, таких как TFIDF или ONE-HOT.
- Функции с высокой степенью корреляции могут быть автоматически сгруппированы, чтобы предотвратить недооценку их важности.
Процесс важности функции LOFO (не учитывать одну функцию):
- Итеративно удаляет функцию из набора функций и вычисляет важность функции для набора функций на основе выбранной метрики, оценивая производительность модели с использованием выбранной схемы проверки.
шаг:
-
- Введите все функции, LOFO оценивает эффект модели, включая все функции на основе всех функций;
- Удаляйте по одной функции за раз, переобучайте модель и оценивайте ее влияние на проверочный набор;
- Запишите среднее значение и стандартное отклонение важности каждой функции.
Примечание. Если мы не передаем какую-либо модель, моделью, которую 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
plot_importance(LOFO.get_importance(), figsize=(8, 8), kind='box')
plot_importance(LOFO.get_importance(), figsize=(8, 8))