다른 졸업학년도의 대학원생들처럼 저도 올해 많은 시간을 Job Search에 투자했습니다. 처음에 Academic / Researcher Job을 찾는 것으로 시작하여, 나중에는 Industry / Engineering Job으로 구직의 폭을 넓혔습니다. 지난 2주간 A9 (아마존의 검색회사), Amazon, Microsoft, Google과 Facebook면접을 다녀오는 것으로 on-site인터뷰를 모두 마무리했습니다.


아직 최종 결과를 기다리고 있는 곳도 있지만, 만족스러운 오퍼를 이미 받았고, 최선을 다했다는 확신이 들기에, 지난 시간이 성공적이었다고 말해도 될 것 같습니다. 앞으로 몇 번의 포스팅을 통해 지난 6개월간의 여정을 정리해볼까 합니다. 아무래도 최근에 기술회사 면접을 다녀왔기에, 글의 초점이 그쪽에 맞춰질 것 같습니다. 오늘은 우선 '구직에 임하는 자세'에 대해 생각해 보겠습니다. 


Be a Learner, not a Shopper


지난 포스팅에서도 밝혔지만, 처음부터 Job Search를 직업 시장에 나가는 Shopper (혹은 Shoppee)보다는 대학원 시절 배움의 연장으로 생각하는 학습자(Learner)의 자세로 임하겠다는 생각이 있었습니다. 제가 생각하는 학습자의 자세는 매 순간 최종적인 '결과'보다는 과정에서의 '배움'을 소중히 하는 것입니다. 평생의 (적어도 몇년간의) 진로가 결정되는 구직 전선에서 '배움'을 운운하는 것은 굉장히 Naive한 태도로 보입니다. 구직은 다른 어떤 일보다도 '결과'가 명확하게 엇갈리는 일이니까요. 하지만, 지난 6개월을 돌이켜 보았을때, 이런 학습자의 태도는 가장 크게 도움이 되었던 요인이 아니었습니다. 


우선, (특히 박사 졸업생의) 구직은 대부분 장기전입니다. 저의 경우 작년 말 미국 내 교수직 지원을 시작으로, 올해 초 기업체 연구 개발직으로 지원의 폭을 넓혔습니다. 그 과정에서 좌절이 없었던 것은 아니지만, 결과에 연연하지 않겠다는 각오가 있었기에, 실패를 거울삼아 계속 뭔가를 배우고 개선해 나갈 수 있었습니다. 당장의 인터뷰 결과에 연연하기보다는, 학교 / 연구소 인터뷰 준비는 관련 분야의 논문을 읽는 기회로, 그리고 회사 인터뷰는 알고리즘 / 코딩 스킬을 연마하는 기회로 생각했습니다.


또한 '과정에서의 배움'을 중시했기에 처음에 비교적 난이도가 낮은 곳을 시작으로 꾸준히 더 어려운 곳을 공략했습니다. 효과적인 학습을 위해 가장 중요한 요소중 하나가 '적당한 난이도'라는 것을 감안하면, 이렇게 차근차근 Bar를 높였기 때문에 큰 부담없이 과정에서 계속 배워나갈 수 있지 않았나 합니다. 특히 Problem Solving이 주가 되는 기술 면접에서는 처음 몇개의 회사에서 쌓은 경험이 나중 인터뷰에 큰 도움을 주었습니다. 


'학습자의 태도'는 기술 면접 현장에서 최선의 결과를 얻어내는 데에도 효과적입니다. 나중에 좀더 자세히 쓰겠지만, IT 회사의 기술 면접은 알고리즘 / 시스템 디자인 등의 문제를 가지고 구직자의 문제 해결력을 평가하는 과정입니다. 이때 평가의 중심이 지식보다는 사고력, 결과보다는 해답에 이르는 과정이기에 지나치게 긴장을 하거나 사소한 실수에 좌절하는 것은 치명타가 됩니다. 이런 측면에서도 위에서 언급한대로 점점 난이도를 높여가며 각각의 인터뷰를 '배움의 기회'로 생각할 수 있었던 것이 저에게는 큰 도움이 되었습니다. 


