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초정도 글을 보는데 보냈다면 클릭을 하고 누군가와 잡담을 했을 수도 있을 것이다.
이렇게 해서 구한 범위를 가지고 글에 관심이 있었는지 없었는지를 판단 할 수 있을 것이다.
그래서 구한 관심 기사를 기반으로 주제어를 추출하거나 여타 작업을 통해 사용자가 관심 있어할 만한 기사를 추천하게 된다.
사실 이 예제 로그는 굉장히 잘 만들어진 예제이다. 사실 기사 자체가 별로 읽을 만한 것이 없을 경우에 대한 기준도 서 있어야 할 것이다. 예를 들어 클릭로그의 평균이 매우 적은 초 이거나 표준편차가 굉장히 클 경우 위와 같은 판단을 하기에는 힘들 것이고 아마도 기사 자체의 퀄리티를 판단하는 어떠한 전처리 부분이 있어야 위의 알고리즘을 효과적으로 적용해 관심 체류시간을 구할 수 있을 것이다.
게다가 인터넷 속도에 따른 나라별 평균값의 차이가 분명히 있을 것이므로 일률적으로 이와같은 클릭로깅을 전체 마켓에 적용하는 과오도 없어야 할 것이다.
사실 요즘 검색 로그를 검색에 활용하는 다양한 방법을 고민하고 있다.
그런데 재미 있는것은 이런 사용자 로그에서 필터링 해버려야 하는 데이터들 중에서 가장 많은게 포털에서 인기검색어로 올려놓는 데이터같이 편집되고 유도된 클릭들이라는 것이다.
포털에서 사용자를 위해 편집된 것들이 진정한 사용자 의도를 흐트려 놓는다는 사실이 참 아이러니 하다.
또 반대로 생각해보면, 유도된 클릭도 유도하는 회사에서는 알고있기 때문에 적절히 가중치를 조절해서 사용할 수 있으므로(물론 쉽지는 않겠지만) 나쁘지 않을 것 같습니다 또한 유도되었던 아니었든 간에 결국 그러한 클릭정보는 사람들의 관심이 있다고 볼 수도 있으므로, 클릭으로써 의미가 있을 수도 있다는 생각도 듭니다.
적절한 예가 될지는 모르겠지만, 유행도 스타도 어떠한 기회 또는 이슈들에 의해서 만들어지는 것이고, 미디어도 그러한 맥락에서 본다면 마찬가지 라는 생각입니다. 물론 다른 회사가 만들어낸 이슈에 타 회사까지 영향을 받을 수는 있겠지만, 크게 문제되지 않을 것 같다는 것이 제 의견입니다.
결국 다른 회사들이 유명한 회사들이 제공하는 클릭로그를 구할 수도 없거니와 자기 회사의 로그만 사용할 수 밖에 없을텐데요, 이러한 로그를 자사에서도 가지고 있느냐 없느냐 그리고 그러한 로그에 중요성을 느끼고 발빠르게 움직이고 있느냐 없느냐가 중요한 것 같습니다. 그런 차원에서 보면 고감자님의 회사는 좋은회사? ㅋㅋㅋ
즐거운 하루 되삼~~
사실 로그의 가치는 모든 포털이 알고 있지만 그것을 효과적으로 쓰는곳을 보지 못했습니다.
대부분 로그는 로그의 의미에서 끝이나죠. ㅋㅋ
로그를 이용해 뭔가 현재의 프로덕트를 개선하고자 한다면 되도록 빨리 하는게 가장 좋습니다. 왜냐면 로그도 시간이 지나면 변질이 되서 현재의 프로덕트에 쓰기 힘들어지니까요.
저희회사도 검색어를 유도합니다만 ^^;;(클릭을 유도하기 위해 검색어를 올린땐 참 부끄러움을 느끼지요.;;포털도 그럴것입니다.ㅋ) 참 그 정확한 로그가치를 보여주는게 일개 데이터사이트에서는 엄청난 작업이라고 생각하고 묵인해버리지요. 우리는 나쁜회사? ;;;;
로그 마이닝은 그리 어려운게 아니랍니다. 한번 관심을 가지고 데이터를 유심히 보다보면 좋은 아이디어가 떠오를 것입니다. ^^
좋은글 잘읽었습니다. 글을 보다가 떠오른것인데 개인별 뉴스 선호도를 로그를 통해서 분석한다고 했을때 뉴스별 체류시간은 그다지 의미가 없는것 아닐까 하는생각을 해봤습니다. 체류시간을 정확히 얻어내는것도 쉽지 않은데다가 본문에 언급하신것처럼 긴기사와 짧은기사간의 차이, 또는 가벼운내용과 심도있는 내용별로 체류시간이 급격히 달라질수도 있기때문에 체류시간보다는 제목에서 성향을 찾는게 더 쉽지 않을까 생각했는데요
사용자가 뉴스를 클릭하는 조건은 제목밖에 없기때문에 제목안에서 그 사람의 성향이 드러난다고 볼수 있고 설사 낚시성 제목이라고 해도 그사람의 성향과 동떨어진 제목이라면 클릭안할 가능성이 매우 클것이기때문에 해당사용자가 클릭한 뉴스 제목을 모아서 들어간 단어 분포를 회사에서 축적해 놓은 단어별 성향가중치 같은 DB와 비교 분석을 한다면 꾀 들어맞지 않을까하는 생각을 해봤습니다…
그런데 참 문제네요… 저런잡생각만 많고 어떻게 구현해야할지를 공부해야하는데 진도가 참 안나갑니다-_-;
검색결과에 대한 만족도는 EM으로 추정해야죠…
by DBN
오래전 글에 덧글을 다셨네요. 덕분에 한번 더 읽어보게 되었습니다.
그런데 검색 결과 만족도를 EM로 추정한다는게 살짝 무슨 의미인지 이해가 안되네요.
EM으로 모수를 추정하고자 한다면 그 모수가 무엇인지 설명을 해주시는게 이해를 돕기 위해 필요한 부분 같습니다.