페이지

2018년 1월 15일 월요일

제3절 결측값 처리와 이상값 검색

데이터를 다루다 보면 결측값이나 이상값이 존재한다. 이러한 경우에 효율적인 방법으로 처리하여 데이터의 정보가 손실되거나 왜곡되는 것을 피해야 한다.

1. 데이터 탐색
데이터를 본격 분석하기 전에 대략의 데이터의 특성을 파악하고, 데이터에 대한 통찰을 얻기 위해 다각도로 접근하도록 한다.

가. 데이터 기초 통계
summary 함수를 통해 연속형 변수의 경우 4분위수, 최소값, 최대값, 중앙값, 평균 등을 출력하고 범주형 변수의 경우 각 범부에 대한 빈도수를 출력하여 데이터의 분포를 파악한다. 연속형 변수의 경우 cov와 cor함수를 통해 공분산행렬과 상관계수행렬을 출력하여 변수 간의 선형 상관관계의 강도를 확인한다.

2. 결측값 처리
결측값(Missing data) 처리를 위해 시간을 많이 쓰는 것은 비효율적이다. 가능하면 결측값은 제외하고 처리하는 게 적합하지만 결측값 자체가 의미가 있는 경유도 있다. 결측값을 어떻게 처리하느냐는 전체 작업속도에 많은 영향을 주기 때문에 이 부분을 자동화 하면 업무 효율성이 매우 향상돈다. R에서 결측값 처리 관련 패키지는 Amelia 2, Mice, mistools 등 여러 가지가 있는데, 여기서는 Amelia 패키지를 사용했다.
우선 결측값을 확인하는 방법과 제외하는 간단한 방법부터 알아보자. R에서는 결측값을 NA(not avaliable)로 처리한다. 불가능한 값(예를 들면 dividing by zero)은 NaN(not a number)으로 처리된다.
결측값을 입력하는 방법은 NA를 이용하면 되고, is.na를 이용해 결측값인지 여부를 확인할 수 있다.

3. 이상값 검색
이상값(Outlier) 검색은 분석에서 전처리를 어떻게 할지를 결정할 때와 부정사용방지 시스템(Fraud Detection System, FDS)에서 규칙을 발견하는 데 사용할 수 있다. 이상값은 의도하지 않게 잘못 입력한 경우(a1), 의도하지 않게 입력됐으나 분석 목적에 부합되지 않아 제거해야 하는 경우(a2), 의도되지 않은 현상이지만 부석에 포함해야 하는 경우(a3)가 있다. 그리고 의도된 이상값(b1)인 경우가 있는데, b1의 경우는 대부분 사기(fraud)이다. 특히 a1, a2는 bad data라고 할 수 있고 a3, b1이 이상값이라고 할 수 있다.
관련 알고리즘으로는 ESD(Extreme Studentized Deviation), MADM등이 있는데 ESD가 가장 잘 알려져 있다. 평균으로부터 k*표준편차만큼 떨어져 있는 값들을 이상값으로 판단하고 일반적으로 k는 3으로 한다.
그러나 이 방법조차도 이상값으로부터 매우 민감한 단점이 있다.
실전에서 이상값을 찾기 위해 너무 많은 시간을  쓰는것은 추천하지 않느다. 변수들에 대해 summary 정도로 평균과 중위수 값을 파악해 제 1 사분위수 (Q1)와 제 3 사분위수 (Q3)을 보면 1차 판단을 하고, 좀 더 ㅅ간이 된다면 주요 변수(dimension)별로 플롯해보면서 특성을 파악할 수 있다. 단 부정사용방지 프로젝트(fraud detection project)에서는 많은 시간을 여기에 할당해야 한다.
a2 경우의 대표전인 경우로 POS 데이터에서 수작업으로 일정 시간에 일괄적으로 거래정보를 입력하는 경우 시간대별 매출 분석에서는 제외해야 되고, 고객 행동분석에서는 a3에 해당돼 포함해서 분석을 해야한다. 그러나 이러한 경우의 조합이 다양해져 변수가 많아지면 표준 데이터를 기준으로 작업하지 못하고 경우에 따라 데이터가 달라지므로 의사결정을 해야 한다.
또 다른 대표적인 경우로 불량이나 분실로 발생된 상품을 별도 고객명으로 가상 입력하는 경우이다. 특정 고객이 매우 많은 상품을 구매한 것으로 잘못 처리돼 전체 분석에 영향을 미치는 경우도 있다. 미리 상세하게 담당자에게 문의하지 않으면 알 수 없는 다양한 비즈니스 규칙도 있고, 물어도 고의로 대답을 안 하거나 모르는 경우가 크게 영향을 미칠 수 있다. 결국 일정 시간을 할애 분석 기준을 수립하고, 해당 기준에 의거해 드러나지 않는 것은 무시하고 진행해야 된다. 그렇지 않으면 분석 데이터와 결과 자체가 모두 엉망이 돼 관리가 불가능해진다.


댓글 없음: