본문 바로가기

book

추천 시스템 입문

추천시스템은 매우 오래된 키워드이고, 기본적으로 서비스 구성시에 고려하는 부분입니다.

겉모습은 추천시스템인지 모르고 사용하는 경우도 많고, 같은 추천시스템이라도 그 구성은 매우 차이가 많이 납니다.

요즘은 머신러닝, 딥러닝을 통한 다양한 추천 알고리즘을 구현할수 있습니다.

넷플렉스, 멜론, 쇼핑몰, 유트브 추천 알고리즘등  개인화된 정보를 가지고 조금더 편리한 서비스 및 매출, 구매유도를 하기 위해서 곳곳에 적용되는 사례는 이제 너무나 당연한 이야기가 되었습니다.

예전에는 추천이라는 주제는 대학교 연구과제로도 많이 연구한 학문분야 입니다.

검색엔진에서 "추천 알고리즘"을 검색해서 사용하기 보다, 기본에 충실한 추천 시스템을 구성해보려고 하고 

그 근간이 되는 원리를 학습하기에 좋은책으로 조금더 책의 내용을 살펴보려고 합니다.

 

■ 추천이 왜 중요할까?

· 조금 근본적이고 원칙적인 이야기 이기는 하지만, 추천이라는 키워드는 항상 서비스 측면에서 중요한 부분으로 여겨집니다.

저의 생각은 추천은 사람들의 시간을 줄여주는 의미가 있지 않나 생각이 듭니다. 지금 시점에 "유트브 맞춤 영상", "트위터 팔로우 추천", "서점에서 해당 책을 본 다른 추천" 이러한 기능은 실제 나와 성향이나, 필요하거나, 관심사가 비슷한 사람들이 했던 행동기반으로 다양한 정보가 제공되어 집니다.

· 추천을 구성하는 프로세스는 크게 3가지로 정의합니다.

1) 개요 추천 (개인화 없음) : 모든 사용자에게 동일한 정보를 제공하는 방식

2) 연관 아이템 추천 : 각 아이템 간에 유사도를 사용 

3) 개인화   

 

 

 

■ 추천시스템 알아가기

<검색엔진 vs 추천시스템>

· 검색엔진도 유사도 설정을 통해서 연관 아이템등을 제공하는 방식도 있다. 검색도 하나의 정보를 찾기위한 기술이고 두가지 항목에 대해서 비교한 표입니다. 비교표가 눈에 들어게 잘 되어 있습니다. 

<추천 시스템의 UI/UX는 어떻게 구성할까?>

· 기술적인 부분도 중요하지만, UX를 구성할때 어떻게 되어 하면 조금더 쉽게 개발한 추천정보를 제공할지에 대해서 설명하는 chapter가 있는 부분도 흥미로운 내용입니다. 구성을 하기 위해서 4가지 부류로 구분을 하여서 접근을 하라고 합니다.

1) 적합 아이템 발견 : "서울역 근처에 식사하는 식당 찾기"

2) 적합 아이템 나열 : "가능한 모든 서비스를 나열하는 방식"

3) 아이템 계열 소비 : "열람, 소비하는 동안 추천된 아이템 계열 전체에서 가치를 찾는 방식"

4) 서비스 내 체류 : "특별한 목적은 없는 경우"

 

많이 사용하고 있는 서비스 중에서 곳곳에 추천기능이 사용되는 화면 구성

 

추천을 제시하는 이유에 대한 예시

 

 

이렇게 구분된 사항만 보면 잘 파악하기기 힘들다. 책에서 안내하는 화면 예시를 보면 조금 더 이해하기가 쉽다.

그리고 이책은 비개발자분들이 추천관련된 사항을 개발자 조직과 의사소통을 원할하게 하기 위해서 관련 용어 및 개념을 잡는 것을 책의 중요한 관점으로 설명하고 있으니 전반적인 개념을 잡는 목적으로도 좋은 입문책인거 같다.

 

 

 

■ 추천 알고리즘에 대해서

· 크게 분류는 2가지로 구성이 됩니다. 내용기반 필터링은 우리가 기본적으로 생각하는 수집된 데이타를 기반으로 유사도를 계산해서 추천하는 알고리즘 입니다. 이때, 책이라면 아이템의 제목, 장르, 출판일등의 속성과 사용자의 과거 이력등의 프로필 정보등을 활용합니다.

메모리 기반은2가지 방식이으로 구성되어 있는데, 기준을 추천인과 비슷한 추천인을 찾는 방식, 다른 방식은 선호하는 아이템과 비슷한 아이템을 찾는 방식으로 구성되어 있어서, 추구하고 찾으려는 관점으로 접근하는 방법입니다. 모델 기반은 미리 데이터의 규칙성을 학습한 모델을 미리 만들어두어서 사용하는 방식입니다.

· 추천 알고리즘에 대해서 다양한게 존재하는데 이러한 알고리즘중에 10개 이상 실습을 하면서 동작원리를 파악합니다.

코드는 Python으로 작성되어 있습니다. 파이썬을 통해서 쉽게 설치가 가능한 다양한 라이브러리를 사용합니다. pandas, numpy, sklearn, implicit, xlearn등 다앙한 라이브러리를 이용합니다. 아마 보시면서 머신러닝책에서 소개되는 부분도 있고, 예전에 어디서 경험한 코드를 보실수도 있는데, 머신러닝을 통한 추천알고리즘에 대한 부분이고 이책에서는 조금 더 다양하게 추천이라는 영영에 다양한 내용으로 구성된 것을 확인하실수 있습니다. 

다양한 추천 알고리즘 항목

 

■ 실제 서비스에는 어떻게 배포를 할까?

· 가장 쉽게 설계 할수 있는 방법은 사용자별, 또는 그룹별로 추천된 정보를 batch성으로 DB에 넣어서 처리하는 방식이다. 

이렇게 구성이 되면 실시간성의 확보에 대한 고민을 할것이고, 배치 주기도 고민하게 되는것은 당연한 부분이라고 생각이 듭니다.

일반적인 DB방식

 

실시간성을 확보하며, 추천서비스를 하기 위한 구조

· 책의 후반부에는 이렇게 만든 추천알고리즘이 정상적인지 검증하는 "추천시스템 평가" 부분이 있습니다.

개발을 하고 테스트 케이스를 만들고 검증을 하는 것처럼, 작성한 추천 알고리즘의 결과가 의도한 대로 정상 처리가 되고 있는지 확인하는 절차 침 과정은 반드시 필요하다고 생각됩니다.

대표적인 평가 지표

추천 알고리즘에 대해서 설명 및 해당 알고리즘을 실제 서비스에 배포하기 위한 내용이 있는 부분, 추천 내용에 대한 검증기법등이 있는 부분은 책의 완성도를 높여주는 내용이라고 생각합니다. 이러한 부분은  운영하는 측면, 관리하는 측면에서 많은 도움 및 키워드들에 대해서 도움은 받을수 있는 부분입니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."