요약하면 인터뷰 준비, 스케줄링, 그리고 현장에서까지 '학습자의 태도'를 가졌기에 과정에서 스트레스를 받기보다는 즐길 수 있었고, 또한 후회없이 실력을 발휘할 수 있었다고 생각합니다. 만약 처음부터 결과에 집착했다면 체계적인 인터뷰 스케줄을 짜는 것도, 또한 현장에서 마음편히 인터뷰에 임하는 것도 힘들었을 것이라고 생각합니다.


Be Proactive, not Passive


어떤 의미에서, 구직 과정은 지원자와 조직간의 긴 '헙상'입니다. 대부분의 경우 지원자가 조직에 지원하는 것으로 프로세스가 시작되기에, 이 과정에서 지원자는 조직이 부과하는 여러가지 Rule을 맞닥뜨리게 됩니다. 인터뷰 과정에서 중요했다고 생각되는 또 하나의 태도는 이처럼 주어진 Rule을 따르기 보다는 최대한 상황을 자신에게 유리하게 끌어가려고 노력했던 점입니다. 구체적인 설명은 저의 인터뷰 과정에서 생긴 에피소드를 소개하는 것으로 대신할까 합니다.


Google의 첫번째 전화인터뷰에서 있었던 일입니다. 다른 많은 회사들처럼 Google은 온라인 문서 공유 시스템을 사용하여 코딩 인터뷰를 진행합니다. 인터뷰 시작과 함께 사용할 언어를 정하는데, 인터뷰어가 대뜸 C를 사용하라고 했습니다. 저는 오래전에 C프로그래머로 일한 경력이 있지만, 대학원에서는 주로 Ruby / Python / R등의 스크립팅 언어를 사용해 왔고, 시간안에 문제를 해결해야 하는 인터뷰의 특성상 손에 익지도 않은 C코드를 짜는 것이 불리한 조건이라는 것은 자명했습니다. 이 상황에서 그냥 인터뷰가 시킨대로 하는 방법도 있었지만, 저는 인터뷰시 사용할 언어가 대부분의 경우 flexible하다는 것을 알았기에, Python으로 하겠다고 버텨서 인터뷰어를 다시 배정받을 수 있었습니다. 결국 두번째 인터뷰어와의 전화 면접을 무사히 통과할 수 있었습니다. 


또한, 대부분의 경우 언터뷰어와의 소통은 주어진 인터뷰 시간의 범위내에서 이루어지는 것이 보통입니다. 많은 경우 리쿠르터는 인터뷰 이전 / 이후에 인터뷰어의 이름 혹은 연락처를 알려주지 않으며, 또한 어떤 회사는 이를 정책화하기도 합니다. 하지만, 대부분의 경우 인터뷰어에게 직접 물어보면 연락처를 얻을 수 있습니다. 그리고 저는 인터뷰 내용에서 보충할 내용이 있는 경우 가능한 시속하게 Follow-up메일을 보냈습니다. 전화 면접시 시간내에 코딩을 끝내지 못한 경우가 있었지만, 인터뷰 직후 5분안에 이를 끝내서 바로 메일을 보냈고, 즉시 인터뷰어의 고맙다는 답장을 받았습니다. 

만약 위 상황에서 제가 저에게 부과된 '규칙'에 순응했다면 아마 다음 단계에 가보지도 못하고 탈락했을 겁니다. 이밖에도 저는 인터뷰가 끝난 후에 채용 담당 매니저와 추가 면담 시간을 요청하여 조금 더 필요한 대화를 나눌 수 있었고, 또한 점심 인터뷰 장소가 어수선한 경우 좀더 조용한 곳으로 옮겨달라는 요청을 했습니다. 요약하면 주어진 상황에서 최선을 다하되, 회사에서 정해주는 여러가지를 그대로 수용하기보다는 자신에게 필요한 것을 그때그때 요구하는 자세가 필요합니다. 


Epilogue


