ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Causal Impact example in python
    ML 2022. 8. 9. 14:47

    예를 들어 의류 판매하는 서비스 A에서, 7월 인스타 입소문 이벤트를 시행했고,

    이 캠페인의 효과로 사람들이 정말 구매로 이어졌는지를 알고 싶다고 하자.

    Let T = 7월 시행한 캠페인, Y = A서비스 구매량

    예측에 쓰일 X는 T에 영향을 directly 받지 않으면서도 Y와 correlated 되어있는 것으로 선정해야한다. 여러개(100개 정도)의 time series 중에 최대한 correlated 되어있는 것으로 선정, 최종 예측변수의 rule of thumb 갯수는 5~20개 정도라고 한다.

    일단 예를 들어 

    X = "여름옷" 검색량, "겨울옷" 검색량, 온도,.. 등 후보군이 있을것이다.

     

    • 왜 correlation이 높은 변수로 선정해야하는 것인가? 라는 질문이 있을 수 있다

    만약 Y와 "겨울옷" 검색량(X1), "여름옷" 검색량(X2) 이 correlation이 높아서 아래와 같이 표현할 수 있다면,

    (캠페인 시행전) Y = a*X1 + b*X2 + c

    X1,X2 만으로 Y를 잘 학습하게 된다. 그렇다면, 우리가 예측해야하는 Yhat 값도 잘 예측할 수 있게 된다.

    만약, 의류와는 큰 관계없는 금가격(X3), 코스피(X4) 만을 사용하여 Y를 학습한다면, Yhat도 잘 예측하지 못하게 되어서, Y와 Yhat 차이인 causal effect estimate를 잘 구하지 못하게 될 수 있다. 

     

    • python에서의 구현

     

    import pandas as pd
    from causalimpact import CausalImpact
    
    
    pre_period = [0, 6]
    post_period = [7, 9]
    
    ci = CausalImpact(df[['y', 'search_summer', 'search_winter' ]], pre_period, post_period)
    print(ci.summary())
    print(ci.summary(output='report'))
    ci.plot()

    만약 효과가 있다면, CI가 0보다 크게 위치하고,  p value값이 작다.

    data 를 multi covariate 넣는 것은 명시하는것은 아니고 위처럼 처음 컬럼에 y를 넣고 나머지에 x를 넣으면 된다고 한다 ( https://github.com/WillianFuks/tfcausalimpact/issues/42 )

    실제 output 예시는 아래 reference를 참고하길 바란다

     

     

    • reference

    https://github.com/WillianFuks/tfcausalimpact

    https://www.youtube.com/watch?v=GTgZfCltMm8

    'ML' 카테고리의 다른 글

    wilcoxon rank sum test 윌콕슨 순위 검정  (0) 2022.08.09
    AB test  (0) 2022.08.09
    spark 실행 구조  (0) 2022.07.25
    Causal Forest vs Causal impact  (0) 2022.07.18
    ALS vs. SGD  (0) 2022.06.11

    댓글

Designed by Tistory.