개인화 추천 기술 (협력적 추천을 중심으로 …) 숭실대학교 마이닝 연구실 김완섭(wskim92@mining.ssu.ac.kr), 2006년 1월 9일
개인화 추천기술의 필요성 콘텐츠의 증가 적용분야 콘텐츠의 증가로 인하여 사용자가 원하는 콘텐츠를 선택하기가 어려워짐. 사용자의 취향에 맞는 콘텐츠를 필터링하여 자동으로 제공하는 것이 요구됨 적용분야 인터넷 쇼핑몰에서의 상품 추천(상품, 도서, 영화) 디지털 TV 환경에서의 프로그램 추천 웹 환경에서의 웹 사이트, 웹 페이지 추천
어떻게 개인화 된 서비스를 해줄 수 있을까? 어떻게 개인화 된 서비스를 해줄 수 있을까? 각 사람에 맞는 추천을 해주기 위해서는 아래와 같이 여러 가지 정보들을 고려해야 한다. 개인화된 추천을 제공하기 위해 고려할 수 있는 정보들 사용자의 인구통계학적 속성 정보 (Demographic features) ; 나이, 성별, 주소 등 콘텐츠의 속성 정보 (Contents Feature) ; 제목, 설명문(Abstract) 사용자의 과거 이용 정보 (Usage History) ; 상품 구매 또는 서비스 이용 등 상품의 과거 구매 정보 (Sales History) ; 구매 패턴 분석 Demographic features Recommend items Item features Customer Purchase history Sales history
개인화 추천기술의 종류 추천기술의 분류 추천기술의 일반적인 분류 개인화 추천 방법은 크게 아래와 같이 분류할 수 있다. 약간의 차이는 있으나 대부분의 추천 관련 논문에 보면 3가지 방법을 언급한다. 추천기술의 일반적인 분류 내용기반 추천 (Content-based Recommendation) 인구통계학적 추천 (Demographic Recommendation) 협력적 추천 (Collaborative Recommendation or Social Filtering)
개인화 추천기술의 종류 기타 규칙기반 추천(Rule-based Recommendation) 연관규칙을 이용한 추천 일반적인 의미로 인구통계학적 추천에 속한다고 볼 수 있다. ex) 30대 직장인에게 노트북을 추천한다. 규칙은 전문가에 의해 직접 작성되거나 시스템에 의해 생성될 수 있다. 연관규칙을 이용한 추천 연관규칙 알고리즘을 적용하여 상품 간의 구매 연관성을 분석한다. (A -> B) A상품을 구매한 고객에게 B상품을 추천한다. 아이템 기반 협력적 추천에 포함될 수 있다. (사실상은 같은 접근방식이다.)
개인화 추천기술의 종류(1-1) 내용기반 추천 적용 예 내용 기반 추천(Content-based Recommendation) 사용자가 이전에 이용한 콘텐츠와 내용 정보가 유사한 다른 콘텐츠를 추천한다. 내용정보는 보통 콘텐츠에 대한 텍스트 정보를 의미한다. 도서 : 책의 제목, 저자, 분야, 초록정보 영화 : 영화제목, 주연배우, 장르, 영화소개 개념 그림 적용 예 웹페이지 추천 : ‘박지성/이영표/축구/PSV’ 등의 내용을 포함한 A웹페이지 본 사용자에게 ‘박지성/축구/맨체스터’ B웹페이지를 추천한다. like A similar contents B Recommend C
개인화 추천기술의 종류(1-2) 내용기반 추천 내용기반 추천의 한계 연구의 방향성 콘텐츠에 대한 의미있는 내용 정보가 존재해야 한다. 그러나 … 콘텐츠들의 내용 정보를 모두 비교하기 때문에 분석시간이 많이 소요된다. 텍스트 이외의 내용 정보를 추천하기가 어렵다. (음악, 이미지, 동영상) 연구의 방향성 온톨로지의 필요성 기존의 키워드 만을 사용하여 유사도를 검색하는 경우 의미적으로는 비슷해도 유사성을 파악하기 힘들다. 예를 들어 아래의 두 문서는 의미적으로 같지만 키워드만 보면 유사성을 찾을 수 없다. A문서(박지성, 이영표, 월드컵) B문서(맨체스터, 잉글랜드, 축구) 온톨로지를 구성하여 단어 간의 유사성, 관계성을 파악하면 더욱 효과적인 내용 기반 추천이 가능해진다.
개인화 추천기술의 종류(2-1) 인구통계학적 추천 인구통계학적 추천(Demographic Recommendation) “인구통계”란 사용자의 일반적인 정보, 즉 나이, 성별, 주소 등의 일반적인 정보를 의미한다. (일반적으로 초기 가입 시 입력한 정보) 인구통계학적 정보를 분석하여 규칙을 찾아내어 추천에 적용한다. IF age > 20 and age < 30 then Ballad IF age < 20 then dance 이러한 규칙은 어떻게 찾아 낼 수 있을까? 분류 모델, 카이스퀘어 분석 등 개념 그림 A Recommend similar feature B C like
개인화 추천기술의 종류(2-2) 인구통계학적 추천 인구통계학적 추천의 한계 사용자의 가입 정보가 불충분, 부정확할 때 정확도가 떨어진다. 불충분 : 나이, 성별 정도만 존재 or 관심분야: 컴퓨터 ? , 스포츠 ? 부정확 : 취미 관심 분야 입력 안함 or 대충 입력함 고객 속성이 콘텐츠의 이용과 상관성이 별로 없는 경우가 많다. 나이가 20대 이하라고 꼭 댄스곡을 좋아하는 것이 아니다.
개인화 추천기술의 종류(2-3) 인구통계학적 추천 구매 규칙의 자동 생성 (특정 상품에 대한 추천을 위하여) 각 상품을 과거 판매를 분석하여 규칙을 생성 카이스퀘어 분석을 적용함 선택된 프로파일 속성값 속성에 소속된 고객수 소속 고객 중 구매 고객수 Chi- Square 소속 고객군의 구매율 선호 / 비선호 의미 나이 50대 1420 91 69.48 0.0640 선 호 나이 60대 492 41 56.34 0.0833 회원타입(1) 2260 119 51.96 0.0528 직업(전문직) 135 16 41.22 0.1185 등록점(본점) 1287 95 39.81 0.0738 결혼(미혼) 3229 42 26.01 0.0130 비 선 호 주택 (본인소유) 3207 134 23.41 0.0417 나이 20대 1787 17 22.02 0.0095 주소 (강남구) 706 39 19.77 0.0552
개인화 추천기술의 종류(2-4) 인구통계학적 추천 자동화된 프로파일 추천 엘도라도 시스템에서 제공함 (실행해보자.)
개인화 추천기술의 종류(3-1) 협력적 추천 협력적 추천 기법 개념 그림 사용자와 성향이 비슷한 사용자들이 공통적으로 좋아하는 콘텐츠를 추천한다. 과거에 이용한(구매한) 콘텐츠가 비슷하면 유사한 성향이 비슷하다고 본다. 용어 : 협력적 추천, CF 추천, 협력적 여과, 사회적 여과 등으로 불린다. 개념 그림 like A B high correlation Recommend A B C like
개인화 추천기술의 종류(3-2) 협력적 추천 장점 적용 예 사용자들의 과거 구매 정보만을 가지고 정확도가 높은 추천이 가능하다. 콘텐츠의 내용 정보, 사용자의 인구통계학적 정보를 전혀 필요로 하지 않는다. 적용 예 아마존닷컴(www.amazon.com) : 도서추천 MovieFinder (www.moviefinder.com) : 영화추천 CDNow (www.cdnow.com) : 음악추천
3.협력적 추천 – 개념 협력적 추천(Collaborative Filtering) 협력적 추천의 예 고객과 유사한 성향을 갖는 이웃 고객들을 선별하고 이들이 공통적으로 선호하는 아이템을 추천하는 것 협력적 추천의 예 고객1에게 “추천기술”이라는 도서를 추천하는 것이 좋은가? 인공지능 SW공학 데이터마이닝 설계기법 추천기술 User1 선호 ? User2 User3 User4 User5
3.협력적 추천 – 개념 다른 고객과의 유사도 계산 Weighted Sum Function A의 과거 구매 내역 고객 A 시청 제목 반응 1 인공지능 구입 2 데이터마이닝 ‘고객 B’ ‘고객 C’ 시청 영화 반응 데이터마이닝 만족 인공지능 불만족 색즉시공 살인의 추억 해리포터와 비밀의 방 시청영화 반응 바람계곡의 나우시카 만족 이웃집 토토로` 귀를 기울이면 보통 센과치히로의 행방불명 붉은 돼지 반지의 제왕 살인의 추억 고객 A (7647) A를 위한 추천 추천 영화 리스트 바람의 계곡의 나우시카 센과치히로의 행방불명 반지의 제왕 센과히치로의 행방불명 Weighted Sum Function
3.협력적 추천 – 주요 순서 STEP1. 유사도 계산 Step2. 예측값 계산 목표 고객과 다른 고객들과의 유사도를 계산한다. Step2. 예측값 계산 Step1에서 계산된 유사도를 가중치로 사용하여 고객의 상품 i에 대한 예측값을 계산한다.
3.협력적 추천 – 고객간 유사도 계산 고객간 유사도 계산 유사도 계산식 두 고객을 벡터로 표현하여 벡터간의 유사성을 계산한다. 각 고객의 정보를 벡터로 표현하는 방법 아래의 표1에서 A의 벡터 : <5, 4, 1, 2, ?> 아래의 표2에서 A의 벡터 : <1, 1, 0, 0, 0> 유사도 계산식 1) 피어슨 상관계수, Pearson correlation coefficeint (범위 [-1,1]) 2) 코사인 유사도, cosine similarity (범위 [0, 1]) 수치(Rating)의 의미에 따라 상관계수를 사용할지 코사인을 사용할지를 결정해야 한다! Item1 Item2 Item3 Item4 Item5 A 5 4 1 2 ? B C Item1 Item2 Item3 Item4 Item5 A 구매 B C
3.협력적 추천 – 고객간 유사도 계산(상관계수) 상관계수를 이용한 유사도 계산의 예 상관계수식 상관계수의 의미 두 개의 속성간의 상관성을 검사한다. 1이면 같은성향, 0이면 상관없음, -1이면 반대성향을 나타낸다. 적용 예) 키와 몸무게의 관계 사용자간의 유사도 계산에 적용 A와 B의 상관계수 유사도 -1.0 (직접 계산해보자) A와 C의 상관계수 유사도 0.476 Item1 Item2 Item3 Item4 Item5 A 5 4 3 2 1 B C
3.협력적 추천 – 고객간 유사도 계산(상관계수) 상관계수 계산 참고 A : (5, 4, 3, 2, 1) B : (1, 2, 3, 4, 5) C : (4, 3, 2, 4, 2) A와 B의 상관계수 A의 평균 : 3 , A의 분산 : Root(2) = 1.4 B의 평균 : 3 , B의 분산 : Root(2) = 1.4 C의 평균 : 3 , C의 분산 : Root(4/5) = 0.9 Corr(A,B) = = (1/5)*{(5-3)(1-3)+(4-3)(2-3)+(3-3)(3-3)+(2-3)(3-2)+(1-3)(5-3)} / 2 = (1/5)*{(-4)+(-1)+(0)+(-1)+(-4) / 2 = -1.0 (즉, 완전 반대 성향이 있음을 알 수 있다.) Corr(A,C) = = (1/5)* { (5-3)(4-3)+(4-3)(4-3)+(3-3)(2-3)+(2-3)(4-2)+(1-3)(2-3) } / R(0.8)*R(2) = (1/5)* { (2)+(1)+(0)+(-2)+(2) } / 0.9*1.4 = 0.476 (즉, 약간 비슷한 성향이 있음을 알 수 있다.)
3.협력적 추천 – 고객간 유사도 계산(코사인) 유사도 계산을 통한 유사도 계산의 예 코사인 계산식 코사인 계산식의 의미 0에서 1사이의 값을 갖는다. (Rating이 음수가 아닌 경우 음의 값은 갖지 않는다.) 1이면 같은 성향, 0이면 다른 성향을 나타낸다. 코사인은 두 벡터의 각도만을 고려하므로 벡터의 크기는 무시된다. Cos(A,B) 0.63, Cos(A,C) 0.92 A와 B의 경우 0.63만큼 유사하다는 것이 계산되었다. 이상하지 않는가? 상관계수식를 사용했을 경우는 -1이었는데…, 만약 콘텐츠에 대한 이용회수라고 생각하면 어떤가? Item1 Item2 Item3 Item4 Item5 A 5 4 3 2 1 B C
3.협력적 추천 – 고객간 유사도식의 선택 상관계수식을 사용해야 할 경우 코사인 식을 사용해야 할 경우 선호 또는 비선호의 의미를 포함할 경우 상관계수식을 사용한다. 예를들어, Rating이 1에서 5까지의 만족도 값을 의미할 경우 적절한다. 1: 아주불만족, 2:불만족, 3:보통, 4:만족, 5:아주만족 코사인 식을 사용해야 할 경우 Rating값이 선호의 의미만을 포함할 경우는 코사인식을 사용한다. 콘텐츠의 이용회수, 상품의 구매횟수 등 참고: 상품을 구매하지 않았을 경우 비선호한다고 볼 수는 없다. 따라서, 쇼핑몰 등에 적용하고자 할 경우에는 코사인식이 적합하다.
3.협력적 추천 – 추천 예측값의 계산 추천 수식 목표 고객과 다른 고객과의 유사도를 가중치로 하여 각 상품에 대한 선호도를 예측한다. : 사용자 a가 아이템 i에 대한 선호도 예측값 : 사용자 a의 Rating 평균값 : 사용자 u의 Rating 평균값 : 사용자 a와 다른 사용자 u와의 계산도 유사도 값
3.협력적 추천 – 추천 예측값의 계산 추천의 적용 예 사용자1의 아이템5에 대한 선호도 값 예측 3+ [(5-3.75)*0.796 + (1-2.8)*(-0.417)]/(0.796-0.417) = 4.1 Item1 Item2 Item3 Item4 Item5 A 5 4 1 2 ? B C
3.협력적 추천 – 협력적 추천의 장단점 협력적 추천의 장점 협력적 추천의 단점 아이템의 내용 정보가 없는 환경에서도 의미있는 추천을 할 수 있다. 고객 간의 구매 행동 정보가 반영된 자동화된 시스템으로 적용가능 협력적 추천의 단점 고객의 수가 많아짐에 따라 수행 시간이 많이 소요됨. 확장성 문제(Scalability Problem) 다른 모든 사용자와의 유사도를 계산해야 함. 아이템 기반 협력적 추천이 효과적 선호도 정보가 적은 환경에서 적절한 추천을 할 수 없다 희소성 문제(Sparsity Problem) 신규 등록 상품에 대한 추천이 안됨 (New Item Problem) 신규 고객에 대한 추천이 안됨 (New User Problem)
아이템기반 협력적 추천(1) 아이템 기반 협력적 추천 장점 다른 고객과의 선호도(구매)정보를 활용하는 면에서는 기존의 협력적 추천과 동일 아이템 간의 유사도를 이용하여 추천해주는 방식을 사용한다. 적용 예. 아마존닷컴(www.amazon.com) 장점 상대적으로 적은 시간 소모 고객이 구매한 상품과 목표 상품과의 유사도만 계산하므로 계산 횟수가 적음 해당 고객과 모든 고객 과의 유사도를 계산하므로 계산회수가 매우 많음 높은 정확도 정확도 실험에서도 기존 방식과 유사하거나 좀더 높은 결과를 보임
아이템기반 협력적 추천(2) Step1. 유사도 계산 Step2. 예측값 계산 고객이 선호도를 입력한 콘텐츠들과 목표 콘텐츠와의 유사도를 계산한다. 구매데이터 : 고객이 구매한 상품과의 목표 상품과의 유사도를 계산한다. Step2. 예측값 계산 Step1에서 계산된 유사도를 가중치로하여 고객의 상품 i에 대한 예측값을 계산한다. Item1 Item2 Item3 Item4 Item5 A 5 4 1 2 ? B C
아이템기반 협력적 추천(2) – 유사도 계산 예 달마야 놀자 이웃집 토토로 유사영화 수치 0.894 0.516 0.365 조폭 마누라 0.1348 네 발가락 0.1319 묻지마 패밀리 0.1121 러시아워2 0.1065 해적 0.0992 디 아더스 0.0938 울랄라 시스터즈 0.0932 유사영화 수치 바람계곡의 나우시카 0.894 마녀배탈부 키키 0.516 귀를 기울이면 0.365 센과치히로의 행방불명 0.316 붉은돼지 폼포코너구리 대작전 0.258
아이템기반 협력적 추천(3) - 추천적용예 다른 영화와의 유사도 계산 Weighted Sum Function A의 과거 구매 내역 시청 제목 1 영웅 2 이웃집 토토로 ‘영웅’ ‘이웃집 토토로’ 유사 영화 수치 반지의 제왕 0.141 캐치미 이프유켄 0.116 동갑내기 과외하기 0.112 색즉시공 0.106 살인의 추억 0.098 해리포터와 비밀의 방 0.096 유사영화 수치 바람계곡의 나우시카 0.894 마녀배탈부 키키 0.516 귀를 기울이면 0.365 센과치히로의 행방불명 0.316 붉은돼지 폼포코너구리 대작전 0.258 고객 A (7647) A를 위한 추천 추천 영화 수치 바람의 계곡의 나우시카 0.632 마녀배달비키키 0.365 귀를 기울이면 0.258 센과히치로의 행방불명 0.223 Weighted Sum Function
아이템기반 협력적 추천(3) 유사도 계산 : 아이템 간의 유사도를 계산한다. 상관계수 코사인 Confidence
아이템기반 협력적 추천 예측 계산식 : 고객 u의 아이템 i에 대한 선호도 예측값 : 고객 u의 아이템 N에 대한 Rating
아이템기반 협력적 추천 – 적용 예 예를 통한 설명 고객 A의 Item5에 대한 예측 선호도는? Item1 Item2 유사도 계산 1과5: 0.9, 2와5: 0.8, 3과5: 0.2, 4와5: 0.1 선호도 예측 { 5*0.9 + 4*0.8 + 1*0.2 + 2*0.1 } / { 0.9+0.8+0.2+0.1 } = 8.1 / 2.0 = 4.1 Item1 Item2 Item3 Item4 Item5 A 5 4 1 2 ? B C
아이템기반 협력적 추천 – 구매데이터에 적용 기존 예측식의 문제점 구매 데이터일 경우에는 적용될 수 없다. 예를 들어, 고객 A의 Item5에 대한 구매 가능성을 구한다면? 유사도 계산 1과5: 0.6, 2와5: 0.7, 3과5: 0.3, 4와5: 0.2 선호도 예측 { 1*0.6 + 1*0.7 + 1*0.2 } / { 0.6+0.7+0.2 } = 1.5 / 1.5 = 1 // Rating이 없으므로 적용할 수 없음 Item1 Item2 Item3 Item4 Item5 A 구매 ? B C D E
구매데이터 적합한 아이템기반 CF 알고리즘 유사도 계산식 선호도 예측 계산식 수식 설명 : 아이템 A가 B에 대하여 갖는 구매 확신도 : 아이템 A,B를 모두 구매한 고객의 수 : 아이템 A를 구매한 고객의 수 선호도 예측 계산식 : 고객 a의 아이템 j에 대한 예측 선호도 : 고객 a가 구매한 아이템의 개수
아이템기반 협력적 추천 협력적 추천 알고리즘(엘도라도) double dab_up = 0; double dab_down = 0; public double itemBasedPrediction(int user_idx, int target_item_idx) { double dab_up = 0; double dab_down = 0; Vector u1_buy_items = (Vector) user_item_table.getSet( user_idx ); for(int i=0; i<item_size; i++){ // 고객이 구매한 모든 상품 Integer item_a_idx = (Integer) u1_buy_items.elementAt(i); double cosine_value = getItemsSimilarity(item_a_idx, target_item_idx); dab_up += cosine_value * cosine_value; } dab_down = u1_buy_items.size(); double result = Math.sqrt( dab_up / dab_down); if(dab_down == 0) result = 0; // 고객이 구매한 상품이 없는 경우 return result;
Assignment : 협력적 추천 프로그램 작성 입력(Input) 출력(Output) User1, Item1, 5 User1, Item1, 2 User1, Item1, 4 User2, Item1, 3 User2, Item1, 5 User3, Item1, 1 User1, Item1, 3 User1, Item1, 5 User1, Item1, 2 User1, Item1, 4 User2, Item1, 3 User2, Item1, 5 User3, Item1, 1 User1, Item1, 3
실험 데이터 EachMovie 데이터 MovieLens 데이터 백화점 거래 데이터 인터넷 영화시청 데이터