이번 글에서는 미국 IT회사 기술 면접을 중심으로, 구직에 임하는 태도에 대해 적어보았습니다. 전화에서 방문 인터뷰까지 두달 가량을 보내었지만, 대표적인 IT회사를 방문하여 이야기를 듣고 제가 기여할 수 있는 점에 대해 생각해볼 수 있었던 점은 큰 수확이었습니다. 그동안 상대적으로 소홀히해왔던 코딩 / 알고리즘 관련 스킬을 면마할 수 있었던 점은 보너스라고나 할까요. 


예전에 유학 준비기에도 썼지만, 유학이든 구직이든 당장의 보상에만 집착하기보다는 장기적인 관점에서 '나에게 어울리는 선택'을 하는 것이 중요하다고 생각합니다. 우선 스스로 왜 그 포지션을 원하고, 어떻게 잘 할 수 있을지를 생각해본 후에야, 면접관에게 이점을 납득시킬 수 있을 겁니다. 주어진 기술적 문제를 잘 푸는것도 중요하지만, 학교든 기업이든 자신의 조직 및 관련분야에 열정을 가진 사람을 뽑기를 원하니까요.


p.s. 다음번에는 면접에 관한 좀더 구체적인 Tip 및 준비방법을 올릴 생각입니다. 그전에라도 궁금한 점이 있으시면 댓글로 알려주세요 ;)

 최근 몇주간 첫 Job Talk 및 on-site인터뷰가 있었습니다. 바쁜 일정이지만 그동안의 노력이 뭔가 구체적인 형태로 나타나는 것을 보며 보람을 느낍니다. 계속되는 인터뷰도 결과에 연연하기보다 'Beginner's Mind'를 갖고 배우는 자세로 임하고 있습니다. 오늘은 인터뷰를 다니며 배운 점을 정리해볼까 합니다. 

Job Talk
교수 및 리서치 랩의 포지션에 지원하면 지금까지 자신의 연구 결과를 정리하여 발표하는 Job Talk을 하게됩니다. 해당 기관의 모든 관계자가 다 참석하여 지원자의 연구성과 및 전달력 등을 평가하고, 날카로운 질문도 많이 나오기 때문에 중요한 자리입니다. 컨퍼런스 발표의 2배 정도의 (한시간 가량) 길이에 청중들의 배경도 훨씬 다양하기에 준비하기기 만만치 않습니다.

저의  Job Talk은 IBM의 HCI / Social Computing Group에서 있었는데, 검색 분야의 연구를 어떻게 HCI 및 RecSys 분야의 사람들에게 전달할 수 있느냐가 관건이었습니다. 처음에는 저의 박사 논문 주제 및 인턴 프로젝트를 나열하여 슬라이드를 만들었지만, Practice Talk을 거치며 구성이 산만하다는 지적을 받았습니다. 수정을 거듭하다가 결국은 전체 연구주제를 Rich User Modeling및 Rich User Interaction이라는 두가지 줄기로 정리하여 엮을 수 있었습니다. 

비록 예상보다 준비 시간이 많이 걸리긴 했지만, 지금까지의 연구를 종합해볼 수 있는 좋은 기회었습니다. 발표에 사용된 슬라이드는 여기서 보실 수 있습니다. 며칠안에 제가 녹화한 비디오도 올릴 생각입니다.

On-site Interview
지난주에는 제품 검색을 주로 하는 회사의 On-site면접에 다녀왔습니다. 저의 최근 논문이 구조화된 문서의 검색을 다루고 있고, 또한 제품검색과 같이 메타데이터가 풍부한 경우 필터링 / 추천 및 다양한 인터렉션 방법이 사용될 수 있기에, 제게는 웹검색 만큼이나 흥미있는 문제입니다. 

면접 준비는 1) 리서치 관련 질문 2) 프로그래밍/개발 관련 질문의 두가지로 나뉘는데, 우선 첫번째 유형의 질문을 위해 제품 검색과 관련이 깊은 여러가지 논문 및 관련자료를 읽으며 배경지식을 갖추고, 회사 서비스를 사용해보며 문제 및 개선점을 도출해 보았습니다. 이런 준비를 하다보니 회사에 대해서도 좀더 잘 이해하게 되고, 제가 어떤 일을 할 수 있을지에 대해서도 좀더 감이 생겼습니다.

