데이터분석

[데이터 분석] Data Exploration Guide - Outlier(3)

쌍쌍바나나 2016. 7. 5. 22:00
반응형

Outlier란?

잘못 평가된 값으로, 결과적으로 잘못된 분석결과를 초래할 수 있는 값들을 말합니다. 간단하게 말해서 샘플의 전체적인 패턴에서 벗어나게 관측되는 값을 말합니다.

  아래 그림을 보면 고객들의 수입을 프로파일링 한 결과를 box-plot 그래프로 표현을 했습니다. 수입의 분포를 보면 $0.8million이 매년 수입의 평균을 나타냅니다. 그러나 두명의 고객은 매년 $4, $4.2 million의 수입이 있습니다. 전체적인 population을 볼때 이 두명의 고객은 상대적으로 많이 높은 수입을 갖고 있습니다. 이처럼 두명의 고객의 수입은 전체적인 수입 패턴에서 벗어나게 나타나는 outlier라고 말할 수 있습니다.

Outliers의 종류

  Outlier의 종류는 Univariate와 Multivariate 두가지로 나눌 수 있습니다. 위에서 언급한 예제는 하나의 변수 분포에서 나타난 outlier이기 때문에 univariate outlier라고 할 수 있습니다. multivariate는 n개의 dimensional space에서 나타나는 outlier라고 생각하시면 됩니다. multivariate의 outliers를 발견하기 위해서는 multi-dimensions에서의 분포를 확인하면 됩니다. 

  위의 두가지 종류의 outlier를 확인하기 위해 키와, 몸무게의 데이터를 예로 들어보겠습니다. 키, 몸무게 각 값에 대해서는 univariate의 outlier를 확인하면 나타나지 않습니다. 이제 키와 몸무게의 값을 함께 scatter plot으로 나타내면 두개의 outliers를 확인할 수 있습니다. 이처럼 한개의 값에서 나타나지 않는 outlier가 n개의 값의 관계를 함께 고려했을때 outlier로 나타날 수 있습니다. 

Outliers의 원인

  위 예제처럼 우연히 outlier를 발견하게 되면, 우리는 그 outliers의 원인을 찾아야 해결을 할 수 있습니다. 그렇다면 outlier가 생성되는 원인은 무엇이 있을지 알아보겠습니다. 

  • Artificial(Error) / Non-Natural
    • Data Entry Error - 사람이 데이터를 수집하는 과정에서 발생할 수 있는 에러를 말합니다. 예를들어 $100을 입력해야 하는데, $1000... 을 입력하면 10배의 금액으로 입력이 되겠지요. 이렇게 입력된 값은 전체 샘플 데이터의 분포를 봤을때 쉽게 발견을 할 수 있습니다.
    • Measurement Error - 데이터를 측정하는 과정에서 발생하는 에러를 말합니다. 예를들어 몸무게를 측정하는데, 9개는 정상 동작, 1개는 비정상 동작을 할때, 한 사용자가 비정상동작하는 체중계를 이용할 경우에 에러가 발생합니다.
    • Experimental Error - 실험을 할때 생기는 에러를 말합니다. 예를들어 10명의 운동선수가 경쟁을 하는데, 동일한 실험 조건이 아닌 다른 조건(기후, 장소 등)에서 달리기를 할 경우에는 실력외에도 다른 환경적인 조건이 의존성이 있기 때문에 에러가 발생합니다.
    • Intentional Outlier - self-reported measures에서 나타는 에러를 말합니다. 예를들어 여자들에게 민감한 질문을 설문조사할때, 만약에 몸무게가 몇이예요? 라는 질문을 하게 되면 자신도 모르게 낮게 기입을 할 것이고, 남자들에게 키를 물어보면 나조 모르게 높게 기입할 것입니다. 이처럼 누군가는 정확하게 대답하겠지만, 민감한 질문에 대해서 자기자신이 거짓되게 기입한 것을 의미합니다.
    • Data Processing Error - 데이터 마이닝을 할때, 여러개의 데이터에서 필요한 데이터를 추출하거나, 조합해서 사용하는 경우에 발생하는 에러를 말합니다.
    • Sampling Error - 데이터를 샘플링하는 과정에서 나타나는 에러로, 운동선수들의 키를 측정할때 만약 농구선수를 함께 포함하는 샘플링을 하는 경우에 농구선수들을 outlier로 생각할 수 있습니다. 이처럼 샘플링을 잘못한 경우를 말합니다.
  • Natrual
    • Natrual Outlier - 위 처럼 artificial하게가 아닌, 그 외 자연스럽게 발생하는 outlier를 말합니다. 그렇기 때문에 data mining을 할 경우, 세그먼트를 분리해서 처리해야 합니다. 

