하고자 하는 것
콘텐츠 기반 필터링과 협업 필터링의 각 장점을 활용하여 나은 성능을 달성하는 새로운 필터링 접근법을 소개하고자 한다.
사용자 프로필과 사용자 평점(rating)에서 추출한 통합 정보를 기반으로 사용자 간의 유사도를 계산하는 기법들을 살펴본다.
새로운 접근법과 기존의 방법을 실험적으로 평가하고 비교한다.
내용
아이디어:
CBF, CF의 결합을 위해 클러스터링 알고리즘을 이용한 방법을 소개한다. 먼저 의미론적 콘텐츠 정보를 만들기 위해 사용자 프로필을 클러스터로 그룹화한다. 그런 다음 그러한 클러스터들을 아이템으로써 처리하여 추천을 위한 새로운 user-item 행렬을 만든다. 마지막으로 새롭게 만든 행렬을 기반으로 기존의 CF알고리즘을 적용하여 사용자에 대한 예측을 진행한다.
방법:
본 논문에서 제안한 방법은 사용자 프로필과 rating 에서 의미론적 내용을 통합하여 아래의 그림과 같이 user-user 유사도를 계산하게 된다.
1. 사용자 프로필 생성을 위해 정보를 수집한다.
2. 클러스터링 알고리즘을 적용하여 사용자 프로필을 그룹화한 후 클러스터링 결과를 사용하여 group-rating 행렬을 생성한다.
3. user-user 유사도를 계산한다.
먼저 조정된 코사인 유사도를 활용하여 group-rating 행렬 하위의 user-user 유사도 행렬을 생성하고, 피어슨 상관계수를 사용하여 user-rating 행렬 하위의 user-user 유사도를 계산한다.
마지막으로 전체 사용자 간의 유사도는 위의 두 가지의 선형조합이다.
4. 이웃의 평균으로 부터 가중 평균 편차를 통해 예측값을 생성한다.
예를 들어, 4명의 사용자가 있다고 가정한다. 먼저 사용자 프로필을 통해 의미적 내용 기반으로 4명의 사용자를 두 개의 클러스터로 그룹화한다. 이 두 클러스터를 콘텐츠로 처리하여 CF를 위한 새로운 user - item 행렬을 적용하여 사용자에 대한 추천을 한다.
1. 사용자 프로필 생성
클러스터링 기법을 적용하는 목적은 사용자를 여러 집단(clique)으로 그룹화시켜서 협력 유사도를 계산하여 의미론적 콘텐츠 정보를 제공하는 것이다. 이를 위해서 사용자 프로필 표현을 정의할 필요가 있다.
사용자 프로필을 작성하는데는 두가지 방법이 사용되는데, 수동적인 가중 방법과 자동적인 가중 방법을 사용한다. 사용자 프로필은 사용자에게 관심있는 항목과 관련된 정보 요구 사항 또는 선호도를 나타냅니다. 사용자 프로필은 여러 프로필 벡터로 구성되며 각 프로필 벡터는 하나의 선호 사항들의 차원을 나타낸다. 각 차원은 자체 속성과 공동 쌍 가중치를 포함한다.
예를 들어, 영화 추천 시스템에서 영화 항목에는 배우, 감독, 장르 및 시놉시스의 차원(aspect)이 포함되어 있으며 프로필 벡터는 여러 속성 값 쌍으로 구성됩니다. 수동 가중치 방법은 사용자가 선호하는 항목 속성을 표현할 뿐만 아니라 해당 항목을 좋아하는 정도를 표현합니다.
$a_{i,m}$은 사용자 프로필의 차원 $i$에서의 항목 속성 $m$을 나타낸다. 그리고 $w_{i,m}$ 는 사용자 프로필의 차원 $i$에서 항목 속성인 $m$의 가중치를 나타낸다. 초기에는 사용자들이 선호도를 지정해야 한다.
그러나 항목에 대한 사용자 등급(rating)이 증가함에 따라 사용자 프로파일의 특정 차원에서 항목 속성의 가중치는 사용자 부담을 줄이기 위해 다음의 간단한 방정식에 의해 자동으로 구성될 수 있다. 이를 자동가중법이라고 한다.
여기서 $NUM_{item}$ $>$ $_{threshold}$ 는 순위 값이 임계값보다 큰 아이템 수 이고, $Num_{item \ \subseteq \ attribute_{m} \ of \ aspect_{n}} $ 는 사용자 프로필 $aspect \ n$ 속의 $attribute \ m$ 속성을 포함하는 항목 수 이고, rating이 임계값보다 큰 항목 수 이다. 본 실험에서는 임계값을 3으로 설정함.
예를 들어, 사용자 $Tom$이 영화 바람(영웅, 물고기)과 함께 사라지다. 이 세영화에 등급을 매긴다고 가정하자. 이 세 영화 등급 모두 임계치 3점 보다 크다. 장르 정보로부터 우리는 바람과 함께 사라지다가 로맨스 장르에 속한다는 것을 알고 있고, 나머지 '영웅', '물고기'는 액션에 속한다고 하면, $Tom$의 프로필은 다음과 같다.
$Tom = \left \{Genre: romance (1/3), action (2/3) \right \}$
사용자는 또한 원래 가중치를 덮어쓰기 위해 명시적으로 자동 가중치를 변경할 수 있다.
시놉시스 같은 경우 다른 양상들과는 다소 다른 경향이 있는데 이 때 TF-IDF 가중치가 부여된 키워드 벡터를 사용한다.
2. 그룹 등급 생성
사용자 프로필을 표현했으면, 이제 사용자 프로필을 그룹화하여 그룹화 행렬을 형성하는 것이다. 이를 위해 모든 사용자에 대해 집단(clique)을 구축한다. 이를 그룹화하기 위해 단순하고 빠른 클러스터링 방법인 K-means 알고리즘을 일부 조정하여 적용한다. 아래의 그림을 보자.
주어진 k 대로 초기 클러스터 중심을 토대로 그룹화한다. 알고리즘이 끝나고 그룹핑이 완료된 후, 특정 클러스터에 속하는 하나의 객체의 가능성을 다음과 같이 계산한다.(퍼지 집합 이론이 적용되었음.)
여기서 $Pro(j, k)$는 클러스터 $k$에 속하는 객체 $j$의 가능성(probability)을 나타낸다. $CS(j,k)$는 객체 $j$와 클러스터 $k$사이에 counter-similarity(유클리디안 거리에 기반하여 계산...--;) 이다. $MaxCS(i,k)$는 객체와 클러스터 $k$ 사이의 최대 counter-similarity 이다.
그러나, 조정된 k 평균 알고리즘에서 클러스터의 퍼지 멤버십은 마지막 단계에서만 할당된다. 따라서 퍼지 k-평균 알고리즘(Duda, Hart, &Stork, 2000)은 각 객체에 각 반복 중에 퍼지 멤버십을 할당하는 항목을 그룹화하는데도 적용된다. 선택된 알고리즘과 관계없이 초기 클러스터 센터를 선택하는 방법은 중요한 문제다. 이와 관련하여 Bradley와 Fayyad(1998)가 제안한 정제 알고리즘(refinement algorithm)을 추천한다.
3. 유사도 계산
사용자 프로필을 그룹화한 후, 새로운 등급 행렬을 얻습니다. 그런 다음 고전적 협업 알고리즘을 사용하여 사용자 간의 유사성을 계산하고 예측을 만들 수 있습니다.
유사도를 계산하는 일반적인 척도로 피어슨 상관 알고리즘, 코사인 상관 알고리즘이 있는데, 매우 등급이 다른데 패턴이 유사해서 유사한 사용자라고 낙인찍히는 것을 방지하기 위해서 조정된 코사인 상관 알고리즘을 사용하여 이 단점을 보완한다.
사용자 등급 행렬과 그룹 등급 행렬 사이의 값 척도의 차이로 인해 유사도를 계산할 때 서로 다른 방법을 사용한다. 사용자 등급 행렬의 경우 값은 정수이고, 그룹 등급 행렬의 경우 0에서 1사이의 실수 값이다. 값을 정규화 시키기 위해서 [0~1]에서 [1~5]로 연속 데이터 스케일을 확대하거나 [1~5]에서 [0~1]로 이산 데이터 스케일을 감소시킨 다음 user-user 유사도를 계산한다.
실험 결과, 정밀도를 향상시켰다.
피어슨 상관 알고리즘을 이용하여 사용자 등급 행렬로부터 사용자간 유사도 행렬을 계산하고, 조정된 코사인 알고리즘을 이용하여 그룹 등급 행렬로부터 사용자간 유사도 행렬을 계산한다.
마지막 총 사용자 유사도 행렬은 위의 제시한 두가지의 선형 조합이다. 아래의 식을 이용한다. 실험 결과 후자의 접근방식은 우수한 성능을 보였다.
여기서 $sim(k,l)$ 는 사용자 $k$와 이웃 $l$ 사이의 유사도이다. $c$는 조합 계수이다. $sim(k, l)_{user}$ 는 사용자 등급 행렬로부터 계산되는 사용자 $k$와 이웃$l$ 사이의 유사성이다. 그리고 $sim(k, l)_{group}$은 그룹 등급 행렬로부터 계산된 사용자 $k$와 이웃$l$ 사이의 유사성이다. 여기서 유심히 봐야하는게 그룹정보와 항목 등급의 강도가 변함에 따라 $c$의 최적값도 변할 것이라는 점이다.
예시적으로 추천시스템의 초기 단계에서 사용자 등급의 부족으로 인해 그룹 등급 행렬이 중요한 역할을 한다. 따라서 그룹 등급 행렬의 가중치는 그 당시에 상대적으로 높히 측정된다. 나중에 사용자 등급의 비율이 많아짐에 따라 그룹 등급 행렬의 가중치도 감소하게 된다. 따라서 아래그림(알고리즘 3)에서 설명하는 최적 값을 자동으로 찾기 위한 간단한 적응형 해를 제안한다.
처음에 $c$를 0.5로 값을 설정한다. 그리고 초기 값을 0.1만큼씩 감소시키는데
만약에 성능도 같이 감소한다면, 성능이 또다시 감소할 때까지 상수 값을 0.1로 증가시킨다.
그렇지 않다면 성능이 증가할 때까지 상수값을 0.1씩 감소시키는 것을 지속한다.
쉽게 말하면 추천시스템이 갈수록 데이터 확보도 되고 하니까 그에 맞춰 성능을 더 좋게 하기 위해서 $c$값을 올렸다 내렸다 하는 것이다.
4. Collaborative prediction
항목에 대한 예측은 이웃 평균으로부터 편차의 가중 평균를 수행하여 계산됩니다. 여기서 Top-N 규칙을 사용하여 사용자의 유사성을 기반으로 가장 가까운 N 이웃을 선택한다. 사용자 $k$에 의한 항목 $i$에 대한 예측을 위한 식은 아래와 같다.
여기서 $P_{k,i}$는 항목 $i$에 대해 사용자 $k$의 등급 예측을 말하며, $n$ 은 사용자 $k$의 가장 가까운 $N$개의 이웃을 나타내며, $R_{u}$는 항목에 대한 사용자 $u$의 평균 등급을 나타낸다.
한계점
여전히 새로운 유저에 대한 추천은 현실적으로 어렵다. 그러므로 우선 평균치를 주고 난 후에 편차 가중평균 값을 더하는 방식을 사용한다. 이로써 고질적인 New user problem에 대한 문제는 완전히 해결할 수는 없다.
나의 생각
이 논문의 최초는 2002년에 개제된 것이다. 크게 바뀐 것은 없지만 콜드스타트 문제, 추천시스템의 성능 향상 측면에서 큰 기여를 하였다. 이 방법론은 그다지 복잡하지 않으면서도 어렵지 않게 구현이 가능하다고 생각한다.
이러한 콘텐츠 기반과 협력 필터링 방법의 결합을 다른 도메인에서 또 색다른 피처들을 가지고 사용하기 충분하다고 생각된다.
이 논문 뒤에는 평가 부분과 결론 부분, 이웃은 30~50으로 했다는 내용 등이 있는데, 이 논문은 방법론 적인 부분이 궁금해서 읽은 것으로 자세히 기입하지 않거나 생략하였다.
'Reading' 카테고리의 다른 글
A Hybrid Movie Recommender System Based on Neural Networks (0) | 2020.02.27 |
---|---|
Recommender systems survey(2) (0) | 2020.02.12 |
Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions(2005) (0) | 2020.01.21 |
Using Content-Based Filtering for Recommendation (0) | 2020.01.21 |
Recommender systems survey(1) (0) | 2020.01.12 |
댓글