ddps-lab / instacart

Kaggle Competition
0 stars 0 forks source link

7/27 콜라보레이터 필터링 관련코드 하나씩 정해서 실행해보고 설명하기 #8

Open mjaysonnn opened 7 years ago

mjaysonnn commented 7 years ago

8월 3일(목)까지

안하면 밥사기(나가서먹는거임)

mjaysonnn commented 7 years ago

간단한 코드

image

image

Dataset

각각의 유저가 어떤 가수의 노래를 들었는지에 대한 정보를 담고있음 1258rows 286 column

User-Based Collaborative Filtering

User-Based : 유저의 음악 취향이랑 아이템의 유사성을 이용하여 추천해줌

결과

image

출처

KimJeongChul commented 7 years ago

9.3 Collaborative Filtering

. 유사성을 판단하기 위해 항목의 기능을 사용하는 대신 두 항목에 대한 사용자 등급의 유사성에 초점을 맞춥니 다. 즉, 아이템에 대한 아이템 - 프로파일 벡터 대신 유틸리티 매트릭스에서 컬럼을 사용합니다. 또한, 사용자에 대한 프로파일 벡터를 고안하는 대신 유틸리티 행렬의 행으로 표시합니다. Jaccard 또는 코사인 거리와 같은 거리 측정 값에 따라 벡터가 가까울 경우 사용자는 유사합니다. 그런 다음 사용자 U에 대한 권장 사항은 이 의미에서 U와 가장 유사한 사용자를 보고 이 사용자가 좋아하는 항목을 추천하여 이루어집니다. 유사한 사용자를 식별하고 유사한 사용자가 추천하는 프로세스를 협업 필터링이라고합니다.

9.3.1 Measuring Similarity

유틸리티 매트릭스의 행이나 열에서 사용자 또는 항목의 유사성을 측정하는 방법입니다.

Jaccard Distance

우리는 매트릭스의 값을 무시하고 등급이 매겨진 항목 세트에만 집중할 수 있습니다. 유틸리티 매트릭스가 구매에만 반영된 경우, 이 방법은 선택할 수있는 좋은 방법입니다. 그러나 유틸리티가 보다 상세한 등급 인 경우 Jaccard 거리가 중요한 정보를 잃어 버립니다.

Cosine Distance

더 큰 (양의) 코사인은 더 작은 각도와 더 작은 거리를 의미하므로 이 측정 값은 A가 C보다 B에 약간 더 가깝다는 것을 알려줍니다

Rounding the Data

시청률을 반올림하여 사용자가 높은 시청률을 기록한 영화와 낮은 점수를 얻은 시청자들 사이의 명백한 유사성을 제거하려고 할 수 있습니다.

Normalizing Ratings

평점을 평준화하는 경우 각 평점에서 해당 사용자의 평균 평점을 뺀 다음 낮은 평점을 음수로, 높은 평점을 양수로 바꿉니다. 그런 다음 코사인 거리를 사용하면 공통적으로 보았던 영화를 정반대로 보는 사용자는 거의 반대 방향으로 벡터를 가지게되며 가능한 멀리 생각할 수 있습니다. 그러나 공통적으로 등급이 매겨진 영화에 대한 비슷한 의견을 가진 사용자는 그들 사이의 각도가 비교적 작습니다.

KimJeongChul commented 7 years ago

$ python collaborative_filtering.py image

KimJeongChul commented 7 years ago

http://dataaspirant.com/2015/05/25/collaborative-filtering-recommendation-engine-implementation-in-python/

Euclidean Distance

def similarity_score(person1,person2) 유클리언 거리 계산 image

Pearson Correlation

피어슨 상관 계수 : 사람들의 관심사 사이의 유사성을 판단하는 다소 정교한 방법은 Pearson 상관 계수를 사용하는 것입니다. 상관 계수는 두 세트의 데이터가 직선에 얼마나 잘 맞는지 측정 한 것입니다. 이 공식은 Euclidean 거리 점수보다 복잡하지만 데이터가 현재 데이터 세트처럼 잘 정규화되지 않은 상황에서 더 나은 결과를 제공하는 경향이 있습니다.

Pearson 상관 관계 점수에 대한 구현은 먼저 두 사용자가 평가 한 항목을 찾습니다. 그런 다음 양 사용자에 대한 등급의 제곱과 합계를 계산하고 등급의 제품 합계를 계산합니다. 마지막으로이 결과를 사용하여 피어슨 상관 계수를 계산합니다. 거리 메트릭과 달리이 수식은 직관적이지 않지만 변수가 함께 변경되는 정도를 개별적으로 변경되는 정도에 따라 나누어 표시합니다. image

Ranking similar User for a User

def most_smiliar_users