해결된 질문
작성
·
212
2
'추천시스템의 정확도 측정'
best-seller방식으로 구한 예측값의 RMSE를 계산하는 부분에 질문이 있습니다.
y_pred = movie_mean[ratings.loc[user]['movie_id']]
이렇게 하면, User가 본 영화의 전체 평점이 예측값으로 나오는데요.
'특정 영화의 User의 평점 - 전체 평점평균' 에 대한 RMSE를 구하는 것이여서 Best-Seller 방식과는 관계없는 것 아닌가요?
알고리즘이 어떤 영화에대한 평균이 어떤 의미인지 잘 이해가 안되요.
Best-seller방식이라면 상위 한 개를 뽑는거여서
추천방식이 'Star Kid' 영화만 y_pred로 들어가야하지 않나요?
답변 1
0
안녕하세요.
거친코딩입니다.
학습자님께서 질문해주신 Best-seller 방식의 RMSE 산정에 대해서 말씀드리겠습니다.
먼저 Best-seller 알고리즘을 살펴보면,
def recom_movie(n_items):
# ratings에 있는 평가 데이터를 pandas DataFrame의 groupby() 메소드를 활용해서 각 영화에 대한 평균을 구함
movie_mean = ratings.groupby(['movie_id'])['rating'].mean()
# 각 영화의 평점평균을 내림차순하고, 지정한 개수만큼 뽑아낸다.
movie_sort = movie_mean.sort_values(ascending=False)[:n_items]
# 뽑힌 movie_sort의 index를 기준으로 movie DataFrame에서 조회한다.
recom_movies = movies.loc[movie_sort.index]
# 선정된 영화의 제목을 골라내서 반환한다.
recommendations = recom_movies['title']
return recommendations
ratings(평점)을 group by (mean) 후, 내림차순을 하고 지정한 개수만큼 뽑아내는 방식입니다.
그럼 다시 돌아와서, 해당 알고리즘을 평가하려면 다음의 질문에 답을 해야합니다.
"실제로 각 영화를 기준으로 전체 사람들의 평점으로 group by(mean)한 결과가 신뢰가 있는지? "
해당 질문은 각 유저의 실제 영화 평점값을 대상으로 일일이 RMSE를 구하여서 평균을 내어 모델의 신뢰도를 확인하겠다는 의미입니다.
그래서 학습자님께서 마지막으로 질문해주신
'Star Kid' 영화만 y_pred로 들어가야하지 않나요? 질문에 답을 드리면
start kid는 Best-Seller 방식의 최고 산출물이고,
모델 평가를 위해서는 1위만 평가하는것이 아니라,
나머지 2~꼴찌 까지 정확하게 점수를 잘 예측했냐도 봐야합니다.
""" 만약 1등만 100점이고, 나머지 2~꼴찌는 빵점이라면 좋은 추천 알고리즘이라고 보기 힘들지 않을까요?"""
학습자님의 질문에 답이 되셨으면 좋겠고, 추가적인 질문이 있으시다면 편하게 남겨주세요.
감사합니다.
-거친코딩 드림-