Вопрос или проблема
У меня есть следующий код:
from sklearn.inspection import permutation_importance
result = permutation_importance(
search, new_X_test, Y_test, scoring='accuracy', n_repeats=5, random_state=42, n_jobs=-1
)
importance_scores = result.importances_mean
feature_names = new_features # Предполагается, что 'new_features' - это список ваших имен признаков
importance_df = pd.DataFrame({'feature': feature_names, 'importance': importance_scores})
importance_df = importance_df.sort_values('importance', ascending=False)
Я делаю проект, в котором я пытаюсь предсказать более 2.5 голов в футбольных матчах. Я достиг точности 54% на тестовых данных с использованием модели случайного леса. При применении важности перестановки все признаки равны 0.
То, что вы пытаетесь сделать, является чрезвычайно сложной задачей, а возможно, и невозможной. Кто может предсказать, будет ли цена данной акции выше или ниже на следующей неделе? Существует множество признаков, которые могут быть полезными/логичными, такие как ценовой импульс, продажи за последний квартал, внутренние продажи, … тем не менее фактор случайности является важным, и он не предсказуем.
В вашем случае тот факт, что важность перестановки равна 0 для всех признаков, показывает, что эти признаки не лучше, чем случайные числа для вашей модели.
Кроме того, хороша ли модель? Положительный класс составляет 54%, поэтому, если вы возьмете наивную модель, которая всегда предсказывает 1 (положительный класс), она получит точность 54%.
Таким образом, ваша текущая модель не лучше, чем наивная модель, и как следствие, коэффициенты важности перестановки не удивительны.
Ответ или решение
Теория
Переменная важность по перестановке (англ. Permutation Importance) является одним из методов оценки значимости признаков в моделях машинного обучения. Она основывается на идее, что если мы рандомизируем один из признаков, и это негативно скажется на качестве модели, то данный признак был значительным. Если же качество модели остается неизменным после такой рандомизации, значит, признак не несет важной информации для предсказания.
Пример
Ваша задача состоит в предсказании возможности того, что в футбольном матче будет забито более 2.5 голов. Вам удалось достичь точности в 54% используя модель случайного леса. Однако, при применении метода переменной важности по перестановке, все признаки показали нулевую значимость.
Применение
Ситуация, в которой вы оказались, вполне понятна и имеет несколько объяснений. Рассмотрим возможные причины:
-
Недостаточность данных или их качество: Возможно, что ваши данные не содержат достаточного количества информации, чтобы заметно повлиять на предсказания модели. Например, использованные признаки могут не отражать влияющие на исход матча факторы, такие как состав команды, форма игроков или погода. Также возможно, что данные просто шумные.
-
Проблемы с целевой метрикой: У вас точность модели составляет 54%. Это значение кратно случайному угадыванию, если, например, в 54% случаев события происходили. То есть ваша модель не лучше, чем случайный прогноз, и в этом случае признаки не дают дополнительно значимой информации для модели.
-
Переподгонка (Overfitting) или недоподгонка (Underfitting): Возможно, ваша модель либо недостаточно хорошо справляется с задачей, либо слишком сильно настроена под конкретные данные, что приводит к проблемам обобщения на тестовых данных.
-
Некорректная настройка метода Permutation Importance: Иногда особенности самого метода или его некорректное использование, например, неправильная выборка тестовых данных, может привести к неверным результатам.
Рекомендации по улучшению
-
Расширение набора данных: Попробуйте найти и добавить новые признаки, которые действительно могут повлиять на результат матча. Это могут быть статистики игроков, погодные условия, результаты предыдущих матчей и так далее.
-
Изучение базовых метрик: Проанализируйте распределение целевой переменной и базовые метрики вашего набора данных. Возможно, существует более оптимальный подход к классификации, учитывая другие модели и метрики.
-
Кросс-валидация и выборка данных: Убедитесь, что данные разделены на тренировочные и тестовые выборки корректно. Для этого рекомендуется использовать методы кросс-валидации, которые минимизируют риск переобучения. Убедитесь, что модель проверяется на данных, которые не использовались для её обучения.
-
Альтернативные алгоритмы и ансамблирование: Определенные задачи могут требовать использования других моделей. Возможно, использование градиентного бустинга или других ансамблевых методов улучшит качество предсказаний.
-
Гиперпараметрическая настройка: Оптимизация параметров модели может сыграть важную роль. Используйте такие методы, как grid search или random search для поиска оптимальных параметров.
-
Анализ первопричин нулевой значимости: Проведите тщательный анализ данных и модели. Попробуйте разъяснить причины, по которым важность признаков оказалась нулевой. Возможно, ключевым является неправильный подход к заданию или использование неподходящих метрик.
-
Интерпретация и Explainable AI: Используйте интерпретируемые модели и методы, такие как LIME или SHAP, чтобы глубже понять, каким образом каждый признак влияет на исходные предсказания.
Эти шаги могут помочь понять, почему признаки имеют нулевую значимость в вашем конкретном случае, и что делать, чтобы улучшить модель. Важно проводить всесторонний анализ данных и моделей, только так можно получить качественные и надежные прогнозы.