프로그래밍 인터뷰는 일단 유명한 책을 몇권 읽고, 실제 인터뷰 문제가 업데이트되는 웹사이트의 연습문제를 계속 풀어보았습니다. 사실 연구주제와 동떨어진 시스템 및 효율성과 관련된 이슈에 대해 많이 공부하지 못했던 것이 사실인데, 이번 언터뷰 준비가 좋은 계기가 되었습니다. 잘 기억나지도 않는 알고리즘 이름을 떠올려가며 문제를 푸는 것이 처음에는 쉽지 않았는데, 나중에는 점점 재미있어졌습니다. 

어느정도 준비를 한 덕인지 막상 회사에 가서는 편한 마음으로 인터뷰에 임할 수 있었습니다. 인터뷰 준비를 하면서 연구자가 아닌 현업 종사자의 관점에서 생각하려고 노력했지만, 역시 검색팀의 사람들과 이야기하다보니 배울 점이 많았습니다. 문제는 체력이었는데, 하루 7시간동안 7번의 인터뷰를 하다보니 나중에는 목소리가 제대로 나오지 않았습니다. 

마치며
구직을 위한 인터뷰라, 듣기만 해도 긴장이 느껴지는 말입니다. 실제로 해보니 물론 만만치는 않지만, 평소에 접하기 힘들었던 분야를 공부하는 준비과정도 보람이 있었고, 필요한 준비를 마친 이후에 막상 현장에서는 즐겁게 인터뷰에 임하는 자신을 발견할 수 있었습니다. 
 
인터뷰 준비 관련 자료
Presentation Zen : 읽다보면 철학책인가 햇갈릴 때도 있지만, (특히 스티브 잡스 스타일의 간결한) 프리젠테이션 준비를 위해서는 최고의 책인 것 같습니다. 동명의 블로그도 있습니다.
The Algorithm Design Manual
 : 알고리즘 관련 지식을 리프레시하기 위해 보았는데, CLRS만 보셨던 분들께는 청량제외 같은 책입니다. The Joy of Algorithm이라는 별칭이 있더군요. 
 http://www.careercup.com/ : 구글 / MS 등의 회사에서 실제 면접때 사용된 문제가 계속 올라옵니다. 여기서 나온 책도 많이 읽히는 교재입니다. 
 


포스팅 말미에, 최근에 올리지 못했던 주간 반성 및 계획을 씁니다. 이게 무슨 소리인가 하시는 분들은 예전 포스팅을 참조하세요 ;)

반성 및 계획
지난 3주를 돌이켜보면, 대체로 생산적인 시간을 보냈지만 역시 큰 일을 치른 후에 긴장이 풀어지면서 좋지 못한 결과가 나오는 것을 보았습니다. 긴장이 될수록 더 강한 자제력을 발휘하여 더 좋은 결과를 가져오지만, 사람인 이상 이를 계속할수는 없을 것입니다. 긴장이 풀릴만할 때 아예 쉬던지, 아니면 마음을 다잡고 다시 시작해야 하는데 두가지 다 못했던 경우가 2주 연속 나왔습니다.  지난번에 트레킹 자체만으로 2월의 성과가 좋았음을 언급했는데, 이번에는 결과적으로 다시 평균이 떨어졌습니다. 긴장과 이완의 리듬을 자연스럽게 타도록 노력해야 할 것 같습니다. 


읽고 배운 것들
최근에 SNS를 통해 내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우라는 발표자료를 접하신 분이 많으실 겁니다. 저도 읽으며 공감하는 구절이 많았습니다. 간단히 요약하면: 첫 논문을 최대한 빨리 써라. (200% 공감!) / 일 순서를 바꾸어 효과적인 멀티태스킹을 해라 / 평소에 (출퇴근 / 일요일 밤) 생각을 많이해두면 자리에 앉아서 바로 일을 시작할 수 있다. / 협업으로 후배 & 주변사람들을 챙기고 키워라.

'유학생활' 카테고리의 다른 글

미국 IT회사 면접기 (1) -- Winning Attitude  (4) 2012.04.30
2012년 새해 인사  (4) 2012.01.03
변장한 행운  (9) 2011.12.15

Self-Tracking 두달째, 눈에 보이는 성과

