카테고리 없음

추천 시스템 입문 5~6장

도지선다형 2025. 5. 21. 21:38

 

MovieLens 데이터셋은 미네소타 대학의 그룹 렌즈 연구소가 구축한 영화 평가 데이터셋

 

 

여기서는 주로 다음 파일을 사용함.

 

데이터의 특징을 탐색적으로 조사하는 것을 탐색적 데이터 분석이라고 한다.

 

 

실무에서는 데이터를 샘플링하여 작은 데이터셋으로 빠르게 실험을 반복하고 좋아 보이는 알고리즘을 발견하면 데이터를 늘려 시험하는 방법을 많이 사용함.

 

 

평가 방법

Precision@K, Recall@K라는 순위 지표로 추천 알고리즘을 평가함.

Precision@K : 사용자에게 K개의 아이템을 추천했을 때 그중 실제로 선호하는 아이템의 비율이 얼마나 되는가에 관한 지표

Recall@K : 사용자에게 K개의 아이템을 추천했을 때 사용자가 선호하는 아이템 그룹 중 몇 개 맞았는가를 나타내는 비율

 

 

 

통일된 포맷을 활용한 계산

통일된 형식으로 기술하면 시스템에 삽입할 때 알고리즘을 교체하기 쉽고 예측 정확도를 평가하기도 쉽다.

 

 

 

 

무작위 추천

MovieLens의 평갓값은 0.5 ~ 5.0 이므로 0.5 ~ 5.0으로 우선 난수를 발생시키고 그것을 예측 평갓값으로 함.

학습용 데이터에 나타난 사용자와 아이템으로 사용자 X 아이템의 행렬을 만들고 각 셀에 난수를 저장

 

 

통계 정보나 특정 규칙에 기반한 추천

서비스의 데이터 통계 정보나 아이템 속성 정보에 기반해 나열하는 추천은 특정 사용자에게 읙존하지 않는 정보에 기반해 아이템을 나열하여추천하므로 기본적으로 개인화를 수행하지 않는 알고리즘

 

 데모그래픽 필터링 : 사용자의 나이나 성별, 거주지 등의 인구 통계학적 데이터에 기반해 아이템을 추천하는 것

어느정도 흥미가 있는 것을 추천할 가능성이 있지만 몇 가지 주의해야할 점이 존재한다.

 

1. 잘못된 정보가 입력될 수 있음.

2. 공평성 관점에서 데모그래픽 데이터를 사용할 때 주의해야함.

 

 

연관 규칙 : 대량의 구매 이력 데이터로부터 '아이템 A와 아이템 B는 동시에 구입하는 경우가 많다는 규칙을 발견

 

 

 

지지도 : 어떤 아이템이 전체 중에서 출현한 비율

확신도 : 아이템 A가 나타났을 때 아이템 B가 나타날 비율

이때, A를 조건부, B를 귀결부라고 한다.

 

리프트 값 : 아이템 A와 아이템 B의 출현이 어느 정도 상관관계를 갖는지 나타내는 것

리프트 값은 수학이나 정보 이론적으로도 재미있는 특성을 갖고 있는데 리프트값의 로그를 취하면 점별 상호정보량이라는 것

 

 

Apriori 알고리즘 : 모든 아이템의 조합을 계산하는 것이 아니라 지지도가 일정 이상인 아이템이나 아이템의 조합만 계산 대상으로 빠르게 계산.

 

추천 시스템 구축 시에는 그 임곗값이 중요한 파라미터

임곗값을 너무 높이면 일부 인기 아이템만 추천되며 반대ㅐ로 임곗값을 너무 낮추면 계산이 무거워지고 노이즈가 많은 다양한 아이템이 추천됨..

리프트값의 계산 정의에 대칭성이 있어 조건부와 귀결부를 뒤집어도 같은 값을 갖는다.

연관 규칙에서 제시되는 것은 어디까지나 상관 관계가 높은 조합이며 인과관계를 나타내는 것은 아니다.

연관 규칙에는 여러 파라미터가 잇으며 그 파라미터들을 조정함으로써 정확도를 높일 수 있다.

 

 

 

 

 

사용자-사용자 메모리 기반 방법의 협조 필터링을 사용하여 추천하는 방법

메모리 기반 방법에서는 추천 시스템이 사용될 때까지 시스템 내의 사용자 데이터를 축적하기만 하고 계산은 수행하지 않으며 추천하는 시점에 축적된 데이터 중 필요한 것을 모두 사용해서 예측 계산을 수행

 

우선 미리 얻은 사용자의 평갓값에 기반해 사용자 사이의 유사도를 계산

 

 

다음으로 피어슨 상관계수를 사용해 실제로 사용자 사이의 유사도를 산출

평갓값을 예측할 대상 사용자와 그 외 사용자의 유사도를 산출

 

 

테스트용 데이터에 존재하는 사용자와 영화의 조합에 대한 평갓값만 예측 계산해 RMSE를 통한 성능 평가만 수행

 

RMSE는 무작위 추천이나 인기순 추천보다 우수하고 테스트용 데이터의 평갓값을 보다 정확하게 예측한다.

 

 

회귀 문제에는 랜덤 포레스트를 많이  사용한다.

먼저 랜덤 포레스트 학습에 사용하는 사용자와 영화의 조합 및정답 데이터가 되는 각각의 평갓값을 얻는다.

또한 학습용 데이터에 의존하는 모든 사용자와 영화의 조합에 대한 평갓값 예측도 필요하므로 해당 데이터도 얻얻둔다.

다음으로 특징량을 작성

특징량을 작성했으므로 랜덤 포레스트를 사용해 학습

랜덤 포레스트가 학습되었다면 테스트용 데이터 안의 모든 조합에 대해 평갓값을 예측

RMSE 결과로부터 무작위 추천하거나 인기순으로 추천하는 것보다 테스트용 데이터에 대한 예측 평가가 정확하다는 것을 알 수 있다.

사용자-사용자 메모리 기반 방법의 협조 필터링에 비하면 성능이 다소 떨어진다..

 

 

 

실제 시스템과의 조합

 

배치 추천 : 모델 학습부터 예측까지의 처리를 정해ㅐ진 시각에 일괄적으로 수행하는 것

실시간 추천 : 사용자의 클릭 등을 트리거로 해 특징량 추출 및 업데이트를 실시간으로 수행하고 예측도 사용자 요청 시 실시간으로 수행하는 방식으로 추천하는 것

 

 

배치 추천과 실시간 추천은 서비스에서의 아이템, 사용자 정보 업데이트 요구 수준에 따라 구분

업데이트 요구 : 사용할 수 있게 된 시점부터 실제로 추천에 활용되기까지의 시간차가 얼마나 짧게 요구되는가를 의미

 

개요 추천 : 신규순이나 인기순으로 아이템을 표시하는 것

신규순 : 데이터베이스에 접근해 신규순으로 아이템을 정렬하는 쿼리를 실행하는 방법

 

연관 아이템 추천 : 방법 중 하나는 사전에 유사도를 계산하고 비슷한 아이템군을 데이터베이스에 저장해 결과를 반환하는 것

 

 

개인화 추천 : 배치 유형의 개인화 추천에서는 각 사용자별로 추천하는 아이템을 미리 계산해서 데이터베이스에 저장

 

 

 

 

 

벡터 기반 개인화는 머신러닝 방법을 활용해 아이템과 사용자의 특징을 벡터화해서 데이터베이스에 저장

 

 

사용자 벡터화 방법 : 사용자가 과거에 클릭한 각 아이템의 벡터 평균을 사용자의 벡터로 하는 것

 

 

다단계 추천

다단계 처리에서는 먼저 대략적으로 아이템 후보를 필터링한 뒤 아이템 후보 수가 줄어든 단계에서 사용자나 상황에 더 적합한 아이템을 높은 정확도의 모델로 엄선한다.

 

 

후보 선택 : 막대한 아이템으로부터 추천 후보가 될 아이템을 추출

스코어링 : 실제로 사용자에게 제시할 아이템을 선택하기 위해 아이템에 점수를 부여

재순위 : 재순위처리에서는 스코어링에서 선택된 아이템을 나열하도록 처리

 

근사 최근접 탐색 : 일부 정확성을 특성으로 하여 입력된 벡터에 가까운 벡터를 빠르게 찾아내는 방법

 

사용자 벡터만 일 단위로 생성하는 경우

사용자 벡터만 일 단위로 생성하는 경우 근사 최근접 탐색은 다음과 같이 활용

 

 

 

 

모델을 유지하고 일 단위로 벡터를 생성하는 경우

새로 사용할 수 있게 된 아이템과 사용자 벡터를 새롭게 생성해 추천에 활용하는 것

 

이 방법의 장점은 전체 인덱스를 붙이는 작업이 한 번에 오안료, 그 후 새로운 아이템의 인덱스만 붙이면 된다는 것이다.

 

 

 

 

로그 설계

클라이언트 사이드 로그 : 사용자 행동에 이르기까지의 경과나 결과를 기록하는 것이 주 목적

사용자 행동 : 클라이언트 사이드 로그에서 대표적인 것이 행동 로그, 행동 로그는 사용자가 서비스에서 한 행동을 기록한 로그

성능 : 사용자가 요청한 페이지가 실제로 완전히 표시될 때까지 걸리는 시간 또는 조작이 가능해질 ㄸ대까지의 시간을 나타냄

서버 사이드 로그 : 클라이언트 뒤쪽의 시스템 동작을 기록한 로그

성능 : 서버 사이드의 성능과 관련된 로그는 클라이언트로부터의 요청에 응답하는 데걸리는 시간을 기록

시스템 응답 : 클라이언트로부터의 요청 수나 응답 수 또는 정상 응답 비율을 기록

시스템 처리 정보 : 싯템 처리 경과나 상황을 기록

 

 

 

 

 

배치 추천

배치 추천의 일례로 대규모 뉴스 서비스에서 푸시 알림을 수행하는 실제 사례를 소개

후보 기사 선정 : 처리에서는 추천 후보가 되는 기사를 선택

모델링 : 처리에서는 사용자 특징과 기사 특징을 활용해 사용자가 푸시 기사를 열지, 안 열지 예측하는 모델을 구축

스코어링 : 처리에서는 학습이 완료된 모델에 사용자 특징량과 기사 특징량을  입력하고 각 사용자의 각 후보 기사에 대한 점수를 계산한 후 이 점수를 데이ㅣ터베이스에 저장

푸시 전송 : 처리ㅣ에서는 각 사용자에게 추천 기사를 전송

 

 

 

 

실시간 추천

사용자 요청에 따라 실시간으로 사용자의 흥미에 맞춰 추천을 수행하는 뉴스 전송 시스템의 예를 소개

후보 기사 선정에서는 해애동 로그나 기사 정보를 사용해 클릭률이 높은 기사를 미리 데이터베이스에 저장

모델링처리에서는 사용자의 과거 행동에서 사용자의 선호도를 학습

스코어링에서는 사용자 특징량과 기사 특징량을 데이터베이스에서 읽은 후 요청한 사용자에 대한 후보 기사의 점수를 산출

재순위 처리는 사용자가 과거에 명시적으로 수행한 피드백과 입고 시간에 대한 기사의 최신성을 고려해 기사를 나열

 

특징량 업데이트는 사용자가 기사를 클릭한 시점에 수시로 수행