Утечка данных

Темы, которые будут освещены в этом блоге:

1. Проблема

2. Что такое утечка данных

3. Пути возникновения утечки данных

4. Как обнаружить утечку данных

5. Как устранить утечку данных

Проблема -

Обычно мы получаем набор данных и предположим, что мы используем простое разделение теста поезда «hold out approach», и затем я заметил, что когда я бежал на поезде, мы получили хорошую точность, например 95 %. Следующим шагом будет «deploy of model » и интегрированы в систему и заказчик начал ею пользоваться. Сейчас мы это отслеживаем и обнаруживаем, что точность упала до 70%, что приводит к снижению производительности модели. Это может быть “Data Leakage”

Как специалисты по данным, мы должны знать все, что связано с УТЕЧКОЙ ДАННЫХ.

Что такое утечка данных?

  • Утечка данных в контексте «machine learning» и «data science» относится к проблеме, когда информация из outside the training dataset is used to create the model.. Эта дополнительная информация может поступать в различных формах, но общей характеристикой является что это информация, к которой модель не будет иметь доступа при ее использовании для прогнозирования в сценарии real-world.
  • Это может привести к завышенным оценкам optimistic performance во время обучения и проверки, поскольку модель имеет доступ к extra information. Однако когда модель развертывается в производственной среде, эта дополнительная информация больше не доступна, и производительность модели может значительно упасть. Это несоответствие обычно является результатом ошибок в планировании эксперимента.
  • Утечка данных возникает в том случае, когда для построения модели вместе с обучающими данными мы используем некоторые extra information из outside of training data to build the model. Тогда это сценарий, когда происходит «re Data Leakage ».
  • Мы получаем эту дополнительную информацию из разных мест во время обучения модели, но проблема в том, что когда мы развернем эту модель, мы don’t get any such information on the real dataset по этой причине получим плохие результаты.

Пример. Допустим, в колледже наша цель — сдача экзамена “Testing Phase”, а занятия, которые мы посещаем для сдачи экзаменов, — это наша “Training Phase” . В этом сценарии утечка данных выглядит следующим образом: «Перед экзаменами мы спрашиваем нашего учителя или другого старшего специалиста о схеме экзамена или спрашиваем о некоторых источниках, чтобы узнать важные главы для чтения, которые могут попасть на экзамен». Это дополнительная информация, которую мы получаем, называется «утечкой данных». » так что благодаря этой практике «оценки улучшились». В реальной жизни никто не был проинформирован о том, как работать на работе, и мы застряли в падении производительности, несмотря на то, что в колледже мы были лучшими.

Пути возникновения утечки данных:

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

1. Целевая утечка –

  • Утечка цели происходит, когда ваш предиктор включает данные, которые не будут доступны на момент составления прогнозов. “Output Column” called as “Target” , “Input Column” called as “Predictors”

Бывший. Данные об обнаружении мошенничества с кредитными картами у нас есть, и нам нужно найти “Fraudulent Transaction” с помощью некоторого входного столбца. Таким образом, если обученные данные используют весь столбец, точность составит 98 процентов, а после удаления некоторого столбца, поскольку этот столбец в будущем не будет доступен для прогнозирования, точность уменьшится.

2. Мультиколлинеарность с целевым столбцом –

  • Если у нас есть столбец, который сильно коррелирует с “Target Column” Нам следует avoid adding that column для разработки модели, это приведет к некоторой утечке данных.

3. Дублированные данные-

  • Предположим, у нас есть своего рода повторяющиеся строки в данных. Пример: в 1000 строках 100 у нас есть «duplicate rows », и мы разделили данные при обучении и тестировании и обучили модель. и during the testing time, we found similar rows which we were having in training data, поэтому модель обязательно улучшится, но это не истинное представление, и в этом причина «Утечки данных».

4. Утечка предварительной обработки – Загрязнение тестов поездов и неправильная перекрестная проверка –

  • Самый важный способ «утечки данных». Здесь мы предварительно обрабатываем данные, выполняя некоторые действия, такие как “filling in Missing data”, “scaling data”, “removing duplicate columns”, и множество преобразований, которые мы выполняем на основе по требованию в данных.

