Search

시계열 분석 : 시간의 흐름에 따른 지표의 변화를 이해하고자 할 때

시계열 분석

시계열 분석(time-series analysis)은 일정 간격의 시간순으로 저장된 데이터에서 유의미한 정보를 뽑아 내는 작업으로, 과거의 행동을 이해하고 미래의 행동을 예측하는데 사용됩니다.
시계열은 데이터 분석의 중요한 갈래임에도 불구하고 그 분석 방법의 이론과 적용에 대한 기술적 장벽과 미래를 예측하는 일에 수반되는 여러 한계들 때문에 실무 관점의 데이터 활용에서 그 사용이 매우 제한적이었습니다.
하지만, 현업들이 의사결정에 활용할 수 있는 시계열 데이터가 증가하고 있고, 시계열 분석만이 제공할 수 있는 인사이트가 존재한다는 사실을 고려할 때, 더 많은 현업들이 더 자주 시계열 데이터를 활용해야 한다고 생각합니다.
아래 글과 강의 영상에서는
동영상 강의: 전통적 시계열 데이터 분석의 주요 개념과 AR(AutoRegressive; 자기회귀) 모델에 대해 설명하고, 최신 기계학습 기술을 활용한 시계열 분석도 가볍게 살펴보고
블로그 글: 실제 시계열 데이터를 가지고 매출에 영향을 주는 계절적, 주기적 패턴을 찾는 실습을 함께 진행하겠습니다.
시계열 데이터 분석 강의는 아래 영상에서 확인해 보세요.
강의 자료(pdf)는 바로 아래 링크를 통해 다운 받으실 수 있습니다.
EDA for Time-Series Dataset.pdf
1313.0KB

시계열 데이터란?

시계열(時系列, time-series) 데이터는 일정한 시간 간격으로 관측, 수집된 데이터를 말합니다. 따라서, 시계열 데이터에는 해당 레코드가 수집, 관측된 날짜 내지는 시간을 표시하는 “시간 변수”가 존재하게 됩니다.
2022-10-01, 2019-02-07 08:55:16와 같은 시간 변수는 특정한 구조(예, 년-월-일)와 순서(Order)를 갖는 숫자 변수라고 생각할 수 있습니다. 하지만, 요일이나 주중/주말, 또는 시간대에 존재하는 주기적 패턴을 찾기 위해 시간 변수에서 월, 요일 같은 파생 변수를 가공, 추출해서 사용할 수 있고, 이때 시간 변수는 범주형 변수의 특성을 갖게 됩니다.

시계열 분석의 목표

탐험적 분석(EDA) 관점에서 시계열 데이터를 분석하는 주요 목표는 아래 두가지입니다.
추세(Trend): 시간의 흐름에 따라 주요 지표가 상승, 하강하는 경향성
주기적/순환적 특성(Cyclic Pattern): 시간대, 요일, 월, 분기/계절 등에 따른 주기적 패턴

하트카운트 실습 - 시계열 데이터

아래에서 매장 매출 데이터로 시간의 흐름에 따른 매출액의 추세와 매출액에 영향을 주는 주기적 패턴이 존재하는지 함께 살펴 보겠습니다.
아래 내용을 직접 따라해 보시려면, HEARTCOUNT 로그인 → 캠페인 생성 → 샘플데이터 → 매출 데이터 선택하시면 됩니다.
먼저, 데이터셋 검토 과정에서 “주문일”이라는 시간 변수(2014-11-09)가 존재하는 걸 확인할 수 있네요.

시간의 흐름에 따른 매출 추이 살펴 보기

그럼, 스마트 플롯 메뉴에서 시간의 흐름에 따른 매출액의 변화를 살펴 보겠습니다.
X축에 시간 변수인 주문일을 선택하고 매출의 집계 방식을 평균에서 (총)합으로 변경합니다.
주문일 옆의 시계 아이콘을 눌러 매출을 집계할 시간의 간격(time grain)을 년, 분기, 월, 주 등으로 변경해 봅시다. 시간 간격(time-grain)을 월로 선택했을 때 우리가 시각적으로 인지할 수 있는 적정 수준의 정보가 표현되는 것 같습니다.
하위 그룹에 “제품대분류”를 선택한 후 차트 유형을 stacked area(스택 영역)로 변경합니다.
월별로 제품대분류별 매출총합이 계산되어 켜켜이 쌓인 시각화가 완성되었네요.
그런데 위 차트를 보고 당최 무슨 메세지를 전달할 수 있나요? 월별로 제품별로 매출총액 들쑥 날쑥 했다는 이야기는 맞는 이야기지만 뻔한 이야기라 정보량이 없는 메세지입니다.

매출의 계절적, 주기적 특성 찾아 보기

X축에 표현할 변수를 “주문일” 아래 있는 파생 시간 변수들 중 하나인 “주문일 - 월별 주기”를 선택해 봅시다. (파생 시간 변수는 주기적 패턴을 쉽게 찾을 수 있도록 HEARTCOUNT에서 시간 변수를 자동으로 가공해서 만든 추가 변수들입니다.)
그리고 연도별로 비교할 수 있도록 화면분할 조건으로 “주문일 -년”을 선택합니다.
차트 유형도 stacked-area에서 stacked-bar로 변경해 볼까요. 연속된 흐름이 아니라 개별 월에 발생한 구체적 매출 총액을 비교하기에는 바차트가 더 적절할 거 같습니다.
그리고 우측창의 하위그룹 범례에서 가구, 사무용품, 전자제품을 하나씩 클릭하여 제품대분류별 매출에 어떤 패턴이 있는지 확인해 봅시다.
내친김에, X축에 월별 주기 대신 “요일별 주기”를 선택하면 월화수목금토일 별로 매출이 어떻게 달랐는지 확인할 수 있습니다.
시간이라는 것은 우리가 직접적 통제력을 행사할 순 없지만 세상을, 내 데이터를 더 잘 이해하기 위한 주요한 차원입니다. 주요 지표가 지난 달과, 작년 같은 달과 비교해서 나빠진 경우 그 원인을 찾기 위해 데이터를 깊이 들여다 보는 일이 EDA라고 해도 과언이 아닐 것입니다.
시간 변수를 한 방향으로 흐르는 순서를 갖는 숫자 변수로 활용하여 추이를 확인할 수도 있고, 시간 변수에서 월, 요일, 시간대 등 범주적 특성을 뽑아 내어 순서를 갖는 범주형 변수로 활용할 수도 있다는 걸 기억해 주세요.