Share           Pin It
Word Embedding, Factorization, and Personalization
여러 가지 개념이 혼재돼있습니다. 단어의 원래 뜻과 다르게 해석한 여지가 있습니다. 이 글에서 설명한 것이 절대적으로 맞다고 생각하면 위험합니다. 저는 제게 필요한 것으로 아전인수격으로 정의, 사용했을 개연성이 높음을 미리 경고합니다. 한글화된 용어를 별로 좋아하지 않지만 필요에 따라서 (국내에서 통상적으로 사용하는 경우) 일부 용어는 한글화했습니다.

2017년은 나름 공부하는 해로 정하고 그동안 미뤄놨던 논문들을 읽기 시작했습니다. 벌써 4주차가 됐는데도 여전히 논문을 읽고 있으니 지금의 흐름은 나름 오래 갈 것 같습니다. 한동안은 업무에 필요하거나 주목받은 논문 한두편을 짧게 읽은 적은 있지만, 연구실에 있을 때처럼 그냥 손에 잡히는 논문이나 엮인 논문들을 계속 읽어가는 것은 참 오랜만입니다. 아무래도 딥러닝이나 AI와 관련된 논문들을 많이 읽고 또 오픈소스나 라이브러리를 내려받아서 실행해보는 것을 한동안 계속할 예정입니다.

최근에 관심있게 보고 있는 논문은 워드 임베딩 Word Embedding 관련 논문입니다. 더 구체적으로 2013년에 처음 소개된 후로 많은 연구자들과 개발자들의 주목을 받은 Word2Vec과 후속의 관련 논문들입니다. Word2Vec은 딥러닝 커뮤니티에서 자주 언급되는데, 학습 구조상으로 인공신경망 ANN을 닮았지만 엄밀히 딥러닝의 범주에 넣기에는 구조가 매우 간단합니다. 사전 (또는 vocabulary) 사이즈의 one-hot 인코딩을 인풋으로 받기 때문에 통상의 딥러닝의 인풋에 견줄만하지만 은닉층 hidden layer이 하나뿐인 매우 간단한 shallow 네트워크입니다. 그리고 인닉층의 activation function도 통상의 sigmoid나 ReLU 등의 비선형 함수가 아닌 그냥 선형함수를 사용하는 가장 심플한 MLP의 구조를 따르는, 그리고 딥러닝에서 pre-training에 많이 사용하는 auto-encoder를 많이 닮았습니다.

Word2Vec은 CBOW continuous bag of words나 skip-gram으로 학습을 하는데, 이것에 대한 자세한 설명은 생략합니다 (다음의 링크 참조). 그리고 word2vec의 메커니즘을 자세히 알고 싶은 분들은 word2vec을 처음 제안했던 Mikolov의 2013년 논문을 찾아보기 보다는 이후에 나왔던 Xin Rong의 'word2vec Parameter Learning Explained http://www-personal.umich.edu/~ronxin/pdf/w2vexp.pdf'를 찾아서 읽어볼 것을 권합니다. word2vec의 구조와 parameter update 방법/수식 등을 친절히 설명해놨습니다. (배경 지식없이 Mikolov의 논문을 보면 좀 욕 나옴.)

