프로덕트 매니저/PM의 데이터 10

[SQL/Clickhouse] 시계열 데이터 지수index로 변환하기

오늘은 물가지수, 주가지수와 같은 지수로 변환하는 법이다. 아이디어는 간단하다. 시계열 순으로 가장 최초의 값을 가져오고, 그 값을 모든 행에 나눠서 지수로 표현하는 방법이다. 거래액 등 단위 자체가 다른 2개의 지표에 대해서, 시작점을 100으로 놓고 어떤게 더 성장했는지 비교할 때 유용하다. 예를 들면, 통계청에서 발표한 이커머스 거래 현황과 작고 소중한 우리 회사 거래액을 비교한다고 가정해보자. 시장지배력이 높은 기업이라도 아마 단위 자체가 다를 가능성이 높다. 이럴 때 시장의 성장에 비해 우리의 성장이 잘 이뤄지고 있는지 등을 볼 때, 지수로 변환해서 확인하면 유용하다. 우선 코드는 아래와 같다. SELECT stat_date, round(company_gmv/sum(company_gmv_r1)o..

[시계열분석] Prophet 모델 Trend Changepoint(변곡점)의 활용

들어가면서 시계열 분석에서 중요한 것 중 하나가 변곡점(changepoints)이다. 시간의 흐름에 따라 나타나는 패턴이라는 것이 매번 동일한 수준으로 발생하지 않는다. 어떤 순간을 기점으로 상승세나 하락세의 흐름이 변화하기도 한다. 주식을 예로 든다면, 일시적인 조정을 하락세로 판단하고 보유한 주식을 전량 처분하거나, 순간적인 반등인데 상승세로의 전환으로 판단하고 풀베팅을 때린다면 문제가 될 것이다. 따라서 시계열 분석에서 의미있는 변곡점을 파악하는 것은 중요한 과제다. Prophet 모델은 변곡점 분석을 위한 기능을 제공한다. Trend Changepoint는 시계열 데이터에서 추세 변화가 일어날 수 있는 지점을 나타낸다. 다행히 Prophet 모델은 이런 변곡점을 자동으로 감지하고, 이를 반영하여 ..

[시계열분석] Prophet 모델에 독립변수 추가하기

들어가면서 우리가 어떤 변수에 대한 예측치를 정할 때, 그 예측치의 추세에 영향을 주는 것들이 있다. 예를 들면, 첫 구매 프로모션 혜택을 받게 될 고객을 예측한다고 가정해보자. 이런 경우, 첫 구매 수치는 아무래도 회원가입 추세를 따라가게 될 가능성이 크다. 이런 것처럼 어떤 변수를 예측할 때, 다른 원인이 되는 독립변수를 분석에 결합한다면 조금 더 정확한 추세를 분석할 수 있을 것이다. Prophet에서도 모델에도 add_regressor이라는 기능을 제공하고 있다. # Prophet에 사용할 데이터프레임 생성 prophet_df = first_df[['first_promote_day', 'first_cnt', 'join_total']].rename(columns={'first_promote_day'..

[시계열분석] Prophet 모델에 한국 공휴일 추가하기

들어가면서 내가 처음 입사했을 때, 회사에서는 매월 주요 지표를 예측하는 과정은 기존에 엑셀의 회귀분석 기능을 활용했다. 나도 작년까지는 이런 회귀분석과 Cohort 추이 분석을 토대로 필요한 예측치를 산출하고는 했다. 다만, 시계열 분석을 공부하는 과정에서 이런 방식이 가지는 한계를 느낄 수 있었다. 그래서 시계열 공부를 시작했고, 그 과정에서 메타에서 제작한 prophet 모델을 알고 이를 실무에 도입하고 있다. prophet 모델이 Excel에서 제공하는 회귀분석 기능과 비교해서 가지는 장점은 다음과 같다. 계절성 및 휴일 패턴을 고려: Prophet 모델은 시계열 데이터에서 계절성 및 휴일 패턴을 고려하여 예측할 수 있습니다. 이는 Excel의 회귀분석에서는 별도로 처리해야 하므로 복잡하고 번거로..

[clickhouse] neighbor 활용하여 이전행/다음행 가져오기

이탈 분석을 하다보면, 사용자들이 이탈 직전에 어떤 액션을 했는지, 또는 어떤 퍼널에서 이탈했는지 확인이 필요하다. 다만, 하나의 테이블에 유저의 모든 액션이 순서대로 집계된 경우 특정 사용자의 직전 액션만 모으는 것이 난해하다. 이렇게 저장되는 경우, 우리가 뽑아내고 싶은 내용은 kazuha는 1달무료이용까지만 이용하고 회원탈퇴를 했다는 점, 그리고 sakura는 정기결제1개월까지 이용하고 회원탈퇴를 했다는 점이다. 아마 아래와 같이 데이터를 뽑아야 할 것이다. 이런 경우, SQL에서는 이전의 행(Row)을 가져올 수 있는 lag, lead라는 함수를 제공한다. 그리고 우리처럼 Clickhouse를 사용하는 경우에는 neighbor을 활용할 수 있다. 우선 neighbor에 대한 기능을 소개해본다. n..

예측치를 산출하는 이유, 그리고 분석에 대한 관점 (feat. 뉴욕주민)

예측치를 산출하는 이유 지난주에 BA로 2023년 예측치를 산출하는 작업했다. 2023년도 예측치를 산출하면서 살짝 현타가 왔다. 주식을 하는 사람들에게 익숙하겠지만, 워렌버핏, 피터린치 같은 전설적인 투자자가 항상 하는 이야기가 있다. 거시경제에 대해 예측하려고 하는 것은 엄청난 시간 낭비라고. 나 역시 이런 의견에 동의한다. 그렇다면 이런 예측을 하는 이유가 있을까? 크게 현실적인 목표 설정과 자원 분배의 측면에서 예측치 산출 작업이 의의를 가진다. 우선 대부분의 사업 및 제품조직은 아무런 목표없이 움직이지 않는다. OKR의 KR을 설정하든, KPI를 잡아놓든 대부분의 팀은 측정가능한 목표를 설정하고, 이를 달성하기 위해 움직인다. 이때 현실가능한 목표를 세우는 것이 중요하다. 예를 들어, 겨울철 아..

sum over, 일별 진척율 대비 YoY 구하기 (1) (sum over의 개념 등)

휴가 중 문의를 받았다. 2022년 12월의 일별 누적거래액 차트를 만들고 싶어요. 아 물론 2021년 12월 1일부터 동기간 YoY를 비교하는 형태가 가능하면 좋을 것 같아요. 문과로 태어난 나의 정체성을 유지하고 싶었지만, 엔지니어의 기운이 스며든 것인지 기존에 시도하지 않았던 요청이 오면 게임하는 것만큼 흥미로운 것 같다. 요청 내용을 처리해보자. 일별 진척율을 왜 보고 있을까 우선 이런 것을 왜 구하는지 먼저 살펴보자. 비즈니스 분석팀은 매번 월말 기준 예측치를 산출한다. 이번달 예측치는 140점으로 예상 YoY는 40%가 나올 것 같아요. 이후 분석팀은 비즈니스 지표를 모니터링하게 된다. 물론 찐 엔지니어 성격의 데이터 분석팀은 이를 하지 않는 것 같다. 우리처럼 전략기획팀 한 스푼 묻은 데이터..

회귀 모델을 통한 사업 지표 예측하기 (1) (회귀모델의 개념/성능평가)

목차 1. 회귀 모델 Regression Model 2. 회귀 모델의 성능 평가 회귀 모델 Regression Model - 2023년의 거래액은 어떻게 예측할 수 있을까? - 2023년의 회원가입은 어느 정도 수준으로 나타날 수 있을까? 특정 사용자가 이탈할 것인가, 잔류할 것인가를 판단할 때는 분류 모델Classification Model을 활용했다. 하지만 내년도 실적 전망치를 예측하는 경우에는 이런 분류 모델을 활용할 수 없다. 왜냐하면, 결과값이 연속형 데이터이기 때문이다. 이런 경우에는 회귀 모델 Regression Model을 사용하게 된다. 회귀는 회귀 분석의 그 회귀다. 어떤 자료에 대해 그 값에 영향을 주는 요소를 고려하여 구한 평균으로, 연속형 데이터의 형태로 값을 예측할 때 사용하는..

[SQL/Clickhouse] LIMIT n BY, 그룹별/조건별로 필요한 수만큼 추출하기

조건에 따른 상위랭커를 뽑아보려면 처음에 SQL을 배우면 가장 먼저 배우는 것 중 하나가 LIMIT문이다. 그래서 처음에 RANK와 같은 순위 함수를 모르더라도, '거래액 순으로 상위 10개를 뽑아주세요'라는 요청을 받으면 어렵지 않게 출력할 수 있을 것이다. 다만, 가끔 전체가 아닌 그룹별로 뽑아야하는 경우가 발생할 수 있다. "우리 고객사들을 카테고리별로 거래액 상위 10개 몰을 추출해주세요." 이런 경우, 초보인 경우는 WHERE에다가 카테고리 이름을 하나씩 쓰면서, 발품을 파는 경우가 많다. (어떻게 확신하듯 작성하냐면, 내가 맨 처음에 그랬던 것 같다.) 그렇다면 어떻게 해야할까? 나중에 쿼리를 공부하면서 알게 된 방법은 크게 2가지가 있다. 하나는 RANK를 활용하는 것이고, 또 하나는 LIM..

SQL을 활용한 코호트 분석Cohort Analysis

SQL을 활용한 Cohort 분석 방법에 대해 정리한 글입니다. Cohort 분석이란? Cohort 분석은 흔히 '동질집단분석'으로 알려져 있습니다. 특정 기간에 같은 특성이나 경험을 공유하는 그룹을 나누어 분석하는 행동 분석 방법의 하나입니다. 쿠팡에서 발표한 Cohort 자료를 예로 들어보겠습니다. 2019년에 가입한 고객들의 거래액은 가입한 2019년과 비교할 때 2020년에 2.19배로 증가했습니다. 2019년에 100만원어치 구매를 한 고객들이 2020년에 219만원어치 구매를 했다고 볼 수 있습니다. 쿠팡에 대한 신뢰도가 높아지면서 객단가가 높은 상품을 구매했거나, 또는 다른 채널에서 구매하던 상품도 쿠팡을 통해서 구매하는 등 긍정적인 변화가 있음을 알 수 있습니다. 또한 거래액이 2배, 3배..