Journal : 2012. 2. 28. 12:48   By LiFiDeA
연초에 시작한 삶의 행복도 측정 실험이 별써 8주, 두달째를 맞이했습니다. 오늘은 그간의 결과를 돌이켜보고 앞으로를 계획하고자 합니다. 

전체 결과
우선, 1~2월의 주요 지표에 대한 월간/주간 수치를 알아봅시다. 우선, 아래 표는 지난 두달간의 주간 / 월간 결과를 요약합니다. 2월의 기상시간이 많이 늦어졌지만, 저녁 시간대를 위주로 만족도가 전반적으로 개선된 것을 볼 수 있습니다. 결론적으로 2월의 평균 행복도는 전달에 비해 눈에띄게 올라간 것으로 나타났습니다. 결정적으로, 1월에 가장 큰 문제였던 저녁시간 활용을 많은 부분 해결했습니다. 

시간대별 분석
일간 만족도를 시간대별로 나누어 살펴봅시다. 아래 차트는 일간 평균 만족도의 변화추이를 오전, 오후, 밤으로 나누어 보여주는데, 비슷한 수준을 유지하는 오전에 비해 오후 및 밤 시간의 만족도가 현격히 증가했음을 보여줍니다. 하지만, 여전히 밤시간의 마족도는 오전/오후에 비해 낮습니다.



기상시간의 영향
또한 위 차트는 1월에비해 2월의 기상시간(파란선)이 늦어지고 수면시간(빨간선)이 늘어난 것을 알려줍니다. 아래 Scatterplot은 기상시간이 늦어지는 것이 아침시간의 만족도에 부정적인 영향을 끼침을 알려줍니다. (Pearson Correlation: -0.41). 



장소별 분석
마지막으로 하루를 보낸 장소가 만족도에 미치는 영향을 살펴봅시다. 아래 표는 장소별 일간 만족도의 분포 및 평균을 보여줍니다. 컨퍼런스(WSDM)에서 보낸 시간을 가장 만족스럽게, 학교에 (Amherst, Stata) 갔을 떄가 집에 있을때에 비해 더 만족스러웠더 것을 확인할 수 있습니다.
 

요약 & 계획
지난 2월을 돌이켜보면, 밤에도 일을 해야했던 기억이 많습니다. 무언가 여가 선용의 방식이 개선되었다기보다는, 장시간 일을 해야했거나 컨퍼런스에서 늦게까지 시간을 보낸 것이 평가치에 영향을 끼친것이 아닌가 합니다. 하지만, 보스턴의 집에서 시간을 보낸 5주와 7주의 결과가 평균 3.5~3.6으로 좋았던 것을 고려하면 단순히 환경 변화의 문제는 아니었습니다. 

만족도 트레킹을 시작한지 두달째, 트레킹 이외에 다른 특별한 조치를 취한 것은 아니지만, 수치상으로도 그리고 주관적인 느낌으로도 눈에 띄게 삶의 만족도가 높아진 느낌입니다. 그 이유를 생각해보면 트레킹 이후 자신의 상태에 대한 자각(awareness)가 높아진 것이 원인이 아닐까 생각해 봅니다. 말하자면, 스스로의 상태를 적절히 판단하여 이에 맞는 조치를 취하게끔 되었다는 겁니다. 

아래 차트는 위에서부터 지난 두달간의 기상 및 수면시간(각각 파란선, 빨간선) 그리고 아침, 저녁, 일간평균 만족도의 추이(노란/녹색/파란선)를 나타냅니다. 1월에 거의 한주간 저녁시간의 만족도가 낮았던 적이 있었던데 비해 2월은 며칠 바닥으로 떨어졌던 적이 있지만, 그 다음날 바로 회복하는것을 볼 수 있습니다. 


마치며
살아가다 보면 주변 환경 혹은 내적인 이유로 종종 자신의 모습을 잃고 흔들리게 됩니다. 하지만, 두달간의 트레킹을 통해 자신의 이상 징후를 감지하고 문제가 악화되기 전에 바로잡는 능력이 조금을 키워지지 않았나 합니다. 결과적으로는, 어떤 상황에 놓여도 쉡게 흔들리지 않는다는 자신감이 생겼습니다. 