word2vec이 word embedding을 효과적으로 구현해서 많은 이들의 주목을 받은 후에, GloVe라는 알고리즘도 등장했습니다. (참고. GloVe: Global Vectors for Word Representation http://www-nlp.stanford.edu/pubs/glove.pdf) 자료를 찾아보면 GloVe가 단어를 벡터로 표현하는데 word2vec보다 낫다는 평도 있습니다. 일반적인 입장에서 볼 때 word2vec과 glove는 큰 차이는 없는 것같고, 필요하다면 둘 다 테스트해보고 자신의 문제에 더 맞는 것을 선택하면 됩니다. 이 둘이 어떤 차이가 있을까?를 조사하면서 'don't count, predict! http://www.aclweb.org/anthology/P14-1023'라는 논문을 읽었는데, 이 논문에서 word embedding 또는 word representation의 두가지 방식을 잘 설명해줍니다. (논문의 결론은 GloVe의 counting보다는 word2vec의 predictive가 더 낫다고...)

전통적으로 word embedding은 counting에 기반합니다. 보통 VSM vector space model로 알려진 N x M의 word-document matrix나 word co-occurrence를 표현한 N x N matrix를 만드는 것은 counting방식입니다. NM행렬은 문서로 단어를 표현하고, NN 행렬은 다른 단어로 단어를 벡터로 표현한 것입니다. 그런데, 이런 단어벡터는 보통 수십만 이상의 고차원으로 정의되기 때문에 데이터를 저장한다거나 벡터 연산을 하는데 실효성/실용성이 떨어집니다. 그래서 dimension reduction 기법을 사용해서 고차원 벡터의 의미를 최대한 유지하면서 저장공간도 줄이고 연산도 쉽게하는 저차원 벡터로 만듭니다. 그렇게 저차원의 단어 벡터가 통상 말하는 word embedding입니다.

저차원으로 줄이는 방식은 단어를 특정 카테고리로 매핑해서 카테고리 벡터로 표현하는 syntactic 방식이 생각하기에 가장 쉬운 방식일 듯합니다. 하지만 인위적으로 카테고리를 정하는 것이 만만치가 않고, 또 단어를 카테고리로 매핑하는 방식도 쉽다고는 말하기 어렵습니다. 물론 분류 classification 알고리즘을 사용하면 된다라고 설명하면 되지만... 서비스를 기획/개발하면서 카테고리 작업을 해보신 분들은 카테고리를 잘 정의하면 여러모로 좋다는 것은 잘 알지만, 그걸 깔끔하게 잘 만들기가 매우 어렵다는 것을 압니다. 처음에는 카테고리를 잘 정의했다고 생각하지만, 나중에 이상한 새로운 데이터가 출현했을 때 기존 카테고리와 맞지 않는 문제도 있고, 카테고리를 어느만큼 세밀하게 정의할 것인가 등의 많은 이슈들이 터져나옵니다.

Supervised 분류가 어렵다면, unsupervised를 고려할 수 있습니다. 그래서 클러스터 방식을 사용해서 군집화합니다. 그렇게 만들어진 클러스터1부터 클러스터c까지 매핑하면 c차원의 벡터를 만들 수 있습니다. 하지만, 클러스터 방식은 만들어진 벡터의 robustness에 의문이 생깁니다. 학습데이터가 바뀔 때마다 각각의 데이터가 다른 클러스터로 군집되면 같은 데이터가 다른 벡터로 표현될 수가 있다는 의미입니다. 그래서 기존의 클러스터 구조를 유지하면서 새로운 데이터를 수용할 수 있는 방식이 필요합니다. 그리고 클러스터는 분류와 개념상 더 비슷한/연결고리가 있는 것이라서 먼저 설명했지만, 가장 일반적인 방식은 PCA principle component analysis입니다. PCA는 행렬에서 고유값/고유벡터를 찾아서  분해하는 SVD singular value decomposition 메커니즘을 기본적으로 따릅니다. 이 SVD를 텍스트 마이닝에 바로 적용한 것이 보통 LSA/LSI Latent Semantic Analysis/Indexing입니다. PCA에서 principle과 SVD애서 singular,  LSA의 latent, 그리고 행렬의 eigen(고유)이 결국 같은 걸 의미합니다. 이를 통해서 고차원의 행렬을 저차원의 행렬들로 분해합니다.

SVD와 같이 행렬을 저차원으로 행렬의 곱으로 분해하는 것을 보통 matrix factoriztion이라고 합니다. 즉 행렬을 인수분해하는 것입니다. SVD는 3개의 행렬로 분해하지만, 최근에는 그냥 2개의 저차원 행렬로 분해하는 여러 방식도 많이 제안됐습니다. 대표적으로 Non-negative Matrix Factorization인데, 이는 원래 고차원 행렬과 저차원 행렬 모두 음수가 아닌 값으로 채워지도록 분해하기 때문에 붙여진 이름입니다. 어쨌든 NMF를 사용하면 고차원 행렬을 2개의 저차원 행렬의 곱으로 표현할 수 있습니다. Word-document matrix를 SVD로 인수분해하든 NMF로 인수분해하든 word 쪽의 저차원 매트릭스를 단어 벡터로 볼 수 있습니다. 이렇게 여러 가지 방법으로 저차원의 단어벡터를 만들 수 있습니다.

다시 counting vs predictve로 돌아가서, 이상에서 길게 설명한 word-document matrix 또는 word-co-occurrence matrix를 factorization하든 카테고리로 매핑하든 클러스터로 묶든 이런 co-occurrence 데이터로 단어벡터를 만드는 것이 counting 방식입니다. 반대로 word2vec은 알고 싶은 단어의 주변 context 단어들의 벡터로 표현하는 것이 predictive 방식입니다. 즉 컨텍스트로 의미를 유추/예측한다는 뜻입니다. 그런데, counting 방식에서 co-occurrence의 카운팅을 문서나 문장 단위가 아니라, word2vec처럼 로컬의 컨텍스트 단어로 window를 축소해서 계산한다면 counting방식이 predictve방식과 큰 차이가 날까?라는 의심이 듭니다. Co-occurrence를 카운팅할 때 global하게 볼 것인가 아니면 local로 볼 것인가의 차이인 듯도 한데... 실제 co-occurrence matrix를 로컬의 context만으로 표현할 수 있습니다. Window 사이즈를 어떻게 잡느냐에 따라서 로컬 정보만을 취할 수도 있고 글로벌 정보를 취할 수도 있습니다. 이건 k-NN에서 k의 값을 어떻게 잡느냐에 따라서 민감도가 달라지는 것과 크게 달라보이지 않습니다. 물론 연산방식이 달라서 결과가 다르게 나올 것 같지만, word2vec에서 사용하는 context만으로 co-occurrence를 구해서 MF든 GloVe든 구하면 결과가 얼마나 많이 다를지 살짝 의문이 듭니다.

... 제가 이런 고차원의 단어 벡터를 저차원의 단어 벡터로 표현하는 것에 관심을 가지는 것은 본격적으로 NLP나 텍스트 마이닝을 하겠다는 것보다는 예전부터 계속 해왔던 추천 그리고 광고랭킹에 이런 기술을 적용해서 효과를 낼 수 있다는 가능성 때문입니다. 단순히 사용자가 봤던 상품/컨텐츠 ID의 시퀀스를 word2vec이든 GloVe 알고리즘에 인풋으로 넣으면 상품/컨텐츠ID의 벡터가 나오고, 그 벡터의 유사도 계산을 통해서 관련상품 또는 관련 컨텐츠는 쉽게 추천해줄 수 있습니다. 기존에 사용하든 CF나 MF 방식도 결국 이걸 구현했던 것이니 별반 차이가 없습니다. 컨텐츠ID를 벡터로 표현해서 바로 적용하는 것도 있지만, 사용자의 벡터화를 통해서 개인화 추천에 바로 적용할 수도 있습니다. 첫째는 유사 사용자를 벡터 연산으로 바로 찾아낼 수도 있고, 사용자 벡터와 컨텐츠 벡터의 관계를 Neural Translation에서 사용한 것과 유사한 방식으로 찾아낼 수도 있습니다. 그리고, MF 추천 방식에서 원래 사용자 벡터와 컨텐츠 벡터의 곱으로 연관성을 측정했습니다.

현재 추천이나 광고랭킹 시스템이 고도화됐더라도 한 사용자의 모든 활동 이력을 raw data 수준으로 활용하는 곳은 별로 없다고 봅니다. 성별이나 연령, 또는 관심사 등으로 뭉뚱그려서 (앞서 설명한 카테고리 방식) 개인을 설명합니다. 그러다 보면 추정이 잘못된 경우도 빈번하고 카테고리에서 설명했듯이 개인의 히스토리가 온전히 카테고리로 매핑되지도 않습니다. 그리고 역으로 raw 데이터를 그대로 활용해서 추천에 이용하는 것이 가능하더라도 raw 데이터에는 outlier가 포함돼서 어느 정도는 데이터를 뭉게는 과정이 필요합니다. 사용자의 이력을 엄청나게 긴 벡터라고 생각한다면 이를 적절히 짧은 벡터로 만들 수 있다면 활용성은 무궁무진해집니다.

사람이든 객체든 그걸 설명하는 데이터를 앞으로 엄청나게 많아 질 것입니다. 하지만 데이터가 많아진다고 해서 그걸 모두 적절히 활용한다는 것은 아닙니다. 빅데이터라는 신드롬에 편승해서 데이터가 모이기만 하면 가치가 만들어지는 것 같은 신기루에 빠졌습니다. 하지만 모든 데이터는 적절히 관리돼고 또 처리될 수 있는 수준으로 압출돼야 비로소 가치적 행위로 이어집니다. 물론 고차원의 데이터를 그대로 활용할 수 있다면 문제가 없겠지만, 아직은 많은 곳에서는 적절한 양으로 요약해야 제대로 사용할 수 있습니다. 고차원의 데이터가 손실없이 저차원으로 표현된다면... 그런 측면에서 계속 word embedding 기술도 탐독했고 각종 factorization이나 dimension reduction 기술을 공부하고 있습니다. (하지만, 전 그걸 코드화하는 것에 참 부족해서... 그냥 늘 머리 속으로 공부만... 다행히 요즘은 오픈소스가 잘 돼있어서 직접 구현할 필요가 많이 줄어들었습니다. 하지만 가끔은 그걸 이용하는 게 더 귀찮을 때도... 최근 움직임 중 하나는 클라우드를 AIaaS로 활용하는 것도 있지만 좀 경계는해야 할 듯...)

오랫동안 여러 논문들을 읽으면서 여러 번 글을 적고 싶었지만 오늘 다양한 주제를 하나의 글로 만들었습니다. 여러 개념들이 일반적으로 통용되는 것과 다른 식으로 표현돼거나 또는 곡해한 부분이 있을 수 있습니다. 제 나름의 시각에서 해석한 것들이 많기 때문에, 이걸 원래 가지고 있던 의미를 다시 확인해보거나 자신의 문제나 시각에 맞도록 재해석하는 것이 필요합니다. 그것까지 제가 해줄 수는 없습니다. 물론 관련해서 도움을 요청한다면 또 다른 저의 시각에서 조언은 해줄 수는 있을지도...

word2vec을 다루는 많은 글들이 있습니다. 하지만 참 부족하다고 느꼈습니다. 단순히 word2vec의 결과로 벡터 연산을 할 수 있다느니 아니면 단순히 word2vec 오픈소스를 사용하는 방법만을 설명해놓은 중복된 정보가 너무 많습니다. 제가 늘 아쉬웠던 것은 실제 word2vec이 어떤 메커니즘/수식을 통해서 도출되는지였는데, 다행히 앞서 언급했던 논문 (word2vec explained)에서 많은 궁금증을 해결했습니다. 뿐만 아니라, word2vec을 통해서 단순히 단어의 벡터 연산 이상으로 어떤 곳에 어떻게 활용했는지를 정리한 글도 별로 보지 못했습니다. 인터넷이라는 공간이 긍정적인 면도 많지만, 때로는 너무 한쪽에 치우친 정보만이 넘쳐나는 공간이 돼는 듯도 해서 안타까움도 있습니다. 제가 많이 알지도 못하고 글재주도 부족하지만 조금은 다른 측면에서 글을 적으려는 이유도 이런 안타까움이 한몫했습니다.

다시 경고하지만, 제가 틀린 것을 적었을 수도 있습니다. 제가 이해한 것을 적은 것이니 잘못된 것은 걸러들으시고 또 알려주시면 감사하겠습니다.

===
B: https://brunch.co.kr/@jejugrapher
F: https://www.facebook.com/unexperienced


댓글을 달아 주세요

Share           Pin It

불특정 다수를 위한 추천을 제외하면, 대부분의 추천은 개인화에 바탕을 두고 있습니다. 개인의 선호도를 바탕으로 명시점수를 예측하거나 특정 아이템을 선호할 확률을 계산해서 보여주기 때문입니다. 그리고 나와 유사한 사용자들이 좋아하는 제품들이나 내가 좋아하는 제품의 관련 제품들도 개인의 선호에 바탕으로 맺어지는 것입니다. 그렇기에 추천 개인화라는 타이틀이 조금 어색하지만, 최근에 제가 고민하는 플랫폼/프로세스에 대한 간략한 스케치만 다루겠습니다. 그리고, 추천 개인화에 관심이 있으신 분들은 Netflix에서 나온 Mining Large Streams of User Data for Personalized Recommendations를 읽어보시기 바랍니다.

제가 생각하는 추천 시스템 또는 추천 개인화는 1. 개인의 과거 이력을 바탕으로 관심사를 찾아내고 모델링하는 User Profiling, 2. 유저프로파일에 연관된 모든 아이템을 찾아내는 Matching, 3. 매칭된 아이템들을 특정 기준에 따라 점수화/순위화하는 Ranking, 그리고 4. 랭크된 아이템들 중에서 유저의 이력이나 선호도에 따라서 불필요한 것들을 제외시키는 Filtering으로 구성됩니다. 이전 글에서도 명시했듯이 랭킹과 필터링은 따로 구분해서 순차적으로 적용되는 것은 아닙니다. 필터링이 매칭단계에서 적용될 수도 있고, 랭킹 함수의 한 요소로 사용될 수도 있습니다.

유저 프로파일링은 문자 그대로 사용자의 프로파일을 만드는 과정입니다. 사용자가 명시한 것들이나 과거 이력, 또는 데모그래픽 정보 등을 모두 이용해서 해당 사용자의 관심사를 파악하고, 그것을 기계가 이해할 수 있는 데이터 구조 및 형태로 표현하는 것입니다. CF방식에서 사용되는 유사사용자도 프로파일이 될 수도 있고, 최근에 조회했던 아이템들도 프로필이 될 수 있습니다. 검색을 많이 하는 사용자의 경우 최근 검색히스토리, 최근 본 기사에서 주로/많이 사용된 키워드 및 기사의 카테고리, 트위터나 페이스북의 친구 등도 모두 사용자 프로파일이 추가될 수 있습니다. 사용자가 직접 등록/지정하는 키워드/토픽/카테고리도 빠질 수가 없습니다.

유저 프로파일이 만들어졌다면, 그것과 관련/연결된 모든 아이템들을 찾아내는 과정이 매칭입니다. (참고로, 매칭에서 '아이템'은 경우에 따라서 다른 의미를 가집니다. 페이스북이나 트위터에서 친구를 추천해주는 경우에는 다른 '유저'가 아이템이 됩니다.) 유사 사용자들이 최근에 관심을 가졌던 아이템들, 최근 본 아이템들의 연관 아이템들, 내가 지정한 또는 암묵적으로 관심을 가졌던 키워드를 포함하는 아이템들 (뉴스기사나 제품설명서 등), 내가 팔로잉하는 사람들이 최근에 적은/추천한 기사 등... 프로파일에 명시된 것들과 연결된 모든 아이템들을 찾아내는 것이 매칭 단계입니다.

매칭을 통해서 수많은 아이템들이 찾아지면, 그것들을 그냥 유저들에게 보여줄 수가 없습니다. 특정한 기준에 따라서 정열을 하고 상위의 Top N개만 선별해서 보여줘야 합니다. 랭킹글에서도 적었듯이 연관성이 높은 아이템들, (일반/특정그룹의) 인기도가 높은 아이템들, 최신 아이템들, 희귀한 아이템들, 오리지널 아이템들 (원본글), 품질이 높은 아이템들 (권위있는 사용자가 적은 글이나 유명 브랜드의 제품 등), 쇼핑에서는 가격이 싼 또는 비싼 아이템들... 등과 같은 다양한 기준에 따라서 아이템들을 정열합니다. 특정 기준에 따라서만 정열할 수도 있고, 여러 요소들을 선형/비선형으로 통합할 수도 있습니다. 그리고 추천랭킹에서 컨텍스트 정보도 중요합니다. 특정 요일이나 시간대, 지역, 성별/연령이 좋아하는 아이템들이 있다면 그런 컨텍스트에 맞게 랭킹이 조정될 필요도 있습니다. 예를들어, 남녀의 선호도가 명확한 상품의 경우 여성에게는 여성 선호 상품을 우선적으로 보여주는 것입니다.

랭킹점수가 높다고 해서 유저들이 그것들을 모두 좋아하는 것은 아닙니다. 이제 사용자들이 싫어할만한 것들 속아내는 과정이 필요합니다. (기본적으로 랭킹이 선호와 비선호를 나눴다고 가정하지만) 유저가 최근에 조회했던 아이템을 중복해서 제시되면 피로도가 쌓이기 때문에, 최근에 본 아이템을 제외하는 것은 가장 기본입니다. 그 외에도 오래된 아이템을 제외할 수도 있습니다. 뉴스 추천에서 최근 일주일, 최근 하루, 또는 최근 1시간정도로 현재 이슈가 되는 것을 위주로 보여줘야 합니다. 그리고 유저가 지정한 (또는 기계적으로 파악된) 비선호 카테고리 정보를 이용해서 비선호 아이템을 제거하는 것도 필요합니다. 정치뉴스를 절대로 안 읽는 사용자에게 정치뉴스만을 추천해주면 추천 시스템이 무용해집니다. (이 이슈는 다음의 필터버블 글에서 다시 다루겠습니다.)

간략히 정리해서 "개인화 추천 (PR) = 유저프로파일링 (P) + 아이템 매칭 (M) + 아이템 랭킹 (R) + 아이템 필터링 (F)"입니다.

추천시스템 전체 목록

  1. 추천 시스템과의 조우 (PR시리즈.1)
  2. 추천 시스템을 위한 데이터 준비 (PR시리즈.2)
  3. 추천대상에 따른 추천 시스템의 분류 (PR시리즈.3)
  4. 알고리즘에 따른 추천 시스템의 분류 (PR시리즈.4)
  5. 추천 시스템을 위한 유사도 측정 방법 (PR시리즈.5)
  6. 추천 시스템의 성능 평가방법 및 고려사항 (PR시리즈.6)
  7. 추천 시스템에서의 랭킹과 필터링 문제 (PR시리즈.7)
  8. 추천 시스템의 쇼핑하우 적용예 (PR시리즈.8)
  9. 개인화 추천 시스템에 대하여 (PR시리즈.9)
  10. 추천 시스템의 부작용 - 필터버블 (PR시리즈.10)
  11. 추천 시스템의 레퍼런스 (PR시리즈.11)
  12. 추천 시스템에 대한 잡다한 생각들 (PR시리즈.12)
  13. 추천 시스템을 위한 하둡 마훗 사용하기 (PR시리즈.13)
  14. 추천 시스템에 대해서 여전히 남은 이야기들 (PR시리즈.14)

==

페이스북 페이지: https://www.facebook.com/unexperienced

댓글을 달아 주세요

관심 생명 주기

Gos&Op 2013.07.22 08:59 |
Share           Pin It

두가지 이야기부터 시작해보자. 첫번째는 최근에 진행 중인 쇼핑 추천 서비스와 관련이 있다. 아마존을 사용해본 사용자라면 다 알겠지만 아마존 홈페이지에 접속하면 최근에 구매했거나 조회해본 상품들이 첫화면에 나열되고 그것과 관련이 있는 상품들을 추천해준다. 일종의 개인화 추천이다. 구매나 조회는 나의 관심사를 암묵적으로 보여주고, 그것을 바탕으로 새로운 상품을 추천해주는 것은 직선적이다. 그런데 그런 상품을 언제까지 추천을 해줘야할까? 만약 1년 전에 마지막으로 아마존에 접속해서 책 한권을 살펴봤다가 1년만에 재접속했는데 여전히 그 책과 관련 도서를 보여준다면 제대로된 추천이라고 볼 수가 있을까?

두번째는 예전부터 알고는 있었지만 직접 경험해보니 좀 거시한 거다. 어떤 여성 의류 쇼핑몰이 있다. 그런데 최근에 내가 접속하는 많은 블로그나 사이트들에서 해당 쇼핑몰의 광고가 계속 노출되고 있다. 처음에는 해당 쇼핑몰이 광고를 많이 하나보다정도로만 생각했었는데, 알고 보니 이게 다 구글의 장난이었다. 해당 쇼핑몰에 한 번 접속한 후로 계속 같은 광고가 노출되고 있다. 광고에 있는 쇼핑몰 모델이 예뻐서 클릭해봤던 건지 아니면 위의 쇼핑 추천 서비스를 테스트하면서 접속해봤는지 정확한 시작은 모르겠지만, 한번 접속 이후로 계속 같은 광고가 따라다닌다. 처음에는 1주일정도 노출되다가 말겠지 생각했는데, 벌써 몇 주째 같은 광고만 보고 있다. 알고리즘에 의해서 다양한 정보 (?)의 선택권이 박탈되었다.

위의 두가지 사례는 모두 개인의 관심 또는 흥미 Interest와 관련이 있다. 분면 내가 아마존에서 책을 조회했기 때문에 해당 책에 관심을 보였고, 해당 쇼핑몰에 접속해봤기 때문에 또 그 쇼핑몰에 관심을 보인 경우다. 그렇기 때문에 이것을 바탕으로 다른 상품이나 해당 몰을 계속 보여주는 것은 일리가 있다. 그런데 언제까지 계속 보여줄 것인가?에 대한 고민이 필요하다. 아마존이 되었든 구글이 되었든 또는 다른 업체가 되었든 개인의 관심사를 찾아내는 것은 중요하다. 그러나 그 관심사가 소멸되는 시점을 예측하는 것은 더 중요하다.

개인마다 관심사가 제각각이고 또 계속 변한다. 관심의 생성이 중요하듯이 관심의 소멸도 중요하다. 인터넷 서비스들이 개인화를 시작하면서 관심의 생성/발생에는 초점을 두는데 관심의 소멸에는 좀 소홀한 것같다. 어떤 물건에 관심을 가지기 시작하면 그 물건을 검색해보고 상세정보를 확인해본다. 관심이 생성된 시점이라고 봐도 좋다. 그런데 계속 살까 말까를 고민하면서 다양한 제품들을 조회해보다가 결국 지름신을 이기지 못하는 때가 온다. 그 물건이 내 손에 들어온 이상 더이상 그것에 대한 관심이 없어진다. 즉, 관심이 소멸한 시점이다. 그런데 구매가 이뤄진 이후에도 계속 내가 최근에 본 상품과 그것의 관련 상품을 추천해준다면 좋은 일을 해주고 욕먹는 꼴이 된다.

가끔 사회 이슈가 된 것 때문에 검색을 해보거나 특정 사이트에 (우발적으로) 접속하는 경우가 있는데, 이것을 바탕으로 관련 광고를 계속 노출시켜주는 것이 현재 구글의 DA 전략이다. 그런데 중요한 점은 우발성 또는 일회성에 있다. 이것은 관심의 생성과 함께 소멸을 의미한다. 그런데 계속 관심이 살아있는 것으로 가정하고 광고를 노출한다면 해당 업체에 대한 피로감만 누적된다. 때로는 여행과 같이 의도를 가지고 검색/광고클릭을 했더라도 그 욕구를 충족시킨 이후에도 계속 비슷한 광고가 노출되는 경우도 있다. 물론 관심의 생명주기가 어떻게 될지를 예측하는 것은 어렵다. 그러나 관심을 캐치해내는 능력을 키웠듯이 관심이 소멸되는 시점을 캐치해내는 능력에 대한 연구와 시도가 필요하다.

쇼핑 추천 서비스를 준비하면서 일단은 기술적으로 추천 알고리즘을 개발했지만, 끝내 풀지 못한 문제가 이 관심의 소멸시점에 대한 것이다. 수학적으로 시간에 따라 감소하는 dacay factor를 식에 넣기는 했지만, 이것이 소멸 시점을 확정시키지 않는다. 예전에 소셜픽 프로젝트를 하면서 이슈의 생명주기를 고려했던 적이 있다. 그런데 이슈는 생성 시점만큼 소멸 시점이 명확하다. 검색량이나 관련 문서량이 급감하면 이슈가 소멸했다고 판별할 수 있다. 그런데 대중의 관심사에 대한 소멸은 경향성을 보면 짐작할 수도 있지만 개인(화를 위한 개인)의 관심사의 소멸시점을 특정하기 어렵다. 특정 물건에 관심을 가지기 싲가해서 평규적으로 며칠 후에 물건을 실제 구매하더라 등과 같은 데이터라도 제대로 확보한다면 유추해 가늠해볼 수는 있지 않을까? 새로운 관심의 생성시점이 이전 관심의 소멸시점으로 유추할 수도 있으나 여전히 불완전하다.

관심/흥미 생명주기 Interest LifeCycle 또는 관심의 변동성 Interest Volatility 을 연구해보는 것도 나름 재미있을 것같다. 그런데 이 연구에 대한 흥미는 언제쯤 없어질까?

페이스북 페이지: https://www.facebook.com/unexperienced

댓글을 달아 주세요

Share           Pin It
 작년 12월 이맘 때 쯤에 오랜 고민 끝에 2011년은 '거리의 해'가 되지 않을까?라는 전만을 내놓았다. (참고링크: 2011년은 '거리의 해') 2011년을 마무리하는 지금 생각해보면, 그냥 쉽게 '2011년은 모바일의 해가 될 것이다' 또는 '2011년은 클라우드의 해가 될 것이다'로 전망했더라면, 지금쯤 당당하게 나의 선견지명을 자랑하고 있을터이다. 그런데 나는 그러지 못했다. 당시에도 모바일이나 클라우드의 현재 기술 트렌드의 중요한 한 꼭지라는 사실은 인지하고 있었지만 (2010년 가을에 학교에서 발표한 자료를 다시 보면 분명 모바일과 클라우드를 한 꼭지로 말했다. 참고링크: 키워드로 보는 인터넷 트렌드), 내가 지금 그걸 꺼집어 낸다고 해서 겨우 '내가 무지해서 모바일과 클라우드의 가능성 및 전망을 인식하지 못한 것은 아니다'라는 정도의 비아냥을 피하기 위한 변명일 뿐이다.

 그런데 진짜 2011년은 모바일의 해였고, 그것보다는 클라우드의 해였다라고 말해도 부족합니 없다. 모바일 환경의 변화는 2007년 아이폰의 등장과 함께 시작되었고, 2010년과 2011년을 지나면서 아이패드1/2가 소개되면서 더욱 가속되었다. 그렇기에 2011년 또는 다른 어느 해를 특정해서 '모바일의 해'라고 명명하기는 싫었다. 그래서/그리고 소셜의 해 (2008년), (실)시간의 해 (2009년),그리고 로컬의 해 (2010년) 다음으로 온 2011년을 단순히 많은 이들의 말마따나 통합의 해, 또는 더 기술적으로 말해서 모바일의 해 또는 스마트의 해라고 특정하고 싶지 않았다. 그러나 어쨌던 2011은 많은 사람의 기억 속에서 모바일의 해로 남을 듯하다.

 그런데 2011년을 '클라우드의 해'라고 예측했더라면 지금 이렇게 구차하게 변명하지 않아도 되었을텐데라는 아쉬움은 남는다. 사실 클라우드가 큰 흐름에 놓여있다는 것은 잘 알았지만, 2011년에 이렇게 치고 나올지는 예상치 못했다. 애플의 아이클라우드의 소개도 클라우드의 한 획을 그었고 (그러나 사실 애플은 아직 클라우드에서 큰 역할을 못하고 있음), 더 기술적인 면에서 빅데이터에 대한 수요가 이렇게 저변에 확대되어갈지는 전혀 예상치 못했다. 물론 개인적으로는 데이터분석 또는 마이닝 측면에서 빅데이터 어낼리틱스 Big Data Analytics에는 아직 미흡함이 많다는 것이 다소 아쉽지만, 적어도 빅데이터의 처리에 대한 수요나 관심의 증가, 그리고 어떤 측면에서의 대중화는 참으로 놀라운 현상이다. 내년에는 빅데이터라는 용어가 더욱 친숙하게 들릴 듯하다.

 다시 나의 빗나간 지난 예측으로 넘어가자. 내가 2011년을 거리의 해로 예측하고 싶었던 이유는 1) 물리적 거리 Physical Distance 측면에서 NFC 등의 근거리기술의 대중화를 예측했기 때문이다. 구글의 안드로이드를 중심으로 NFC에 대한 대중화를 노력하고 있지만, 아직은 그렇게 활성화 그리고 대중화를 이루지 못했다. 더우기 애플에서는 아직 아이폰에 NFC기술을 접목시키지 않고 있다.

 두번째 이유로 논리적 거리 Logical Distance에서의 근접화를 예상했다. 트위터와 소셜게임 등의 다양한 소셜서비스들이 등장하면서 일면식도 없는 익명의 사용자를 친구로 추가하는 그런 광의의 소셜에서 더욱 친밀한 관계로 재정립될 것을 예상했다. 2010년의 특징적인 키워드 중에 하나로 언프렌드 unfriend, 친구끊기가 뽑혔기 때문에, 그런 불필요한 관계들은 정리되고 더욱 친민한 의미에서의 친구관계가 더욱 공고해질 것을 예상했다. 당시에 최근에 다시 각광을 받기 시작한 Path라는 앱/서비스도 소개되었는데, Path는 진짜 사회학에서 말하는 친구/지인의 개념에 충실한 서비스였다. 페이스북 등의 다른 서비스들에서도 많은 친구들에서 오는 피로감을 극복하기 위해서 더욱 조밀한 네트워크로 변모하지 않을까?라는 예상을 했었는데, 그렇게 눈에 띈 변화는 없었던 것같다. (개인적으로는 페이스북에서 불필요한 가짜 친구링크들을 모두/대부분 제거하고 더욱 조밀하고 친밀한 네트워크를 만들었다.) [참고: 페이스북 친구, 나날이 줄어드는 이유는? 매일경제]

 세번째는 Distance의 거리가 아닌 Street의 거리였다. 즉 공간상의 거리 Spatial Street를 예상했다. 증강현실 (AR) 기술이 더욱 발전해서 단순히 위치기반서비스 이상의 서비스들이 더 많이 등장하고 대중화될 것으로 기대했다. 올 한해동안 많은 위치기반의 서비스들이 등장했지만, 모두가 깜짝 놀랄만한 그런 것은 별로 없었던 것같다. 내가 어떤 위치에 갔을 때, 내게 필요한 정보를 제대로 밀어준다거나 아니면 위치기반의 광고들이 활성화된다거나... 이 부분에 대한 기대는 매우 커지만 아직 제대로... KTH에서 아임인서비스와 로컬광고 등을 잘 활용해보겠다는 의욕을 보였으니 내년에는 주목할만한 서비스가 출현할 수 있을지가 궁금하다. 그보다 2~3년 전에 와우기술이었던 AR가 좀더 현실 생활에서 사용이 될 수 있을까? 그런 의미에서 2011년을 기대했었는데, 기대만큼의 성과를 보여주지 못했으니...

 물리적 (근)거리 기술도 제대로 대중화되지 못했고 (그러나 2012년이나 2013년 정도면 신용카드가 NFC로 넘어가기 시작하지 않을까?라는 예상을 해본다), 논리적으로 친구정리 또는 새로운 친밀한 네트워크의 형성 측면에서도 큰 흐름이 아니고 (그러나 그런 종류의 다양한 서비스들이 계속 등장하리라 예상한다. 앞서 말한 Path에서도 친구제한을 150명 (초기에는 50명)으로 제한을 했다고 하니, 자신의 친구목록에 누굴 넣고 누굴 뺄지를 계속 고민할 것같다), 그렇다고 공간적 거리에서 IT기술들이 실생활화되었다고 말하기도 힘들다. '거리'라는 키워드를 뽑아서 나름 의미있는 2011년을 예측해봤지만, 기대와 예상을 뛰어넘지 못했다. 2012년을 다시 기대해본다.

 그래도 위에서 말했던 것이 전혀 이뤄지지 않은 것도 아니니 틀린 예측/기대도 아니다라고 우겨본다. NFC가 안드로이드 기기들에 등장하기 시작했고, 페이스북이나 트위터에 경쟁하기 위해서 Path처럼 특화된 서비스들이 소개/진화해나가는 것도 부인할 수 없고, 그리고 스마트폰/모바일환경으로 변하면서 거리에서 인터넷 상의 정보를 탐색, 소비하는 것도 이뤄지고 있으니... 전혀 근거없고 터무니없는 예측은 아니었다라고 자평한다. 그리고, '거리 Distance & Street'라는 키워드를 뽑을 때는 단순히 '개인화 Personalization'라는 키워드를 사용하기 싫었기 때문이기도 했습니다.

 그리고, 위에서 제시했던 3가지 이유에서 2011년은 분명히 거리의 해가 아니었다. 그러나 우리는 2011년을 '거리의 해'로 기억해야 한다. 왜냐하면 타임지가 2011년의 인물을 시위자 The Protester로 선정했듯이 (관련링크), 2011년도는 전세계적으로 거리의 정치가 이뤄진 해였다. 유럽에서의 금융위기에 대처하기 위한 거리시위, 미국 월스트리트에서 이뤄진 99%를 위한 거리시위, 대한민국에서도 FTA 비준에 항의하거나 한진중공업 사태, 그리고 최근의 나꼼수 콘서트 등의 거리 시위/행사, 그리고 중동과 아프리카에서 벌어지고 있는 다양한 민주화운동 등은 모두 거리 위 On Street에서 이뤄진 것들이다. 그런 의미에서 2011년은 분명 '거리의 해'다. 소 뒷걸음질쳐서 쥐를 잡기는 했다. 그래도 쥐를 잡았으니... 내년에도 우리 모두 쥐는 꼭 잡읍시다.

 2011년 예측에 대실패를 경험해봤기에, 2012년에 대한 예측은 좀더 신중하게 고민해보고 다시 포스팅하겠습니다. 그냥 2012년은 (재)거리의 해라고 명명해 버릴까요? 내년이 참 궁금해집니다. 작년 이맘 때에 '클라우드'를 키워드로 선정만 했더라도... 2012년은 어떤 해가 될까요? 힌트가 있으신 분은 좀 알려주세요. (굽신)

