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

dhleegarret님의 프로필 이미지
dhleegarret

작성한 질문수

[개념부터 실습까지] 추천 시스템 입문편

숙제 풀이 (3)

숙제3, 숙제4 결과 분석에 대한 질문입니다.

해결된 질문

작성

·

188

2

안녕하세요 :) 좋은 강의 내용 잘 듣고 있습니다. 강의 중간에 숙제를 하다가 아래와 같은 질문 사항이 생겼습니다. 

1. (숙제4)의 영화 평점 기반으로 예측하기에서 train.groupby("movieId")["rating"].std().mean()=0.835, (숙제3)의 사용자 평점 기반 예측하기에서의 train.groupby("userId")["rating"].std().mean()=0.926 값을 얻을 수 있습니다. 여기서 (숙제3)의 평균 표준편차 값이 더 작은 이유는 (숙제4)의 predict_by_movies 데이터 프레임의 "predict" 칼럼의 모든 Nan을 train["rating"].mean() 값으로 모두 동일하게 대체했기 때문에 상대적으로 (숙제4)의 "predict" 칼럼보다 고른값이 되었기 때문으로 해석할 수 있을까요?

2. 위 1번에 이어서 (숙제4)의 predict_by_movies 데이터 프레임의 "predict" 칼럼의 모든 Nan을 train["rating"].mean() 값으로 모두 동일하게 대체했기 때문에 어쨌든 이 값은 실제 해당 movieId의 평균 평점은 아니므로, (숙제4)에서 최종 도출한 rmse가 (숙제3)에서 최종 도출한 rmse보다 더 커질 수 있는 이유라고 볼 수 있을까요? 

답변 2

3

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

  1. predict_by_movies의 predict 컬럼은 예측한 평점이고, train의 rating 컬럼은 실제로 유저가 매긴 평점입니다. 작성하신 코드로 구한 평균 표준편차는 train 데이터 안에서 영화/사용자 별로 매겨진 평점이 어떻게 분포되어있는지를 의미하는 값으로, 예측한 평점과는 관계가 없습니다.

    영화 평점 기반 예측(숙제4)이 사용자 평점 기반 예측(숙제3)보다 작은 평균 표준편차 값을 가지는 것은, 평균적으로 봤을 때 하나의 영화에 대해 여러 유저들이 매긴 평점의 분산이, 한 명의 유저가 여러 영화에 대해 매긴 평점의 분산보다 작다는 의미입니다.

  2. 말씀하신대로 해석이 가능합니다. 영화가 무엇인지에 관계없이 모든 train 데이터의 평균 평점 값을 넣은 것이니 예측의 정확도가 감소할 수 있습니다.

2

dhleegarret님의 프로필 이미지
dhleegarret
질문자

좋은 답변 감사합니다 :) 

1번은 제가 코드를 잘못 이해했다는 것을 강사님 답변을 통해 알게 되었습니다!  :) 

dhleegarret님의 프로필 이미지
dhleegarret

작성한 질문수

질문하기