Бывший. У нас 1000 строк, и нам нужно заполнить пропущенные значения в “Age column”, чтобы мы нашли “Mean for entire rows” и заполнили среднее значение во всех недостающих местах. После этого выполните “Train Test Split” и “Trained Model”. Итак, если вы заметили, мы пропускаем “extra information”. Для заполнения пропущенных значений мы находим «общее среднее значение» и when we split data some rows are also present in “Test Data”, которые мы использовали для заполнения пропущенных значений, так что это поможет модели получить более высокую точность.

  • Но на невидимых данных мы не получим этой выгоды и результат будет снижен.

5. Настройка гиперпараметров –

  • В алгоритме машинного обучения «у нас есть около “Hyperparameter”, которые помогают сформировать лучшую модель. Как правило, мы обучали модель с различными значениями гиперпараметров, чтобы увидеть, какое значение обеспечивает наилучшую производительность, и when on test data we applied the model with the chosen hyper value to check accuracy and if accuracy is less we choose different hyperparameter values and again check accuracy. Это относится к «Дополнительной информации», поскольку мы используем тестовые данные для проверки наилучшей точности. This is a form of “Data Leakage”

Как обнаружить утечку данных:

  1. Просмотрите свою функцию –
  • Внимательно просмотрите все функции, используемые для обучения вашей модели. Включают ли они какие-либо данные, которые не были бы доступны во время прогнозирования, или какие-либо данные, которые прямо или косвенно раскрывают цель? Такие функции являются частым источником утечки данных.

Столбец «Бывшая высокая мультиколлинеарность» следует удалить.

2. Неожиданно высокая производительность –

Если мы получаем точность 100 или 99 единиц, в модели может произойти утечка данных.

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

3. Несогласованная производительность между обучением и невидимыми данными -

Это мы можем узнать, когда развернем модель в производстве.

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

4. Интерпретируемость модели –

  • После создания модели мы можем сделать “Feature Importance” и если конкретная «функция» показывает “High Importance”, и вы также не знаете, почему эта функция имеет такое большое значение, то это может быть знаком «Утечка данных».
  • Интерпретируемые модели или такие методы, как важность функций, могут помочь понять, что изучает модель. If the model places too much importance on a feature that does not seem directly related to the output, it could be a sign of leakage.

Как устранить утечку данных:

  1. Понимание данных и задач –
  • Прежде чем приступить к какой-либо обработке или моделированию данных, важно understand the problem узнать, какие данные и как они были собраны. Вы должны понимать, что each feature in your data represents, and whether it would be available at the time of prediction.

2. Тщательный выбор функций –

  • Просмотрите все функции, используемые в вашей модели. If any feature includes information that would not be available at the time of the prediction, или который прямо или косвенно выдает доступную цель, это должно быть removed or modified.

3. Правильное разделение данных –

  • Всегда разделяйте данные на наборы для обучения, проверки и тестирования во время early stage of your pipeline и перед выполнением какой-либо предварительной обработки или извлечения признаков. Выполните «Масштабирование», «Отсутствующее вменение» и другие функции разработки after splitting data to avoid data leakage.

4. Предварительная обработка внутри креста — цикл проверки —

  • Если вы используете такие методы, как «cross-validation», обязательно выполните предварительную обработку внутри цикла перекрестной проверки. Это гарантирует, что предварительная обработка выполняется отдельно для каждого сгиба данных, что предотвращает утечку информации из набора проверки в обучающий набор.

5. # Неверный способ

X_normalized = normalize(X)  # normalize the whole dataset
cross_val_score(model, X_normalized, y, cv=5). #perform cross - validation

#Правильный путь

pipeline = make_pipeline(normalizer, model)
Cross_val_score(pipeline, X, y, cv= 5)

6. Избегайте дублирования данных –

  • If the same individuals appear in both your training and test sets, this can cause data leakage. Важно гарантировать, что обучающий и тестовый наборы представляют собой непересекающиеся экземпляры.

Удаление любого “Duplicate Data», так как это может привести к “Data Leakage”.

Найдите меня здесь:

Github: https://github.com/21Nimisha

Linkedin: https://www.linkedin.com/in/nimisha-singh-b6183419/

Сообщение от AI Mind

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь: