Item 간 similarity를 이용하여 사용자의 평점을 예측
Item 당 평점이 많을수록 similarity 존재 확률 상승
𝐴 = (0.3 × 3 + 0.6 × 5) 0.3 + 0.6 = 4.33
𝐵 = (0.5 × 2 + 0.6 × 4) 0.5 + 0.6 = 3.09
𝐴 = (0 × 2 + 0.6 × 5) 0.6 = 5
𝐵 = (0 × 4 + 0 × 2 + 0.3 × 3) 0.3 = 3
User 간 similarity를 이용하여 사용자의 평점을 예측
User 당 평점이 많을수록 similarity 존재 확률 상승
5 2 3
2 4
A 3 5
B 2 4
3 1
0.5
0.3
0.6
• User based CF
0.6
5 2 3
2 4
A B 3 5
2 4
3 1
00
0.3
• Item based CF
새로운 회원 가입했을 경우 새로운 상품 출시했을 경우
기존
상품에
대한
평점 입력
X
Popularity-based CF
(≒기존 인기 상품 추천 방식)
다른
회원들의
평점 입력
X
Contents-based recommendation
(상품별 feature 추출 필요)
O
User-based CF
Item-based CF
(예측 평점 4 이상의 상품 추천)
O
User-based CF
Item-based CF
(예측 평점 4 이상의 상품 추천)
: 가능 : 불가능
5 3
2 4
5
4
1
평점 참여 회원 수 : 32,569 명
상품 수 : 1,030 개
(오래된 상품 자동 삭제)
평점 후기 수 : 153,803 개
(약 0.45 % 작성 됨)
상품과 회원의 각각 5%를
test set으로 설정
• Cosine
cos 𝜃 =
𝑋 ∙ 𝑌
𝑋 𝑌
𝐽 𝑋, 𝑌 =
min⁡( 𝑥𝑖⁡, 𝑦𝑖)𝑖
max⁡( 𝑥𝑖⁡, 𝑦𝑖)𝑖
𝐼𝑓⁡𝑋 = 𝑥1⁡, 𝑥2⁡, ⋯ , 𝑥 𝑛 ⁡𝑎𝑛𝑑⁡𝑌 = 𝑦1⁡, 𝑦2⁡, ⋯ , 𝑦 𝑛 ⁡의⁡𝑣𝑒𝑐𝑡𝑜𝑟라⁡하면
𝑟 =
(𝑥𝑖 − 𝑥)(𝑦𝑖 − 𝑦)𝑖
(𝑥𝑖 − 𝑥)2
𝑖 (𝑦𝑖 − 𝑦)2
𝑖
𝑥⁡, 𝑦⁡𝑖𝑠⁡𝑠𝑎𝑚𝑝𝑙𝑒⁡𝑚𝑒𝑎𝑛
• Jaccard • Pearson
 Similarity between items 의 값이 매우 작게 나옴.
• 상품 수에 비해 회원 수가 30배 가량 많아 값이 작아진 것으로 보임.
 Pearson은 대부분 음수가 나와 활용이 어려움.
• 데이터의 공백이 많아서 음수가 나온 것으로 보임.
 AWS에서 Crawling시 간헐적으로 느려짐.
→ request 사이에 random timesleep 적용
 Similarity between users 가 5억개 이상으로 RDB에 무리를 줄 수 있음.
→ NoSQL을 활용
 Similarity between users 계산 시간이 오래 걸림.
→ tmux를 활용한 Multi-process 구현
 개별 Data load후 작업할 시 오래 걸림
→ ORM을 최대 활용하여 DB에서 작업 후 load
 Precision 값이 매우 떨어짐.
→ Similarity에 Threshold(임계값)를 적용
5 3
2 4
5
4
1
5 3
2 4
5
A
B
𝑀𝐴𝐸 =
𝑝𝑖 − 𝑞𝑖
𝑁
𝑖=1
𝑁
=
4 − 𝐴 + 1 − 𝐵
2
• 실제 값(p) • 예측 값(q)
• Popularity based CF에서 MAE의 값이 매우 낮게(좋게) 나옴.
회원이 실제로
구매한 상품
시스템이
추천한 상품
 Recall
• 실제로 사용자가 좋아하는 상품을 추천한 비율
• Ex. 추천한 4개중 2개를 실제로 구매했으므로
2
4
 Precision
• 추천한 상품 중 사용자가 실제로 좋아하는 비율
• Ex. 실제 구매한 5개 중 2개만 추천 받았으므로
2
5
 결과표
 모든 상품을 추천하면 Recall은 올라가지만 Precision이 낮아진다.
 Recall과 Precision 값 모두 커야 추천의 의미가 있다.
 Popularity-based CF는 거의 모든 상품을 추천해주고 있기 때문에 Recall이 1이
나온 반면 Precision이 매우 낮음.
 Jaccard Similarity에 Threshold를 적용한 Item-based CF를 사용하여 기존의
Popularity-based CF보다 Recall은 낮아졌지만 Precision이 매우 높아져 추천의
정확도가 높아짐
Popularity
based
User based(cosine) Item based (Jaccard)
Threshold = 0.5 Threshold = 0 Threshold = 0.1 Threshold = 0
Recall (≤ 1) 1.0 0.7241 1.0 0.6552 0.9655
Precision (≤ 1) 0.0749 0.1680 0.0803 0..3654 0.0743
.
.
 모든 사용자가 모든 상품에 후기를 작성하지 않으며(0.45% is filled) CF의 특성상
공백 데이터는 모두 0점으로 간주하여 공백 데이터가 추천의 정확도를 떨어뜨림.
 사용자 ID의 뒤 네 글자가 *로 표시(ex. a****)되어 크롤링 시 소수의 중복 데이터
발생 가능.
 실제 사용자의 구매이력을 데이터로 활용한다면 정확도가 매우 높아질 것으로 예상.
개인맞춤 패션 쇼핑몰 상품 추천 시스템

