인공지능 in 네부캠 AI 4기/추천시스템 8

Deep Learning 1

추천시스템에서는 딥러닝의 모델이 사실 많이 쓰이지 않는다. 왜냐하면 추천시스템에서 요구되는 성능은 일반 머신러닝과 딥러닝 모델 사이에서 큰 차이를 보이지 않는 한편, 딥러닝 모델은 많이 무겁기 때문이다. 또한 현업에서 온라인 서빙을 하면서 대용량 트래픽을 다루는 경우가 많은데 이 경우 모델이 빠른 속도로 작동해주는 것이 더 중요하기에 딥러닝보다는 오히려 고전적인 모델이 많이 쓰이게 된다. 그럼에도 딥러닝을 활용하고자 하는 움직임은 추천시스템에도 지속적으로 있는 편이기에, 그러한 모델 4가지를 살펴볼 것이다. 딥러닝 모델은 기본적으로 MBCF에 속한다고 봐도 무방하다. 그럼 딥러닝이 추천시스템에서 활용되는 이유가 무엇일까? 가장 쉬운 대답은 성능이 좋으니까. 성능이 좋다는 것은 무엇일까? 딥러닝 모델은 활..

Item2Vec & ANN

딥러닝 관련한 추천 모델을 배우기에 앞서 사용되는 두 방법론을 먼저 살펴보자. 여기에서 나오는 것은 그 자체로 추천시스템 모델이라고 하기는 좀 그렇고, 이를 위해 사용되는 기법들이라고 보면 될 듯하다. 먼저 알아볼 것은 Item2Vec. 이는 NLP분야에서 연구되던 Word2Vec에서 유래한 방법론으로, 임베딩에 대한 기법이다. NLP분야에 대해 조금 상세하게 설명할 것인데, 내가 여태 공부한 것들을 추가적으로 정리하기 때문에 그렇다. Word2Vec 그렇다면 Word2Vec이 무엇인지 아는 것이 선행되어야 하겠지. 임베딩이란? 주어진 데이터를 낮은 차원의 벡터로 만들어서 표현하는 기법이다. [김, 이, 박, 최, 황]이라는 데이터가 있다. 우리는 이를 어떻게 단순하게 표현할 수 있을까? 사실 생각하기 ..

모델 기반 협업 필터링

Model-Based Collaborative Filtering 저번에는 협업 필터링이 무엇인지, 그리고 가장 기본이 되는 이웃 기반 협업 필터링을 배웠다. 협업 필터링은 기본적으로 유저-아이템 행렬의 빈칸을 채우는 예측 문제이며, 이 행렬의 특성에 의해 두 가지 문제가 발생한다. 첫번째는 확장성Scalability(저번에는 나는 규모 확장성이라 번역했다). 유저와 아이템의 규모가 클수록 행렬의 크기가 증가하기 때문에 모델의 연산 시간이 너무 오래 걸리게 된다. 그리고 희소성. 데이터가 부족할 때는 유사도 계산이 부정확하기에 추천 성능이 보장되지 않는다. 또 데이터가 없는 신규 유저가 나타날 경우 그에 대한 추천을 하는 것이 불가능한데, 이를 cold start라고 한다. 추천을 할 기반이 아예 없는 것..

협업 필터링 개요

Collaborative Filtering 줄여서 CF! 현업에서 굉장히 많이 쓰이는 기본적인 개념이며 그만큼 종류도 굉장히 다양하다. 협업 필터링은 '많은 유저들로부터 얻은 기호 정보'를 이용해 유저의 관심사를 예측하는 방법이다. 왜 협업(collaborative)인가? 집단, 다수의 의견을 활용하면서 이러한 전체적인 데이터가 많이 축적될수록 협업의 효과가 커지며 추천이 정확해질 것이란 가정을 두고, 이를 토대로 예측을 하기 때문이다. 이전 예시로 보자면 많은 사람들이 기저귀를 산 후에 맥주를 많이 샀다는 데이터를 토대로 기저귀를 사는 사람은 맥주에 대해 높은 평점을 부여할 것이란 예측을 할 수 있는 것이다. 이전에 추천시스템에서 다루는 문제가 Top k개를 줄세우고 그것을 추천하는 랭킹 문제와, 특정..

