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

ДОВОЛЬНЫ ЭТОЙ ТОЧНОСТЬЮ?

История начинается с того, что мы должны создать модель, которая может очень хорошо обобщать «невидимые» данные, и под «невидимыми» я буквально имею в виду невидимые. Но когда мы разделяем данные на обучающие и тестовые данные после всего этого удивительного EDA и, к нашей совести, мы можем быть обмануты, думая, что наша модель будет обобщать невидимые данные (тестовые данные) хорошо, но неосознанно. является недостатком некоторых методов, который приводит к утечке данных, а достигнутая нами точность может быть ложным ориентиром, который наша модель может хорошо обобщить.

ВОЗМОЖНЫЕ ОБЛАСТИ УТЕЧКИ ДАННЫХ

Рассмотрим этот обычный сценарий, когда у вас есть пропущенные значения, и вы хотите их импутировать, поэтому вы решаете интерпретировать их со средним значением, медианой или модой, но при этом обратите внимание, что одно и то же среднее значение, медиана или мода вычисляются с учетом всего набора данных, и поэтому, когда вы собираетесь вставить пропущенные значения, а затем разделить набор данных на поезд и тест, в данных уже есть загрязнение, где тестовые данные явно разделяют информацию обучающих данных (отсутствующее значение было заменено некоторым значением, которое было доход рассчитывается с учетом всех данных).

Другая возможная область, где может произойти утечка, — это стандартизация/нормализация данных, данные стандартизируются/нормализуются с учетом всех данных, а позже мы продолжаем и разделяем стандартизированные/нормализованные данные на обучение и тестирование, но информация передается, и произошло загрязнение. и тестовые данные больше не «невидимы», и, следовательно, модель хорошо работает и с тестовыми данными, что дает нам более высокие показатели.

КАК ИЗБЕЖАТЬ УТЕЧКИ ДАННЫХ?

Чтобы избежать этого, требуется определенная зрелость в понимании необходимости иметь совершенно разные данные во время обучения и тестирования. Есть несколько хороших практик, которым следует следовать во время EDA, которые гарантируют, что в целом утечка данных будет минимальной или незначительной.

  1. Заранее разделите все данные на данные для обучения и тестирования.

2. Создайте конвейеры или определяемые пользователем функции со всеми шагами EDA и примените их к обучающим и тестовым данным отдельно (например, среднее/медиана/мода обучающих данных будет использоваться для вменения отсутствующих значений). только данных поезда, и то же самое относится и к тестовым данным.)

3. Используйте метод перекрестной проверки в k раз.

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

Надеюсь, это было информативно, спасибо! 🙏🏻