-
🤖 데이터 유출(Data Leakage)와 파이프라인(pipeline)머신러닝 2024. 2. 26. 18:49
일반적인 데이터 유출과 머신러닝에서의 데이터 유출은 각각의 의미와 영향을 가지고 있다.
일반적인 데이터 유출은 보안 위협으로, 개인정보 침해나 기업의 기밀 정보 누출과 같은 심각한 문제를 초래할 수 있는 반면, 머신러닝에서의 데이터 유출은 모델 훈련 과정에서의 문제로, 모델의 성능과 일반화 능력에 직접적인 영향을 미친다.
1. 의도와 발생 원인 :
일반적인 데이터 유출 > 악의적인 목적이나 부주의한 행위에 의해 발생, 해커의 공격, 내부자의 정보 유출, 실수로 인한 잘못된 공유 등의 이에 해당한다.
머신러닝에서의 데이터 유출 > 주로 모델 훈련 과정에서 발생, 훈련 데이터와 테스트 데이터 간의 정보 유출로 인해 모델의 성능이 과도하게 낙관적으로 평가되는 것을 의미한다.
2. 영향과 위협 :
일반적인 데이터 유출 > 개인정보 침해, 금융 상기, 기업의 기밀 정보 유출 등의 심각한 문제를 초래할 수 있다.
머신러닝에서의 데이터 유출 > 모델의 성능과 일반화 능력에 직접적인 영향, 데이터 유출이 발생하면 모델이 테스트 데이터에 대해 과도하게 최적화되어 실제 성능을 정확하게 평가하는 데 어려움을 초래할 수 있다.
3. 대응 방법 :
일반적인 데이터 유출 > 주로 보안 정책 강화, 암호화, 접근 제어 등의 기술적 및 법적 조치를 포함한다.
머신 러닝에서의 데이터 유출 > 데이터 분할, 교차 검증, 특성 선택 등의 기술적인 접근법을 사용하여 데이터 유출을 방지하고 모델의 신뢰성을 높이는 것이 필요하다.
데이터 유출과 파이프라인
데이터 유출의 일반적인 원인은 테스트 데이터 및 학습 데이터를 혼합하여 모델을 훈련하고 평가하여, 테스트 데이터의 정보가 모델 학습에 노출되는 것에 있다.
모델을 선택하는 데에 있어 테스트 데이터를 사용해선 안 되는다는 것은 당연하게 들릴 수 있지만 특정 전처리 단계를 적용할 때처럼 일부의 단계에서는 놓치기 쉽다.
훈련 데이터와 테스트 데이터는 동일한 전처리 과정을 거쳐야 하지만 이러한 전처리는 훈련 데이터에서만 학습되어야 한다는 것이 중요하다.
예를 들어, 데이터를 정규화하는 경우 평균으로 나누는 정규화 단계가 있는데, 이때의 평균은 훈련 데이터의 평균이어야 한다.
테스트 데이터의 정보가 이 평균을 계산하는 데 사용이 된다면 모델에 영향이 가게된다.
- 데이터 유출을 방지하는 방법
💡사전 처리 단계 전에 항상 데이터를 학습데이터와 테스트 데이터로 분할할 것
> fit 및 메서드를 사용할 때 테스트 데이터를 포함하지 말 것
: fit 메서드는 주어진 데이터에 대해 특정 전처리 작업을 학습하는 데 사용된다.
예를 들어, 훈련 데이터셋에서 평균 및 표준 편차를 계산하여 스케일링을 수행하는 경우에는 'fit'메서드를 사용해 해당 통계량을 계산한다.
transform 메서드는 'fit'메서드로 학습된 변환을 적용하여 주어진 데이터를 변환한다. 이를 통해 훈련 및 테스트 데이터 모두에 동일한 변환을 적용할 수 있다.
fit_transform 메서드는 주어진 데이터에 대해 'fit'과 'transform'을 연달아 적용하는 편리한 방법이다. 그러나 이 메서드를 훈련데이터에만 적용되어야 한다. 테스트 데이터에 대해 'fit'을 호출해서는 안된다. 대신, 이미 훈련 데이터에 대해 학습된 변환을 사용해 테스트 데이터를 변환해야 한다.
즉, 훈련 데이터에서만 'fit_transform'을 사용해 전처리를 수행한 후, 테스트 데이터에 대해서는 'transform'을 사용해 동일한 변환을 적용해야 하고 이로써 훈련 데이터와 테스트 데이터 간에 일관된 전처리가 보장된다.
> scikit-learn 파이프라인을 사용할 것
scikit-learn 파이프라인은 데이터 전처리 및 모델 학습 단계를 하나의 통합된 작업으로 묶어주는 도구이다.
파이프 라인을 사용하면 각 단계에서 이전 단계의 학습 데이터만 사용하도록 보장하여 데이터 유출을 방지할 수 있다. 이는 모델이 테스트 데이터에 대해 과도하게 최적화되는 것을 방지하고, 실제 성능을 정확하게 평가할 수 있도록 해준다.
또한 각 단계의 전처리가 일관되게 적용되도록 한다.
즉, 훈련 데이터에 대해 적용된 전처리가 동일하게 테스트 데이터에도 적용되어 모델이 훈련된 방식과 동일한 방식으로 테스트 데이터를 처리하여 일관된 결과를 얻을 수 있도록 한다.
파이프라인은 교차 검증 및 하이퍼파라미터 조정과 함께 사용될 수도 있다.
이를 통해 각 단계의 하이퍼파라미터를 최적화하고 모델의 일반화 성능을 평가할 수 있으며 교차 검증을 통해 모델의 안정성을 평가할 수 있다.
관련 문서 : https://scikit-learn.org/stable/common_pitfalls.html
10. Common pitfalls and recommended practices
The purpose of this chapter is to illustrate some common pitfalls and anti-patterns that occur when using scikit-learn. It provides examples of what not to do, along with a corresponding correct ex...
scikit-learn.org
'머신러닝' 카테고리의 다른 글
🤖 ML 코드 입문 - 교차 검증 및 StartifiedKFold (0) 2024.02.26 🤖 정확도, 정밀도, 재현율, 특이도, F1 점수? (0) 2024.02.26 🤖Machine Learning_편향과 분산(Bias & Variance) (0) 2024.02.21 🤖Machine Learning_최적화(Optimization) (0) 2024.02.20 🤖Machine Learning_Regression(회귀) (0) 2024.02.20