인프런 커뮤니티 질문&답변

kim aiden님의 프로필 이미지
kim aiden

작성한 질문수

Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능

추천 시스템의 정확도 측정

best-seller 정확도 측정

해결된 질문

작성

·

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~꼴찌는 빵점이라면 좋은 추천 알고리즘이라고 보기 힘들지 않을까요?"""

학습자님의 질문에 답이 되셨으면 좋겠고, 추가적인 질문이 있으시다면 편하게 남겨주세요.

감사합니다.

-거친코딩 드림-

 

 

 

kim aiden님의 프로필 이미지
kim aiden

작성한 질문수

질문하기