Иногда возникает сценарий, при котором производительность на тестовых данных очень низка, и мы не знаем первопричины этого.

Одна из возможных причин может заключаться в том, что распределение тестовых данных и распределение данных поезда не похожи.

Если у нас есть 1 или 2 функции, мы можем использовать некоторые методы построения графиков и увидеть распределение данных.

Как узнать, есть ли у нас более двух функций или, скажем, для каких-либо реальных данных?

Следуйте этой пошаговой процедуре.

Процедура:

  • Разделите свой набор данных (D) на обучающие (Dtrain) и тестовые (Dtest) наборы.
  • Сделайте для всех меток Dtrain значение 1 (положительное), в результате чего Dtrain¹ и Dtest будут равны 0 (отрицательно), что приведет к Dtest¹.
  • Теперь, объединив Dtrain¹ и Dtest¹, мы получаем новый набор данных D¹.
  • Обучите классификатор на Dtrain¹ и получите точность на тестовых данных Dtest¹.

Дело 1:

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

Позвольте мне кратко пояснить, когда в этом случае точность будет низкой? Если метка предсказанного класса для тестовых данных (фактическая метка равна 0) равна 1. Это означает, что если модель предсказывает, что тестовые данные будут меткой 1, они фактически похожи на данные поезда.

Случай 2:

Если точность, которую мы получаем на тестовых данных, средняя, ​​мы можем сделать вывод, что как обучающее, так и тестовое распределения не очень похожи.

Случай 3:

Если точность, которую мы получаем на тестовых данных, высока, мы можем сделать вывод, что и обучающее, и тестовое распределения не похожи.

Решение этой проблемы:

Итак, что мы можем сделать, чтобы улучшить нашу производительность на тестовых данных?

1. Отбрасывание дрейфующих объектов.

2. Вес важности с использованием оценки отношения плотности.

Если у вас есть вопросы / предложения, не стесняйтесь комментировать.

Вы можете связаться со мной через linkedin.