학점으로 따지면 B+였던 월간 행복도를 A-까지 올린 2월은 만족스러운 달이었습니다. 3월부터는 본격적인 인터뷰 시즌입니다. 스트레스와 불규칙한 일정이 예상되지만, 트레킹을 통해 얻은 교훈을 기억한다면 큰 흔들림없이 보낼 수 있지 않을까 합니다. 

최근에 산업체 연구소에 지원을 시작했습니다. 지원하는 회사 중 대형 전자상거래 업체가 있는 관계로 '추천 시스템(Recommendation System -- 이하 RecSys)'에 관심을 가지게 되었습니다. 추천 시스템이라는 분야 및 RecSys라는 컨퍼런스는 알고 있었지만, 좀더 자세히 들여다보면서 검색 분야와 재미있는 차이 및 연관성을 발견할 수 있었습니다. 오늘은 검색의 사촌(?)이라고 할 수 있는 RecSys라는 분야에 대해 소개해볼까 합니다.

추천 시스템 개관

우선 추천 시스템 및 연구의 흐름을 살펴봅시다. 넷플릭스 시스템이 사용자에게 다음에 볼 영화를 추천하는 것, 혹은 아마존이 초기화면 및 상품 페이지에 'You might be interested…'라는 식으로 구매를 유도하는  것이 추천 시스템의 대표적인 사례입니다. 더 자세한 소개는 위키피디아 아티클을 참고합시다.

최근에 읽은 Recommender Systems: An Introduction이라는 책에는 추천 시스템 연구에 대한 최근 동향이 잘 소개되어 있습니다. 이책에 따르면, 사용자 집단의 품목 선호도를 바탕으로 사용자가 아직 경험하지 못한 품목을 추천하는 문제에서 추천 분야의 연구가 시작되었다고 합니다. 사용자 집단에 대한 정보를 개별 사용자의 품목 추천을 위해 사용한다는 의미에서 이를 Collaborative Filtering이라고 통칭합니다. 

Collaborative Filtering은 결국 User-Item Matrix에서 아직 관찰되지 않은 값은 예측하는 문제로 귀결되는데, 사용자 혹은 항목간의 Similarity를 기반으로 예측하는 Memory-based Approach와 Matrix 전체를 대상으로 예측을 위한 알고리즘을 적용하는 Model-based Approach가 있습니다. Memory-based Approach가 복잡성이나 효율면에서 우위를 갖지만, Model-based Approach가 적은 데이터에서 더 잘 동작하며, 전반적으로 더 나은 성능을 내는 것으로 알려져 있습니다.

전통적인 검색 모델에서는 Query와 문서의 유사도를 바탕으로 문서를 랭킹하기에, 여기까지는 검색과 추천이 상당히 다른 이야기입니다. 하지만 추천을 하기에 충분한 양의 선호도 및 기타 정보가 존재하지 않는 경우, 사용자의 프로파일과의 매칭을 바탕으로 추천 결과를 생성하는데, 이를 Content-based Approach라고 부릅니다. 이 경우 매칭을 위해 TF-IDF, 혹은 이와 유사항 Metric을 사용하기 떄문에 결국은 사용자의 프로파일이 질의어가 되는 검색이라고 볼 수도 있습니다. 

이외에도 다양한 추천 기법이 존재하는데, 예컨데 디지털 카메라 선택과 같이 특정 도메인의 지식이 필요한 경우, 이를 직접 모델링하는 (예를들어 가격에 민감한 사용자에게 Low-pixel 카메라를 추천) Knowledge-based Approach도 눈여겨볼만 합니다. 최근에는 위에서 설명한 여러 기법을 결합하여 성능을 향상시키는 Hybrid Approach가 주로 사용되는데, 이는 검색 Feature를 기계학습을 통해 결합하는 Learning-to-Rank기법과 유사합니다. 
 

검색 vs. 추천?

