Google News의 클릭 로그를 활용한 개인화

Google News에서는 특정 사용자들이 어떠한 뉴스글에 관심을 보이는지 쌓아두고 이를 기반으로 해당 사용자들에게 뉴스글을 추천해 준다.

뉴스글에는 댓글이나 태깅같은 것을 할 수 없으므로 그저 클릭 로그를 사용할 수 밖에 없는데, 이 클릭 로그를 사용해서 특정 사용자가 이 뉴스글에 관심이 있는지 없는지를 판단하게 된다.

그렇다면 클릭 로그를 어떻게 사용하는 것일까?

그것은 바로 특정 뉴스에 클릭을 하고 난 다음에 다음 뉴스를 클릭할때까지의 시간을 로깅하는 것이다. 이것이 의미하는것은 얼마나 많은 시간을 뉴스 기사 하나를 보는데 보냈느냐를 의미하게 되는데 과연 어느정도의 시간을 보낸것이 그 뉴스에 관심을 가지고 있는것이고 그저 클릭만 하고 자세히 읽지 않고 넘어간것인지 구분하는게 필요하다.

물론 이것은 각 기사글마다 길이가 다르고 주제가 다르기 때문에 일률적으로 시간을 정해서 어느정도 시간을 보낸 것이면 관심이 있게 본것이고 아니면 관심이 없는것일 것이다라고 단정짓기 힘들다.

그래서 특정 글을 보면서 보낸 모든 사용자들의 체류 시간을 측정해서 이중에서 가장 사용자 빈도수가 높은 체류시간 간격을 구해내는 과정을 거치게 된다.
이의 가정은 사용자가 클릭을 하는 행위 자체가 관심의 표현일 것이라는 가정을 가지고 있다. 대부분의 사용자는 제목의 기사를 보기 위해 클릭을 하기 때문이다.

예를 들어 특정 기사글에서 아래와 같은 사용자 체류 시간 로깅이 되어 있다고 가정하자. 목표는 아래의 로그에서 이 대부분의 사용자가 이 글을 읽기 위해 보낸 시간을 찾는것이다.

[1,2,47,52,55,47,53,102,44,51,48,50]

이것의 평균과 표준편차를 구해보면 46과 25.78이 나온다.
여기서 통계이야기가 좀 나온다. 통계학에서 outlier를 제거하기 위한 방법중에서 표준편차를 이용한 방법이 나온다. (물론 데이터가 정규분포의 형태를 띄어야 한다.)

잠깐 엑셀로 넘어가서 표준정규분포(평균0, 표준편차1)의 성격에 대해서 알아보면 표준편차의 1배수 범위 그러니까 표준정규분포에서 -1 ~ 1 사이에 어느정도의 확률 분포가 가능한지 엑셀로 계산해 보면 아래와 같다.

엑셀에서

“NORMSDIST(1) – NORMSDIST(-1)” 값을 계산하면 정확하게 -1 ~ 1 사이의 확률값이 나온다. 계산해보면 0.68정도로 약 70%의 분포를 이 영역에서 커버하고 있는 것을 볼 수 있다.

그러면 표준편차의 2배의 영역은 어떨까?
“NORMSDIST(2) – NORMSDIST(-2)”의 값은 0.954 정도로 95%의 분포를 커버한다.

그러니까 저 로그에서 표준편차의 2배영역 이외에 있는 것을 전체 95%에 포함되지 못하는 나머지 5%로 보고 버리는 작업을 하는 것이다.

그럼 주어진 평균과 표준편차로 95%의 영역을 계산해보면

-5.56 ~ 97.56

의 영역이 나온다.

이렇게 해서 마지막 102는 outlier로 떨어져 나가게 된다.

[1,2,47,52,55,47,53,44,51,48,50]  평균 : 40.9 표준편차 : 19.73

표준편차 2배수 영역(95%)를 커버하는 범위 1.44 ~ 80.36
이렇게 해서 outlier로 1이 떨어져 나간다.

[2,47,52,55,47,53,44,51,48,50]  평균 : 44.9  표준 편차 : 15.42

95%의 범위는 14.1 ~ 75.7
그래서 2가 outlier로 떨어져 나간다.

[47,52,55,47,53,44,51,48,50] 평균 : 49.67 표준편차 : 3.46

이렇게 해서 최종적으로 이 글을 보는데 전체 95%의 사용자들이 보내는 시간을 마지막 평균과 표준편차로 계산해보면 42.75 ~ 56.59 초로 추측할 수 있을 것이다.

그래서 이 영역 이외에 영역 42.75초 보다 적을 경우 1,2초의 경우는 로봇이 방문했을 수도 있을 것이고 5초정도라면 제목을 보고 사용자가 클릭 했으나 내용에 관심이 없어서 바로 돌아간 경우로 볼 수 있겠다.

그리고 56.59초 이상 100초정도 글을 보는데 보냈다면 클릭을 하고 누군가와 잡담을 했을 수도 있을 것이다.

이렇게 해서 구한 범위를 가지고 글에 관심이 있었는지 없었는지를 판단 할 수 있을 것이다.

그래서 구한 관심 기사를 기반으로 주제어를 추출하거나 여타 작업을 통해 사용자가 관심 있어할 만한 기사를 추천하게 된다.

사실 이 예제 로그는 굉장히 잘 만들어진 예제이다. 사실 기사 자체가 별로 읽을 만한 것이 없을 경우에 대한 기준도 서 있어야 할 것이다. 예를 들어 클릭로그의 평균이 매우 적은 초 이거나 표준편차가 굉장히 클 경우 위와 같은 판단을 하기에는 힘들 것이고 아마도 기사 자체의 퀄리티를 판단하는 어떠한 전처리 부분이 있어야 위의 알고리즘을 효과적으로 적용해 관심 체류시간을 구할 수 있을 것이다.

게다가 인터넷 속도에 따른 나라별 평균값의 차이가 분명히 있을 것이므로 일률적으로 이와같은 클릭로깅을 전체 마켓에 적용하는 과오도 없어야 할 것이다.

사실 요즘 검색 로그를 검색에 활용하는 다양한 방법을 고민하고 있다.
그런데 재미 있는것은 이런 사용자 로그에서 필터링 해버려야 하는 데이터들 중에서 가장 많은게 포털에서 인기검색어로 올려놓는 데이터같이 편집되고 유도된 클릭들이라는 것이다.

포털에서 사용자를 위해 편집된 것들이 진정한 사용자 의도를 흐트려 놓는다는 사실이 참 아이러니 하다.

CC BY-NC 4.0 Google News의 클릭 로그를 활용한 개인화 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.