개인맞춤 패션 쇼핑몰 상품 추천 시스템

  • 4.
    Item 간 similarity를이용하여 사용자의 평점을 예측 Item 당 평점이 많을수록 similarity 존재 확률 상승 𝐴 = (0.3 × 3 + 0.6 × 5) 0.3 + 0.6 = 4.33 𝐵 = (0.5 × 2 + 0.6 × 4) 0.5 + 0.6 = 3.09 𝐴 = (0 × 2 + 0.6 × 5) 0.6 = 5 𝐵 = (0 × 4 + 0 × 2 + 0.3 × 3) 0.3 = 3 User 간 similarity를 이용하여 사용자의 평점을 예측 User 당 평점이 많을수록 similarity 존재 확률 상승 5 2 3 2 4 A 3 5 B 2 4 3 1 0.5 0.3 0.6 • User based CF 0.6 5 2 3 2 4 A B 3 5 2 4 3 1 00 0.3 • Item based CF
  • 5.
    새로운 회원 가입했을경우 새로운 상품 출시했을 경우 기존 상품에 대한 평점 입력 X Popularity-based CF (≒기존 인기 상품 추천 방식) 다른 회원들의 평점 입력 X Contents-based recommendation (상품별 feature 추출 필요) O User-based CF Item-based CF (예측 평점 4 이상의 상품 추천) O User-based CF Item-based CF (예측 평점 4 이상의 상품 추천) : 가능 : 불가능
  • 9.
    5 3 2 4 5 4 1 평점참여 회원 수 : 32,569 명 상품 수 : 1,030 개 (오래된 상품 자동 삭제) 평점 후기 수 : 153,803 개 (약 0.45 % 작성 됨) 상품과 회원의 각각 5%를 test set으로 설정
  • 10.
    • Cosine cos 𝜃= 𝑋 ∙ 𝑌 𝑋 𝑌 𝐽 𝑋, 𝑌 = min⁡( 𝑥𝑖⁡, 𝑦𝑖)𝑖 max⁡( 𝑥𝑖⁡, 𝑦𝑖)𝑖 𝐼𝑓⁡𝑋 = 𝑥1⁡, 𝑥2⁡, ⋯ , 𝑥 𝑛 ⁡𝑎𝑛𝑑⁡𝑌 = 𝑦1⁡, 𝑦2⁡, ⋯ , 𝑦 𝑛 ⁡의⁡𝑣𝑒𝑐𝑡𝑜𝑟라⁡하면 𝑟 = (𝑥𝑖 − 𝑥)(𝑦𝑖 − 𝑦)𝑖 (𝑥𝑖 − 𝑥)2 𝑖 (𝑦𝑖 − 𝑦)2 𝑖 𝑥⁡, 𝑦⁡𝑖𝑠⁡𝑠𝑎𝑚𝑝𝑙𝑒⁡𝑚𝑒𝑎𝑛 • Jaccard • Pearson  Similarity between items 의 값이 매우 작게 나옴. • 상품 수에 비해 회원 수가 30배 가량 많아 값이 작아진 것으로 보임.  Pearson은 대부분 음수가 나와 활용이 어려움. • 데이터의 공백이 많아서 음수가 나온 것으로 보임.
  • 11.
     AWS에서 Crawling시간헐적으로 느려짐. → request 사이에 random timesleep 적용  Similarity between users 가 5억개 이상으로 RDB에 무리를 줄 수 있음. → NoSQL을 활용  Similarity between users 계산 시간이 오래 걸림. → tmux를 활용한 Multi-process 구현  개별 Data load후 작업할 시 오래 걸림 → ORM을 최대 활용하여 DB에서 작업 후 load  Precision 값이 매우 떨어짐. → Similarity에 Threshold(임계값)를 적용
  • 12.
    5 3 2 4 5 4 1 53 2 4 5 A B 𝑀𝐴𝐸 = 𝑝𝑖 − 𝑞𝑖 𝑁 𝑖=1 𝑁 = 4 − 𝐴 + 1 − 𝐵 2 • 실제 값(p) • 예측 값(q) • Popularity based CF에서 MAE의 값이 매우 낮게(좋게) 나옴.
  • 13.
    회원이 실제로 구매한 상품 시스템이 추천한상품  Recall • 실제로 사용자가 좋아하는 상품을 추천한 비율 • Ex. 추천한 4개중 2개를 실제로 구매했으므로 2 4  Precision • 추천한 상품 중 사용자가 실제로 좋아하는 비율 • Ex. 실제 구매한 5개 중 2개만 추천 받았으므로 2 5
  • 14.
     결과표  모든상품을 추천하면 Recall은 올라가지만 Precision이 낮아진다.  Recall과 Precision 값 모두 커야 추천의 의미가 있다.  Popularity-based CF는 거의 모든 상품을 추천해주고 있기 때문에 Recall이 1이 나온 반면 Precision이 매우 낮음.  Jaccard Similarity에 Threshold를 적용한 Item-based CF를 사용하여 기존의 Popularity-based CF보다 Recall은 낮아졌지만 Precision이 매우 높아져 추천의 정확도가 높아짐 Popularity based User based(cosine) Item based (Jaccard) Threshold = 0.5 Threshold = 0 Threshold = 0.1 Threshold = 0 Recall (≤ 1) 1.0 0.7241 1.0 0.6552 0.9655 Precision (≤ 1) 0.0749 0.1680 0.0803 0..3654 0.0743 .
  • 15.
    .  모든 사용자가모든 상품에 후기를 작성하지 않으며(0.45% is filled) CF의 특성상 공백 데이터는 모두 0점으로 간주하여 공백 데이터가 추천의 정확도를 떨어뜨림.  사용자 ID의 뒤 네 글자가 *로 표시(ex. a****)되어 크롤링 시 소수의 중복 데이터 발생 가능.  실제 사용자의 구매이력을 데이터로 활용한다면 정확도가 매우 높아질 것으로 예상.