본문 바로가기

개발/Deep Learning

[Kaggle] Python으로 런던 자전거 수요 예측해보기 :: (4) 시그마 이상치 제거

자, 이제 어느정도 데이터가 이런식으로 굴러가는구나~~

느낌이 왔으니, 이제 데이터에 조작을 좀 해보겠습니다. 이상치를 제거해보려고 하는데요.

이상치 제거 전과, 제거 후 사이의 값 갯수가 약 150개? 정도 차이가 나죠

근데 아웃라이어 제거(=시그마 이상치 제거; Remove Outlier Data)가 뭔데..? 뭐야... 말이 왜이렇게 어려운데?!?!?!

이 기술은 케글(Kaggle)에서 상위 랭크로 올라가려면 꼭 필요한 기술 중 하나라고 하네요.

그래서 저도 공부해보았습니다.

 


 

■ 데이터 이상치 탐지(Data Outlier Detection)

말 그대로 이상이 있는 데이터를 뜻합니다. 일반적인 데이터 패턴과 다르게, 매우 이상한 패턴을 가지고 있는 데이터를 뜻합니다. 머신러닝과 딥러닝에서는 이러한 이상치 데이터 때문에 모델의 성능이 크게 좌우됩니다.

충분히 쉽게 설명이 된 것 같긴 합니다만, 우리는 인간이니까 눈에 띄게 이상한(혹은 잘못된) 오류라던가, 융통성(?)을 좀 발휘할 수가 있습니다. 하지만 페타 바이트 단위의 엄청난 데이터를 학습하는 로봇의 입장에서는, 잘못된 오류까지 이상하게 배워버릴 수가 있지요. 그래서, 이러한 이상한 데이터 요소를 제거해주는 겁니다. 그래야 더욱 효율적인 데이터 학습이 가능하겠지요?

그럼 이상치가 어느정도인지 탐지를 해야 제거도 할 수 있으니, 탐지하는 방법에 대해서 먼저 공부를 해봅시다.

탐지하는 방법에는 IQR(Inter Qunatile Range)이 대표적인 방법 입니다. IQR은 사분위 값의 편차를 사용합니다. 이 말도 상당히 어려워보이는데, 다시 생각해보면 '4개로 쪼갠다'입니다. 옛날 수학시간에 4사분면 배웠죠 저희..ㅎㅎ 그런겁니다. 

따라서, 어떻게 사분위로 나눌지는 다음과 같습니다.

Q1 = 25%(1/4지점)

Q2 = 50%(2/4지점)

Q3 = 75%(3/4지점)

Q4 = 100%(4/4지점)

그리고, Q3 - Q1를 해줍니다. (Q3 - Q1의 뜻은, 사분위수의 상위 75% 지점의 값과 하위 25% 지점의 값 차이 입니다.)

IQR은 Box Plot의 기본이 되는 수치라고 말할 수 있습니다.

출처 https://hong-yp-ml-records.tistory.com/15

박스안의 노란줄이 Median 즉, 중앙값을 의미하며 박스의 왼쪽과 오른쪽 변이 Q1(25 퍼센타일), Q3(75 퍼센타일)을 의미합니다. 위에서 설명했던 바와 같이 Q3 - Q1이 IQR이 되며, Q1에서 1.5 * IQR을 한 값을 빼준 값을 최소 제한선, Q3에서 1.5 * IQR을 더해준 값을 최대 제한선으로 둡니다.

따라서, 그 밑, 또한 그것을 넘어가는 값들을 이상치라고 말할 수 있습니다.


이 이론을 숙지한 후, 다시 예제를 보면,

lower_limit 값과 upper_limit 값 사이의 값만 제대로 된 값이라고 취급을 하고, 그 외의 값들은 제거해주는 모양새가 보이시죠?

그런데 위의 내용과 상이한 점은 3을 곱해주었다는 것입니다. 보통은 1.5를 곱해주는 경우가 많지만, 무조건 1.5를 곱해주어야 한다는 것은 아닙니다. 필요시 이상치의 범위에 따라 숫자를 1.5가 아닌 다른 숫자로 곱해주어 값을 내는 경우도 있으니, 이 부분에 대해서는 추후 다시 상세하고 면밀히 알아보도록 합시다.