댓글을 달아 주세요

Share           Pin It
 2009년도부터 트위터를 본격적으로 사용했으니 2년이 넘게 트위터가 내 주력 온라인 활동 공간이었다. 그러나 현 시점에서 트위터를 나의 유일한 주력 공간이라 부를 수는 없다. 트위터를 사용한 처음 1~1.5년 동안은 트위터가 공적인 활동과 사적인 활동 모두를 담당했다. 한참 재미를 붙이던 시절에는 하루에 100트윗이상도 해서 친구들에게 미안한 생각도 많았는데, 최근에는 특별히 여행을 가서 (제주에 거주하니 그냥 산책/산행정도지만) 포스퀘어에 체크인하거나 인스타그램으로 사진을 공유하지 않는 이상은 요즘은 하루에 10트윗도 못하는 것같다. 그런데, 4Sq나 인스타그램을 제외하면 대부분의 트윗도 기사리트윗 (최근에는 미디어다음에서 리트윗)하는 것이 대부분이고, 간혹 긴 생각을 (컨텍스트없이) 짧은 글로 남기는 경우가 있다. 그외의 개인적인 활동이나 생각은 페이스북에 업데이트하는 것같다. 그러니까, 공적인 글은 트위터에 사적인 글은 페이스북에 올리는 셈이다. 처음 페이스북을 시작할 때는 (물론 가입후 오랜 시간이 흐른 후) Zynga의 마피아워즈 등의 게임을 하기 위해서 일면식도 없는 이들을 친구 목록에 추가했었지만, 1000명 이상의 그런 인물들을 정리한 후에는 고향, 학교, 회사 동료들만 친구목록에 남아있다. (예외도 있음.) 그렇게 정리된 후에는 트위터에 올리는 IT이슈라거나 정치/사회이슈를 자동으로 페이스북에 연동받는 것도 꺼려져서 트위터-페이스북 연동마저 끊어버리고, 순전히 개인적인 사진이나 생각을 페이스북에 올리기 시작했다.

 극히 사적인 얘기를 페이스북에 올리기 시작하니 자연스레 트위터의 활동도 많이 줄었다. 그런데 순전히 페이스북이 나의 사적인 공간이 되었기 때문에 트위터에서의 활동이 줄었다라고 말할 수는 없다. 이상하게 트위터에서 새로운 기능을 선보일 때마다 나는 점점 트위터의 대중에게서 멀어지는 것같다. 처음 공개 타임라인만 존재하던 시절에는 어쩔 수 없이 모든 이들의 글을 볼 수 밖에 없었다. 팔로잉이 적던 시절에는 거의 모든 글을 확인했고, 팔로잉이 수백, 수천을 넘긴 시점부터는 트위터에 접속한 시점에 올라온 트윗들만 확인하기는 했지만, 그래도 (랜덤하게) 모든 사람의 글을 확인했다. 그런데 때마침 트위터에 리스트 기능이 소개되었다. 나도 몇몇의 리스트를 만들었다. 국내외 뉴스전문리스트, 외국의 기술뉴스 리스트, 오랜 지인들 리스트, 그리고 지금 다니는 직장의 동료들 (일면식이 없는 모든 전현직 포함) 리스트를 만들었다. 처음에는 공개타임라인과 여러 리스트를 돌아가면서 글을 확인할 수 있으리라 생각했지만, 내 생각이 틀렸음이 증명되는데 오랜 시간이 필요치 않았다. 리스트가 소개된 이후에 나는 동료리스트의 글만을 보게 되었다. (테크뉴스는 별도의 트위터계정을 통해서 계속 확인했지만, 요즘은 이것도 거의 하지 못 한다.) 4000명의 공개팔로잉이 아닌 500명 (리스트는 최대 500명 수용)의 동료들의 업데이트만을 확인하는 단계로 내 트위터 활동은 축소되었다. 사실 (동료) 리스트를 사용하면서 단순히 더 관계가 있는 사람들의 업데이트를 본다는 장점도 있었지만, 더 관계가 옅은 이들의 일방적인 리트윗들을 보지 않는다는 장점이 더 컸는 것같다.

 그런데, 최근에는 나의 트위터 공간이 더 좁아들었다. 바로 Activity 기능이 소개되면서 더 이상 동료리스트에도 접속하지 않는 것같다. 예전에는 멘션을 확인하기 위해서 멘션과 리스트 사이를 왔다갔다했지만, 지금은 그냥 Activity에 디폴트로 접속한다. 내가 올린 글에 반응한것들만 확인하는 단계가 된 것이다. 처음 공개 타임라인을 사용할 때는 수많은 (모르는) 이들의 글을 읽으면서 때로는 오지랖넓게 멘션도 주고받고 또는 리트윗도 하곤 했는데, 리스트를 사용하면서부터는 동료들이 올린 글에만 거의 반응을 했는데,... 지금은 멘션 자체가 사라져버렀다. 트위터의 개인화 기능들은 당연한 흐름에서 나온 결과물들이지만, 그것들이 오히려 트위터의 본질을 훼손한 것같다는 느낌을 받는다. 만약 내가 타임라인에서 리스트로, 리스트에서 액티버티로 내 활동의 반경을 줄렸듯이, 다른 분들도 비슷하게 활동반경을 줄려나간다면... 더이상 다른 이의 글/트윗을 읽고 멘션/리트윗을 하지 않게 되는 시점이 올지도 모르겠다. 그때는 정보전파자로써의 트위터의 기능이 퇴화되어버리지 않을까? 컨텍스트의 부상과 함께 개인화는 피할 수 없는 대세였다. 그러나 이것이 트위터의 심장을 겨루게 될줄이야... 나만 그런가? (추가) 그런데, 페이스북에서도 비슷한 현상이 발생했다. 아직 트위터만큼은 아니지만 페이스북에서 타임라인 기능 (아직은 베타서비스이고, 수동으로 활성화시킨 경우에만 사용가능)을 선보인 이후에 지인들의 모든 업데이트를 열람하는 뉴스/실시간피드화면보다는 내가 적은 타임라인에 혼자 흐뭇해하고 단지 내가 올린 글에 대한 댓글 및 라이크 등의 노티피케이션에만 관심을 보이기 시작했다. 현재 타임라인이 기본 화면으로 생각한지도 시간이 좀 지났지만, 아직은 전체 뉴스피드를 자주 확인해보고 있는 것이 그나마 트위터보다는 나은 점이다.

 반면 페이스북은... 친구의 수를 줄인 이후에는 최대한 조심스럽게 페이스북에 글을 올린다. 그래도 잘 보여야할 사람들이 모여있기 때문에 괜한 꼬투리를 잡힐 얘기는 피하는 경향이 있다. (이 말은 취소. 페이스북에서 위험한 발언은 좀 했음.) 그리고, 아직은 구글+가 페이스북에 큰 위협은 될 것같지 않다. 단순히 내가 아직은 구글+를 적당한 활용처를 못 찾았기 때문인지도 모르겠다. 긴 글은 블로그/티스토리에, 가벼운 글은 페이스북에, 남의 글은 트위터에... 그러면 구글+에는 뭘 담아야할까? 구글+가 블로그를 대체하기에는 오픈니스가 좀 부족하고, 가벼운 글을 올리기에는 (오프라인 중심의) 친구들이 너무 부족하고, 관심기사를 담기에는 너무 장황하다.

 내가 사용할 수 있는 공간은 더 넓어지고 더 강력한 기능들이 소개되고 있지만 그럴수록 내 활동 반경은 더 좁아진 듯하다. 티스토리-트위터 이중구조일 때보다는 티스토리-트위터-페이스북 삼중구도일 때 나의 온라인 활동이 더 줄어들었고, 리스트-액티버티 등의 기능이 추가되어 그것에 적응할수록 내 관심의 범위도 더 좁아져버렸다. ... 그냥 이런 고민 (이게 왜 고민이 될까?)이 생겨서 글을 적게 되었다.

댓글을 달아 주세요