머신러닝 : Data Leakage
Data leakage는 모델 입력으로 들어가선 안되는 데이터들이 유출되어 들어감을 말한다. 이러한 data leakage는 학습된 모델로 하여금 validation data에서의 성능이 좋게 나와도 test data 혹은 실측 데이터에서의 성능이 크게 떨어지는 문제를 유발한다. 그 종류로는 target leakage, train-test contamination 두 가지가 있다.
Target Leakage
모든 feature는 target과의 어떤 chronological order을 가진다. chronological order target보다 앞선 feature는 대게 문제 생길일이 없지만, target보다 뒤에오는 feature들은 가끔 그 순서를 무시하게 될 때 target leakage가 발생하게 된다.
모든 feature는 target에 대한 정보를 가지고있다. 그러나 chronological order에 그들이 가진 target에 대한 정보는 차이가 생긴다. target보다 앞선 feature들은 미래에 target이 어떤 값을 가질지에 대한 정보를 가진다. 그러나 target보다 뒤에 오는 feature들은 과거에 target이 어떤 값을 가졌었는지에 대한 정보를 가진다. 이 경우 target값이 정해지지 않으면 feature 값도 정해지지 않기 때문에 해당 feature값을 구하는 것이 불가능하다. 그럼에도 불구하고 데이터가 주어진다면 chronological order를 무시한 데이터를 가져오는 일이 발생했다는 것이다.
따라서, chronological order가 뒤에 오는 feature를 사용한 모델은 historical data를 사용하는 학습및 평가 과정에서는 높은 정확도를 보여주지만 deploy시에는 chronological order를 무시한 데이터를 사용하게 되어 낮은 정확도를 가지게 된다.
target leakage를 피하려면, chronological order가 target 보다 뒤에오는 feature를 사용하지 않거나 사용하더라도 그값을 올바르게 (타임머신을 쓰던, 가정을 하던) 구해서 사용하는 것이다. 더욱이 과거에 이미 일어난 일을 밝혀내는 모델이라면 target뒤에 오는 feature도 무리없이 구할 수 있을 것이다.
Train-Test Contamination
train data에 validation, test data에 대한 정보가 일부 들어가서 생기는 문제다.
댓글
댓글 쓰기