컨텐츠 기반 추천

컨텐츠 기반 추천 이제 또 다른 추천 방식인 TF-IDF를 보자. 이를 보기 위해 잠시 컨텐츠 기반 추천 방식이 무엇인지 살펴볼 필요가 있다. 많은 사람에게 인기가 있는 아이템을 추천하기 위해 인기도를 측정하는 인기도 기반 추천 방식이 아니라 특정 유저마다 과거에 선호한 아이템과 비슷한 것들을 추천하는 방식. 즉 이 추천 방식은 유저 정보나, 유저와 아이템의 상호작용 정보 없이 한 타겟 유저가 접근한 아이템들의 정보만을 이용하는 방식이다! 보다시피 한 유저가 선호한 아이템들을 보아하니 빨간색을 좋아하고 있다. 그렇다면 우리는 그 유저에게 빨간색 물체를 추천할 수 있다는 것이다. 이러한 컨텐츠 기반 추천 방식은 간단한 장점을 가진다. 다른 유저의 데이터에 의존하지 않고 해당 유저에게 직접적으로 연결되는 추..

연관분석

연관분석 Association Rule Analysis, Association Rule Mining. 흔히 장바구니 분석, 서열 분석이라고도 부른다. 이것은 연속된 거래 속에서의 규칙을 발견하기 위해 적용한다. 유명한 사례로 기저귀를 사는 진열대 근처에 맥주를 비치하며 맥주에 대한 매출을 크게 늘린 마트가 있는데, 아버지들이 기저귀를 사면서 보이는 김에 맥주를 사는 그 연관성을 잘 파악한 것이다. 보다 정확하게 정의를 내리자면 주어진 거래(transaction) 데이터에 대해, 하나의 상품이 등장할 때 다른 상품이 같이 등장하는 규칙을 찾는 것이라고 할 수 있다. 위에서는 맥주와 기저귀가 연관되는 인과를 내가 제시했지만, 연관 규칙은 이런 인과관계가 아니라 상관성과 규칙을 찾는 것에 목적을 두고 있기에 ..

인기도 기반 추천

얼추 우리는 추천시스템이 무엇이고 목적이 무엇인지, 그리고 모델을 평가하는 지표도 간략하게 알아봤다. 이제는 추천시스템 중 가장 쉬운 방식인 인기도 기반 추천을 알아보자. 간단하게 생각하면 가장 잘 나가는, 대중성 있는 것을 추천하는 방식이면 얼추 될 것이다. 그래도 그 인기도가 무엇인지를 정의하는 방식에 따라 다양한 분기가 생길 수 있다. 인기도라는 것이 단순히 하나의 지표로 결정되지는 않을 것이다. 조회수 많은 것을 기반으로 둔다면? 뉴스거리를 추천하는데 좋은 시스템이 될 것이다. 또는 평균 평점이 좋은 것을 기반으로 둔다면? 맛집 추천에 적격인 인기도가 될 것이다. 바로 위에서 예시를 들었지만, 크게 두 가지 방향으로 인기도의 척도를 지정할 수 있다. Most Popular와 Highly Rated..

추천 시스템 Basic

추천시스템 추천 시스템은 말 그대로 추천을 하는 시스템이다. 샵이나 마켓, 또는 유투브나 웹툰 사이트를 보면 사용자(유저)에게 맞춰 상품(아이템)을 추천해주는데 이때 적용되는 것이라 바로 Recsys라고 할 수 있다. 사실 우리가 추천해주지 않더라도 사용자는 직접 검색을 통해 원하는 아이템을 소비할 수 있다. 사용자가 직접적으로 의도를 가지고 검색할 때, 서버에 데이터를 요청하는 행위 자체를 쿼리Query라고 부른다. 그리고 이러한 방식은 사용자가 아이템을 당겨서 가져오는 방식이라하여 Pull하는 방식이라고도 부른다. 우리에게 이쪽이 중요한 것은 아니다. 우리는 사용자가 원하는 것을, 혹은 인지하고 있지 않지만 관심이 갈 만한 것을 먼저 밀어서(Push) 제시하는 방법을 알고 싶은 것이다. 목적 우리는 ..