이처럼 추천과 검색은 비슷하면서도 다른 문제입니다. 검색에서는 질의어와 품목(주로 문서)를, 추천에서는 사용자와 품목(주로 상품)을 매칭합니다. 검색이 사용자가 입력한 질의에 대한 응답으로 이에 적합한 문서를 찾는 반면, 추천은 사용자의 선호도 정보를 바탕으로 (굳이 사용자의 요청이 없이도) 품목을 추천하여 사용자의 의사결정을 돕는 것을 목표로 합니다. 검색과 추천 리서치 커뮤니티의 주요 컨퍼런스 역시 전혀 다릅니다. 

하지만, 검색과 추천이라는 전통적인 사고의 틀을 조금만 벗어나면 이 둘의 유사성이 눈에 들어옵니다. 우선 검색과 추천 둘다 대상은 다르지만 (Query-Item / User-Item) 유사도 분석을 필요로 하는 매칭의 문제입니다. 또한 개인화 검색에서는 사용자의 선호도를 직접 모델링하니, 추천과 검색의 Hybrid라고 볼 수 있습니다. 반면에, 많은 추천 시스템에서 키워드 검색을 함께 제공하고 있습니다. 아래 표는 검색과 추천의 유사점과 차이점을 요약합니다. 


검색 + 추천

여기까지 읽으신 분이라면 어느정도 감을 잡으셨겠지만, 검색과 추천은 목표에 있어서나 기법상으로나 연관성이 많은 분야입니다. 위에서 언급한 Content-based Recommendation이나 Personalized Search같은 경우에는 이미 검색과 추천의 구분이 별 의미가 없습니다.

굳이 나누자면, 사용자에 대해 별 정보가 없고 사용자의 정보욕구가 질의어를 통해 잘 표현되는 경우 검색 기법이, 사용자에 대한 정보가 많이 존재하여 사용자의 정보욕구에 대한 좀더 정확한 예측이 가능할수록 추천 기법이 유용하다고 볼 수 있습니다. 아래 다이어그램은 어떤 상황에서 검색과 추천 기법이 적용가능한지를 나타냅니다.


시스템 관점에서는 이렇게 검색과 추천을 구분할 수 있습니다만, 사용자의 입장에서는 시스템이 자신이 찾는 정보를 보여주는 것과 알아서 자신에게 정보를 보내주는 것이 둘 다 중요할 것입니다. 따라서, 제대로 된 서비스를 위해서는 검색과 추천 기능이 모두 필요할 텐데, 여기서 중요한 것이 검색과 추천 기능의 통합입니다. 

여기서 통합은 단순히 두 기능을 동시에 제공하는 것이 아니라, 두 기능의 동작을 유기적으로 결합하는 것을 뜻합니다. 예컨데, 사용자가 추천 알고리즘의 결과에서 어떤 항목을 선택했다면, 이를 검색 결과에도 반영하고, 반면에 검색 질의어 및 선택결과가 추천 결과에도 반영되는 것입니다. 검색을 검색으로, 추천을 추천으로 바라보는 기존 시각으로는 이렇게 검색과 추천을 아우르는 사용자 경험을 제공할 수 없을 것입니다.



마치며 & 관련자료

오늘은 검색과 사촌간이라고 할 수 있는 추천 시스템 연구를 검색과의 비교를 통해 알아보았습니다. 궁극적으로는 사용자와 시스템의 모든 인터렉션을 바탕으로 프로파일을 구성하고, Siri와 같은 사용자에게 친화적인 인터페이스를 통해 개인화된 서비스를 제공하는 것이 검색 및 추천 연구의 비전일 것입니다. 위에서 언급한대로, 이런 비전을 현실화하기 위해서는 여러 분야로 파펀화된 연구성과를 융합해야 할 것입니다.

RecSys 역시 검색처럼 상업 애플리케이션이 활발한 분야라 관련 Tutorial이나 Survey가 많습니다.  더 자세한 소개는 위에 언급한 책 및 다음에 소개하는 주요 논문을 참고하시기 바랍니다. 

  • Evaluating collaborative filtering recommender systems
    Beyond Algorithms: An HCI Perspective on Recommender Systems
    Collaborative Prediction and Ranking with Non-Random Missing Data

p.s. 강민석( @minsuk1015 )님께서 CACM에 나온 관련기사를 추천해 주셨습니다. 

