목차
1. 머신러닝 예측 모델의 목적
2. Data Leakage란 무엇인가?
3. Data Leakage는 어떻게 발생하는가?
4. Data Leakage의 감지 (확인)
5. Data Leakage의 해결 방안
6. 글을 마치며
1. 머신러닝 예측 모델의 목적
우리가 머신러닝의 주된 목적은 [ "예측" ]이다.
즉, 현재 가지고 있는 데이터를 통해 새로운 데이터를 보다 빠르고 정확하게 예측 모델을 만드는 것이 우리의 과제이다.
과거 또는 현재의 데이터를 가지고 이를 가공하고 훈련시켜 미래를 예측하는 모델을 만드는 것이 그 예이다.
머신러닝에서 학습모델의 성능을 향상시키기 위한 작업을 하다가 갑자기 정확도가 높아졌다면 즉, Overfitting(과적합) 현상이 발생했다면 그 원인은 대부분 Data Leakage이다.
Dacon 경진대회의 규정에도 Data Leakage에 대한 규정이 나와있다
그럼 Data Leakage는 과연 무엇일까? 알아보자.
2. Data Leakage 란 무엇인가?
Data Leakage는 사전적 정의로 데이터 누출이다.
머신러닝에서 Data Leakage는 Training 데이터 이외의 정보가 모델 생성에 반영될 때 발생한다.
이 모델은 다른 방법으로는 알 수 없는 무언가를 알게 되거나, 예상 성능을 무효화할 수 있다.
전문가들은 Data Leakage를 다음과 같이 표현한다.
["머신러닝 알고리즘을 훈련하기 위해 사용하는 데이터에 예측하려는 정보가 포함될 때" ]
3. Data Leakage는 어떻게 발생하는가?
Data Leakage는 흔히 학습 과정에 사용된 데이터에 예측하려는 대상의 정보가 포함되어 있을 때 발생한다.
'부정행위'처럼 보이지만 우리가 인식하지 못하는 것이 대부분이기 때문에 '누출'이라고 부른다.
Data Leakage를 두 가지로 나누어 보자.
- Train-Test Contamination
- Target Leakage
(1) Train-Test Contamination
머신러닝에서 학습 진행 시 Train data(학승용 데이터)와 Test data(검증용 데이터)로 분할을 해서 진행한다.
데이터 분할을 하는 이유는 각각의 목적을 다르게 활용하기 위함이다.
하지만 이 분할을 하기 전에 데이터에 대한 전처리(평균내기, 결측값처리 등)를 한다면 Data Leakage에 빠지게 된다.
예를 들어보자.
우리가 2010.01~ 2023.04 기간의 강수량 자료를 가지고 있다.
이를 통해 월평균 소득이라는 Feature를 생성하려고 한다. 이때 2010.01~2020.12를 train data, 2021.01~2023.04를 test data로 활용하려고 한다. 그런데 데이터를 분할하기 전에 전체 데이터(2010.01~2023.04)의 평균을 결측치에 대입해 버린다면 test data의 정보가 train data의 결측치에 반영되게 된다.
(2) Target Leakage
분석에 있어서 회귀분석이라는 것을 들어봤을 것이다.
회귀분석은 간단히 말해 여러 가지 독립변수들을 통해 하나의 종속변수를 예측해 내는 것이다.
그런데 이 독립변수에 종속변수의 정보를 나타내는 변수가 포함되어 버린다면 과적합이 일어나게 된다.
예를 들어보자.
코로나 확진 여부를 예측하려고 한다.
이때 우리가 사용할 수 있는 독립변수로는 이름, 성별, 나이, 거주지, 직업, 백신접종여부 등이 있을 것이다.
그런데 독립변수에 코로나 지원금 수령여부, 자가격리여부 등 코로나 확진에 대한 정보를 포함한 변수가 포함된다면
당연히 모델의 예측도는 올라가게 된다.
4. Data Leakage의 감지 (확인)
그러면 위와 같은 Data Leakage가 발생했는지 확인하는 방법에는 무엇이 있을까?'
- 1 단계 : 모델 구축 전 EDA 단계
탐색적 데이터 분석(EDA)을 수행하는 동안 목표 변수와 상관관계가 매우 높은 Feature를 찾아보자.
물론 어떤 Feature는 다른 Feature보다 상관관계가 더 높을 수 있다. 하지만 생각보다 높은 상관관계를 가진 Feature는 신중하게 처리해야 한다. 따라서 EDA의 도움으로 통계 및 시각화 도구를 통해 데이터를 확인할 수 있다.
- 2단계 : 모델 구축 후
일반적으로 우리가 구축한 모델이 너무 잘 맞아떨어진다면(즉, 예측된 결과와 실제 결과가 거의 동일하다면), 또는 예외적으로 높은 가중치를 가진 Feature가 있다면 Data Leakage의 가능성을 의심할 수 있다. 따라서 테스트 전에 이전에 문서화된 결과와 예상 결과를 비교하는 것이 좋습니다.
- 3단계 : 훈련된 모델을 실제 환경에 제한적으로 적용
모델의 학습 및 성장 결과에 의해 생성된 행동 잠재력과 실제 결과 사이에 불일치가 있는지 확인하기 위해 Test Sample을 제한적으로 실제 환경에 설치할 수 있다.
이는 신뢰할 수 있지만 비용이 많이 드는 또 다른 Data Leakage 점검 방법이다.
5. Data Leakage의 해결 방안
글에서는 Data Leakage의 해결 방안으로 다음의 다섯 가지 방법을 제시한다.
- Idea-1 (Extracting the appropriate set of Features) (적절한 Feature에 대한 집합 추출)
- Idea-2 (Create a Separate Validation Set) (별도의 유효성 검사 세트 생성)
- Idea-3 (Apply Data preprocessing Separately to both Train and Test subsets) ( 데이터 전처리를 Train & Test 데이터셋에 별도로 적용)
- Idea-4 (Time-Series Data) (시계열 데이터에서의 해결방안)
- Idea-5 (Cross-Validation) ( 교차검증 - pipeline architecture)
이 내용에 대해서는 다음 포스팅에서 자세히 다루도록 하겠다.
6. 글을 마치며
Data Leakage는 머신러닝에 있어 많이 실수할 수 있는 부분이라고 한다.
이론적인 부분만 봐도 누구나 쉽게 빠질 수 있는 오류라고 생각한다.
Data Leakage의 해결 방안에 대한 공부와 Python에서의 코드작업을 통해 여러 실습을 해봐야겠다.
참고 자료 및 출처 :
Data Leakage in Machine Learning: How it can be detected and minimize the risk
Introduction
towardsdatascience.com
Data Leakage And Its Effect On The Performance of An ML Model
In this article, we will discuss all the things related to Data Leakage including what it is, how it has happened, how to fix it,
www.analyticsvidhya.com
https://seungseop.tistory.com/6
[Machine Learning] Data Leakage
데이콘에서 대회를 참여하다 보면 규칙 중에 Data Laekage 부정행위가 있다. 머신러닝을 공부하며 대회에 처음 참가하는 초보자 입장에서는 이게 무엇을 의미하는지 잘 모를 수 있다고 생각한다. (
seungseop.tistory.com
https://zhining.tistory.com/108
[데이터 전처리 07] - 데이터의 누수"Data Leakage"를 바로 잡자!
안녕하세요. 데이터 요리사, 루나입니다. 데이터 누수(Data leakage) 현상은 학습모델에 성능을 높이기 위해서 며칠 밤샘하다가 이것저것하다가 저지르기 쉬운 현상 중 하나입니다. 모델의 성능이
zhining.tistory.com
https://dacon.io/en/forum/403895
Data Leakage에 대한 개인적인 정리입니다
주차수요 예측 AI 경진대회
dacon.io
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tjdudwo93&logNo=221085844907
데이터 누수(Data leakage)란 무엇인가??-올바른 예측 모델링을 위한 필수작업
Data leakage는 머신러닝 예측 모델을 개발하는데 있어서 큰 문제 입니다. data leakage는 training데이터...
blog.naver.com
'머신러닝' 카테고리의 다른 글
[데이터 분석] Data Leakage Part 4. sklearn.pipeline 실습예제(1) (0) | 2023.04.23 |
---|---|
[데이터 분석] Data Leakage Part 3. sklearn.pipeline (0) | 2023.04.21 |
[데이터 분석] Data Leakage Part 2. Pipeline architecture (1) | 2023.04.21 |
[데이터 분석] Feature Engineering (0) | 2023.04.19 |