변하는 세상에서의 평균

변하는 세상에서의 평균 # 
Find similar titles

세상에 대한 두 가지 믿음에 의하면 세상은 계속 변한다. 이번 글에서는 변하는 세상에 더 적합하게 평균을 계산하는 방식에 대해 써보고자 한다.

전통적인 방식 #

하루에 한 번씩 어떤 값을 관측하여 기록한다고 치자. 지금까지 관측한 값을 모두 더하고 관측 횟수로 나누면 이 값의 산술평균(이하 그냥 평균)을 구할 수 있다. 시간의 흐름에 관계 없이 관측값이 대체로 고정되어 있다면 평균은 시간의 흐름에 따라 점점 특정 값에 수렴할 것이다.

그런데 이 관측값이 시간의 흐름에 따라 변한다면 어떨까? 예를 들어 처음 100일 동안은 계속 0.1이라는 값이 나오다가 101일째부터 일관되게 0.3이라는 값이 나오기 시작한다면 우리의 평균값은 이로부터 100일이 더 지난 200일째에도 0.3이 아닌 고작 0.2에 도달하게 된다. (100일 동안은 0.1, 그 후 100일 동안은 0.3이므로 평균은 0.2)

평균은 이런 의미에서 보수적이다. 관측값이 많이 쌓일수록 점점 더 보수적으로 움직인다. 마치 우리가 늙어가며 경험을 많이 쌓을수록 또 공부를 많이 할수록 점점 더 변화에 둔감해지고 꼰대가 되는 것과도 비슷하다.

옛날 관측값을 버리기 #

세상이 변하기 때문에 대부분의 지식에는 감가상각 개념을 적용하는 것이 타당하다. 잔존가치가 얼마나 빠르게 떨어지느냐는 그 지식과 관련하여 세상이 얼마나 빠르게 변하느냐와 관련이 있다. (이런 의미에서 역시나 느리게 변하는 것을 더 열심히 공부할 필요가 있다)

지금까지의 관측치 전부가 아니라 최근 n일 동안의 관측치만을 기준으로 평균을 계산하면(즉 time-window 개념을 도입하면) 좀 더 변화에 민감한 평균을 구할 수 있을 것이다.

하지만 이 방식은 몇 가지 이유에서 좋지 않다:

  • 임의적이고 이산적인 기준: 이 계산법에서는 최근 n일 동안 일어난 일은 동등하게 중요하고, 나머지는 동등하게 안 중요하다. 그런데 세상은 이산적이기보다 연속적이다.
  • 계산/공간복잡도: 최근 n일 동안의 관측치를 어딘가에 기록하고 있어야 한다. n이 커지면 커질수록 공간도 많이 차지하고 계산도 느려진다. 전통적인 평균 계산은 지금까지의 관측치를 모두 가지고 있을 필요가 없이 지금까지의 평균값(a)과 관측횟수(n)만 있으면 새로운 관측값(a’)이 들어왔을 때 다음 식에 의해 평균을 갱신할 수 있다:

     

    (a⋅n)+a′n+1

     

    계산 효율성은 알고리즘을 실제 사이트에 적용하려고할 때 매우 중요해서, 종종 계산의 정확도를 낮추면서도 효율성을 높이는 방식의 타협을 하기도 한다.

관성 개념 #

시간 윈도(time window) 대신에 관성(inertia)이라는 개념을 넣어보자. 관성이란 기존까지의 관측치를 새 관측치에 비해 얼마나 중요하게 볼 것인가에 대한 비율을 나타내는 0에서 1사이의 실수이다. 기존까지 관측한 값이 a, 새로 관측된 값이 a’, 관성이 i라면 아래와 같이 새로운 관측값을 계산할 수 있다.

 

i⋅a+(1−i)⋅a′

 

관성이 크면 클수록 기존 값이 더 존중을 받는다.

(원래는 좀 바보같은 수식을 쓰다가 Bandit Algorithms for Website Optimization에서 제시한 형태로 바꿨다. 책에서는 관성의 반대 개념으로 최신값에 가중치를 준다는 개념을 사용했는데 이 개념에 적당한 이름을 붙이기가 애매해서 이 글에서는 관성이라고 하는 반대의 개념을 사용했다.)

처음 100일간의 관측값이 0.1, 그 다음 100일 동안의 관측값이 0.3, 그 다음 100일 동안의 관측값이 다시 0.1로 변하는 경우, 전통적인 평균값(conventional), 관성이 0.95인 경우(i=.95), 관성이 0.85인 경우(i=.85) 각각에 대해 그래프를 그려보면 아래와 같다:

graph

관성이 낮을수록 변화에 더 빠르게 반응하는 모습을 볼 수 있다. 직관적이고 계산도 쉽다. 이 유사한 개념을 오만가지 경우에 적용할 수 있을텐데 상상은 각자 하는 것으로 🙂

지인이 마침 영화 그래비티의 명대사를 하나 올렸길래 마치기 전에 인용해본다. 관성 얘길 하던 참인데 딱 잘 어울리는 대사가 아닌가 🙂

Ryan, you’re gonna have to learn to let go.

Suggested Pages #

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중