앎을 경계하기

추천시스템

추천시스템의 개념과 기본 알고리즘의 개념

양갱맨 2022. 12. 18. 17:07

참고도서 : python을 이용한 개인화 추천 시스템 - 임일

 

추천 시스템(recommender system)이란?

> 사용자의 데이터를 바탕으로 사용자에게 필요한 정보를 제시하는 시스템.

"추천" 이라는 것은, 비즈니스 관점에서 고객들의 취향을 기준으로 비슷한 고개들끼리 나누고(segment),
각 집단에 맞는 제품이나 소비스를 골라주는 것이다.

집단의 규모를 굉장히 작게, 극단적으로 작게 하면 집단을 구성하는 사람이 1명이 된다.

이것이 개인화(personalization)다.


 

추천 시스템의 주요 알고리즘은 크게 몇 가지 분류로 나뉘고, 이것들이 발전해서 다양한 알고리즘이 파생된 형태라고 볼 수 있다.

가장 대표적인 알고리즘은 다음 세 가지다.

  • 협업 필터링 (collaborative filtering ; CF)
  • 내용 기반 필터링 (content-based filtering ; CB)
  • 지식 기반 필터링 (knowledge-based filtering ; KB)

여기 추가로, 딥러닝 알고리즘이 많이 적용되고있다. (역시, 딥러닝은 데이터활용분야에서 절대 빠지지 않는다.)

딥러닝과 다른 알고리즘을 섞어서 하이브리드로 사용하는 기술도 있다.


1. 협업 필터링 ( Collaborative Filtering ; CF)

쉽게 말하자면, 취향 비슷한 사람들끼리 상대방이 안 써본 거 추천해주는 방식.

1. 평가 패턴이 비슷한 유저들을 한 집단으로 묶는다.

2. 서로 접하지 않은 서비스, 제품을 제시한다.

CF는 호불호가 확실한 제품들을 추천할 때, 적용하기 적절하다.

CF 방식을 사용하려고 보니 이런 생각이 들 수 있다.

"리뷰가 없으면 어떡하지?"

이게 바로 CF의 한계점이다.

유저들의 리뷰데이터를 얻기 어렵다면 CF도 적용하기 힘들다.

그래도 CF를 써야한다면.. 간접적으로라도 유저의 취향을 알아내는 수 밖에.

검색 데이터, 장바구니 데이터를 수집해서 이 정보들을 분석하여 취향을 알아낸다.

이렇게 유저들이 본인의 관심사를 클릭해서 만들어낸 정보를 "클릭스트림 데이터"라고 한다.


2. 내용 기반 필터링 ( Content-Based Filtering ;  CB )

내용 기반 필터링은 제품의 내용을 기반으로 추천해주는 기술.

텍스트가 주 데이터인 경우에 적합하다.

한 줄로 표현하면, 핵심 키워드가 유사한 상품을 추천하는 것.

최근 주유소를 가면 휘발유가 리터당 1500원대였는데, 어제가보니 1400원대로 내려가 있어서

"기름값 하락" 에 대한 기사를 찾아봤다.

그랬더니, 옆 추천 기사에 "경기도 기름값 1300원대 주유소 등장....", "기름값 하락세 지속..." 등 기름값 하락과 관련된 기사들이 쭈르륵 나왔다.

만약 여기서 뜬금없이 "카타르 월드컵" 관련 기사가 나온다면?

기름값 관련 기사를 읽을 확률은 높지만, 월드컵 관련 기사를 읽을 확률을 굉장히 낮을 것이다.

이렇게 유저가 보는 내용의 핵심 키워드와 유사한 키워드를 가진 서비스를 제공하는 것이 CB다.


3. 지식 기반 필터링 ( Knowledge-Based Filtering ; KB )

지식 기반 필터링은 특정 분야의 전문가를 통해 해당 분야의 지식구조를 만들어 활용하는 방법이다.

CF, CB와 달리 유저가 "왜 그 제품을 좋아하는지" 에 대해 설명할 수 있는 방법이다.

예를 들어, 고객에게 "와인"을 추천하려고 한다.

그럼 가장 크게 레드와인, 화이트와인으로 분류하고

그 다음 와인의 산지, 당도 등 다양한 항목으로 분류될 것이다.

와인 전문가를 통해 와인 지식구조를 만들어

소비자가 관심있는 제품과 관련있는 제품들을 분류해놓은 지식구조 속에서 찾아 제시하는 방법이 KB다.

KB는 적용하려는 분야에 대한 전문가를 찾아야하고, 전문가의 능력도 각각 다르기 때문에, 전 분야에 대해서 적용하기 어렵다.


4. 딥러닝 ( Deep Learning )

딥러닝은 다양한 사용자와 제품의 feature를 입력 데이터로 사용하여, 선호도를 출력으로 얻는다.

수 많은 아이템들을 입력해서 예상선호도를 계산하여 높은 선호의 아이템을 추천한다.

딥러닝을 사용하면, 정말 다양한 분야에서 적용할 수 있다는 장점이 있지만

컨티뉴어스한 값으로 표현되는 상황에서는 다른 알고리즘과 성능이 크게 별 차이가 없어서

하이브리드 방식으로 많이 사용한다.

 

 

보통 추천 시스템을 만들 때, 한 가지만 사용하는게 아니라 2개 이상의 기술을 섞어서 구축한다고한다.

성능을 향상시켜 정확한 추천을 하는 것이 베스트이기 때문에 당연히 단일 기술만 사용하기 보다는 하이브리드로 사용하는 것이 적절하다.

그럼 어떤 기술들을 섞어서 사용하는 것이 좋을까?

이건 사용하는 데이터, 적용 산업 및 환경 등 다양한 조건에 따라 달라지기 때문에 Try-and-error가 필요하다.