Вопрос или проблема
У меня есть набор данных о производительности отдельных лиц в 1960, 1970, 1980 и 1990 годах, например, рейтинг шахмат в эти годы для группы игроков с 40-летней карьерой. Меня попросили построить модель для предсказания производительности 1990 года на основе истории. Поэтому я построил модель, используя все данные, кроме данных за 1990 год, в качестве входных данных, а данные за 1990 год – в качестве желаемого результата. Является ли это утечкой, учитывая, что я использую данные 1990 года для предсказания данных 1990 года? Если я разделю данные на обучающую/тестовую выборки (с различными участниками в обучающей и тестовой выборках), будут ли предсказания теста действительными?
Если я правильно понял, ваша проблема формулируется следующим образом:
У вас есть 3 независимые переменные (60, 70, 80), и вы хотите использовать их для предсказания значения переменной 90-х.
Обучая вашу модель на всех игроках, модель, по сути, уже видела все возможные входные данные. Хорошей модели было бы тривиально достичь точности, близкой к 100%.
Чтобы справедливо проверить вашу модель, вам нужно сохранить некоторые строки (игроков) “в секрете”, а затем использовать их в качестве тестовых образцов, чтобы протестировать вашу модель на неизвестных данных.
Если вы сделаете это, у вас будет гораздо более полное представление о производительности вашей модели (с компромиссом в виде меньшего объема обучающих данных). Но это, по сути, обязательно, иначе результаты тестирования на известных (для модели) данных практически бесполезны.
Обновление:
В случае, если вы уже делаете разделение на обучающую и тестовую выборки, все еще есть способ утечки. Если вы делаете предсказания на тестовом наборе, а затем используете выводы, которые вы получили от этого, чтобы изменить модель, это действительно утечка.
Существует два способа борьбы с этим.
Один способ – исправить это, разделив тестовый набор на валидацию и тест, сделать все процедуры и исправления вашей модели, используя ее валидационную точность в качестве меры успеха, а затем (когда вы скажете “моя модель готова”) просто сделать окончательное предсказание на тестовом наборе, чтобы оценить производительность на неизвестных данных.
Если ваших данных не так много, и это не очень практично для дальнейшего разделения, вы также можете попробовать провести кросс-валидацию на обучающем наборе вместо этого.
Ответ или решение
Вопрос о том, произошла ли утечка данных (data leakage) в предложенной задаче предсказания, стоит разобрать с разных точек зрения. Давайте проанализируем вашу ситуацию подробно.
Контекст задачи: У вас есть данные о производительности игроков в шахматах за 1960, 1970, 1980 и 1990 годы. Вы хотите построить модель, которая будет предсказывать производительность в 1990 году на основе данных предыдущих лет (1960, 1970, 1980), исключая данные 1990 года из обучения модели.
1. Проблема утечки данных
Утечка данных происходит, когда информация из тестового набора inadvertently используется при обучении модели, что может привести к избыточной оценке ее эффективности. В вашем случае, вы хотите определить, происходит ли это.
На первый взгляд, если вы используете только данные до 1990 года для предсказания результатов этого года, и у вас есть четкий раздел между обучающей и тестовой выборками (то есть разные игроки для обучения и тестирования), то утечки, по идее, не должно быть. Однако, есть несколько нюансов:
-
Ограничение данных: Если ваша модель обучается на всех данных и потом тестируется на тех же данных (но с другим набором игроков), это не приведет к утечке данных. Важно, чтобы в ходе подготовки и тестирования модели не пересекались индивидуальные данные.
-
Тренинг и тестирование: Если вы адекватно разъединили данные игроков на тренировочную и тестовую выборки, то вы можете безопасно утверждать, что утечки нет, и ваши предсказания будут актуальны.
2. Подход с перекрестной проверкой (cross-validation)
Ещё одним важным аспектом, который следует учесть, является использование перекрестной проверки. Если у вас недостаточно данных для создания четкого разделения между обучающим и тестовым наборами, рассмотрите возможность использования K-блочной перекрестной проверки. Это поможет вам оценить стабильность модели на разных подвыборках данных и избежать потенциальной утечки.
3. Валидация и тестирование
Также важно внедрить подход к валидации моделей. После обучения модели на учебном наборе данных, вы можете выделить дополнительный набор данных для валидации, чтобы оптимизировать гиперпараметры и оценить качество модели до финального теста. Только после того как процесс оптимизации завершен, проведите финальную оценку на тестовых данных.
4. Итоги
Ваша текущая методология, при условии что вы следуете описанным рекомендациям для разделения данных на тренировочный и тестовые наборы, не подразумевает утечки данных. Если вы будете правильно управлять процессом валидации и тестирования, ваши предсказания на тестовой выборке будут валидными. Это гарантирует достоверность вашего анализа и позволит вам получить реальные результаты эффективности модели.
Обеспечение соблюдения этих стандартов — критически важный шаг для создания надежных и воспроизводимых моделей.