-
시계열 데이터 이상치 모니터링 with Window size + 3 Sigma카테고리 없음 2020. 4. 17. 22:15
시계열 데이터는 시간의 영향을 많이 받으며, 원인 변수가 따로 존재하지 않는다. 원인 변수 X는 이전의 값들로 해당 값들을 가지고 트렌드, 계절성 등을 파악하여야 다음 Y값을 예측할 수 있다.
문제를 해결하기위해, 측정을 해야하고 측정한 수치들로 이슈를 만들어낼 수 있어야한다.
현재 회사에서는 Firebase SDK를 삽입하여 특정 화면의 이벤트 수가 사용자 수를 파악하고 있다. 이때 가장 먼저 보는 데이터가 DAU 일일 활성 사용자 수 이다. 일일 사용자들이 얼마나 어플상에 유입이되는 지 확인할 수 있는 어플의 성장을 확인할 수 있는 대표적인 수치이다. 이와 같이 수집한 데이터를 가지고 마케팅 및 기획의 효과를 검증하는데 활용하거나 어플 상에서 발생하는 이슈들을 파악한다. 주간 금요일 마다 DATASTUDIO를 통해, 데이터를 시각화하고 전주 대비 데이터의 증감율을 파악하여 이슈사항을 도출해낸다.
최근에, 앱 버전 기획안의 효과검증을 위해, 출시 전후 데이터를 수집하여 증감율을 파악한 적이 있었다. 이때 PC WEB, Hybrid WEB, Mobile APP에서 각각 발생하는 이상치를 확인해볼 필요를 느꼈다. 만약에 내가 임의로 설정한 기간에 외부 요인으로 이상치가 껴있다면, 목적에 부적합한 해석을 할 수 있기 때문이다. 광고를 이전보다 얼마나 했는지, 외부 이벤트가 있었는지 등 모든 정보를 파악한뒤 해석하기에는 시간이 너무 많이 소요된다.
따라서, 순수하게 데이터에서 이상치를 발견해내는 작업이 필요하다고 느꼈다.
핵심 아이디어는 다음과 같다. Window size별로 3시그마 룰을 적용하는 것이다. 전체 데이터를 가지고 3시그마를 적용시키게 되면, 성수기의 데이터가 한번에 날아갈 수 있기 때문에, Window size별로 세그먼트를 나눈뒤, 그 세트에서의 상 하위 구간을 구분하여 데이터의 이상치를 발견해내는 것이다.
날짜가 명확하게 적혀있다면 좋겠지만, 현재 사용하는 DAU 데이터는 날짜에 대한 월/일만 적혀있어서 다른 년도와 뒤섞이기 때문에, 따로 날짜를 직접 생성하여 기입했다.
위 데이터를 가지고 이상치 날짜들을 파악해볼 것이다.
현재 모든 데이터를 한달(30일)기준으로 쪼개서 평균의 3시그마 상하위 기준으로 이상치를 추출해보았다.