Outliers가 데이터에 미치는 영향

outliers는 데이터 분석이나, 통계 모델링의 결과에 심각하게 변화를 줄 수 있습니다. 아래 outliers가 주는 영향에 대해서 정리하면 

  • error variance를 증가시키고 statistical tests의 power를 감소시킵니다. 
  • outliers가 non-randomly 분포를 보이면, normality를 감소시킵니다. 
  • regression, ANOVA, 그리고 다른 statistical model assumptions에 영향을 줄 수 있습니다. 

위 영향에 깊이 이해하기 위해서 예제를 보면

  outlier가 있는 경우에 상당히 다른 mean, standard deviation의 값을 나타내는 것을 볼 수 있습니다. 첫번째 outlier가 없는 경우에는 평균이 5.45인 반면, outlier가 포함되는 경우에는 30이라는 큰 평균이 나옵니다. 이는 estimate한 값이 완벽하게 틀리다는 것을 볼 수 있습니다.

Outlier를 발견하는 방법

  앞에 내용은 우리가 outlier가 왜 발생하고, outlier가 데이터에 어떻게 영향을 미치는지에 대해 알아보았다면, 이제는 outlier를 어떻게 발견하는지에 대한 내용입니다. 거의 대부분 outlier를 찾기 위해서는 visualization을 통해서 발견을 합니다. Box-plot, Histogram, Scatter Plot을 사용합니다. 위에서도 scatter plot과 box-plot을 이용해 outlier를 찾는 예제를 보았습니다. 몇 분석가들은 outliers를 발견하기 위한 방법은 아래와 같습니다.

  • 어떤 값이,-1.5 * IQR ~ 1.5*IQR 의 구간에서 벗어나 있는 경우. (IQR은 interquartile range rule을 의미합니다.)
  • capping methods : 백분위 수에서 5th ~ 95th 범위에서 벗어나는 경우를 outliers로 간주
  • Data points : mean과 standard deviation(흩어진 정도의 척도)을 이용해 3개 또는 그 이상을 outliers로 간주
  • Bivariate, multivariate outliers는 전형적으로 influence, leverage, distance로 측정이 됩니다. Mahalanobis' distance, Cook's D는 outliers를 찾는데 종종 사용이 됩니다.

Outlier를 제거하기

  outlier를 찾았으면, 어떻게 제거를 해야 할까를 살펴보면, 앞서 missing values를 처리하는 방법과 유사하게 관측된 값을 제거하거나, 변형하거나, 구간화(binning), 처리를 하면 됩니다. (*binning : 구간평균 또는 평활화 방법을 통한 bucket을 적용) 아래 더 자세하게 설명을 했습니다. 

  • Deleting Observations - 말 그대로 outliers의 값을 제거하는 것을 말합니다.
  • Transforming and Binning values - transforming variables는 extreme values로 인해 outliers가 발생했다면 자연로그를 취해서 값을 감소시키는 방법과 같이 값을 변형하는 것을 말합니다. Binning value는 구간평균 또는 평활화 방법을 통한 bucket을 적용한 것을 말하고, transformation의 한 형태라고 생각하면됩니다. Decision Tree 알고리즘에서는 값들의 binning이 됬기 때문에 outliers를 함께 처리를 합니다
  • Imputing - missing values에서 imputation과 동일합니다. 평균과, 중간값, 중앙값의 방법을 사용할 수 있습니다. imputing values를 하기 전에 위에서 언급한 outlier가 natrual인지, artificial인지를 분석해야 합니다. 만약에 artificial이라면, imputing values를 할 수 있습니다. 또한 outlier의 예측 값을 statistical model을 통해 계산하고, impute를 할 수 있습니다.
  • Treat Separately - 만약 outliers가 많을 경우에 statistical model안에서 separately 처리를 해야만 합니다. 그룹을 두개의 그룹으로 접근하는 방법으로, 각각의 그룹에 대해서 model을 생성하고, model에서 생성된 output을 결합(combine)하면 됩니다.

  지금까지 outlier가 생성되는 원인, 발견하는 방법, 그리고 처리하는 방법에 대해서 알아보았습니다. raw data를 보다 잘 표현하는? model을 생서할때 정확도를 높이는 Feature Enginnering에 대해서 알아보도록 하겠습니다.


[참고] http://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/




반응형