오랜만의 책소개입니다. 오늘은 "How to Measure Anything"이라는 제목의 (실용서를 가장한) 통계학 책입니다. 물론 '측정'에 관심있는 분들에게는 실용서가 되겠지만, 저는 통계학 교과서보다 통계 이론의 요점을 더 명쾌하게 전달하는데 가장 높은 점수를 주고 싶습니다. 

이 책은 제목 그대로 '모든 것은 측정할 수 있다'는 명제에서 출발합니다. 저자의 핵심 주장은 결국 측정이란 어떤 종류의 의사결정을 뒷받침하기 위한 수단이며, 어떤 종류의 측정이건 의사결정의 불확실성을 낮춰줄 수 있다면 유효하다는 것입니다. 예컨데 인간의 지능을 정확히 측정하기란 불가능에 가깝겠지만, 두 사람중 누구를 채용할 것인가를 결정하는 데에 필요한 정보를 얻는 것을 훨씬 쉽다는 것입니다. 이 책에서 제시하는 정의를 몇가지 살펴봅시다.

Measurement : 
  A quantitatively expressed reduction of uncertainty based on one or more observations.

Uncertainty :
  The lack of complete certainty; the existence of more than one possibility

Risk :
  A state of uncertainty where some of the possibilities involve undesirable outcome.

이를 바탕으로, 이 책은 모든 종류의 측정 문제에 적용할 수 있는 5단계 지침을 제공합니다. 우선 의사결정 및 측정 대상을 명확히 하고, 현재 지식 수준을 파악한 후, 의사결정을 위해 추가적인 정보가 얼마나 필요한지 추정합니다. 마지막으로 적절한 측정 수단을 사용하여 정보를 얻고 결정을 내리는 것입니다. 

  • Define a decision problem and relevant uncertainties
    • Ask first : 'What is your dilemma?' instead of 'How do we measure X?'
  • Determine what you know now
    • Describe your uncertainty in terms of ranges and probs.
    • Assess the risk involved in the decision
  • Compute the value of additional information
    • How much of risk can it reduce?
  • Apply the relevant measurement instrument(s) to high-value measurements
    • Until the economically justifiable amount of uncertain is removed
  • Make a decision and act on it
    • Track results and return to step 1

이렇게 나열해보면 '코끼리 냉장고 넣기'처럼 자명해 보이지만, 대부분의 경우 어떤 문제를 풀기 위해 어떤 측정값이 얼마나 많이 필요한지 생각하지 않고 무작정 측정에 들어가는 경우가 많기에, 이 책의 조언은 유의미합니다.

이 책에서는 이밖에도 통계에 관한 여러 팁을 제공합니다. 예컨데, Rule of Five는 모집단의 크기에 관계없이 5개의 측정값만 있다면 집단의 중간값(median)의 범위를 (측정값의 최소 및 최대값 사이) 93%의 정확도로 예측할 수 있다는 것입니다. 또한 모집단 전체 크기를 측정할 수 있는 Catch-recatch, 모집단내 측정 부분집합의 비율을 측정하는 Population proportion sampling등의 방법도 소개됩니다. 

측정되지 않는 것은 개선할 수 없다는 데밍의 말을 인용하지 않더라도, 데이터에 근거한 의사결정은 비즈니스 혹은 검색, 추천 등 인공지능 시스템 설계에 핵심적인 역할을 합니다. 제가 최근에 시작한 Self-tracking역시 삶의 만족도를 일종의 Measurement Problem으로 접근하는 시도입니다. 

7주차 반성 및 계획
앞으로 주간 반성은 독립된 포스팅으로보다는 다른 포스팅에 뭍어 올리려 합니다 ;-) 이번주는 WSDM에서 돌아온 직후 월요일에 SIGIR 논문 마감으로 (전례없이) 밤을 새야했고, 그 이후는 시차 적응 및 인터뷰 준비로 시간을 보냈습니다. 주 막바지에 약간의 오점(?)을 남기기는 했지만, 전체적으로 무난히 보낸 한주였습니다. 



이번주 배우고 느낀점은 위 서평으로 대신할까 합니다.^^