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

박병현님의 프로필 이미지
박병현

작성한 질문수

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

사용자 집단별 추천

train_test_split에 관한 질문입니다.

해결된 질문

작성

·

231

0

안녕하세요, 수업을 들으면서 궁금한 점이 생겨 여쭤봅니다. train_test_split() 메소드를 쓰실 때, x 값으로 ratings 을 사용하고, y값으로 user_id 를 사용했는데, 이 부분이 제 직관과 다른것 같습니다. x, y 값을 설정할 땐 학습하려는 데이터를 x, 결과를 얻고싶은 데이터를 y로 설정하는게 맞지 않나요? 즉 여기서는 x를 user_id, movie_id  등으로 설정하고, y를 rating으로 설정하는것이 학습 -> 예측 관계에 맞는것 같아 이부분이 잘 이해되지 않아서 여쭤봅니다. 또한 x데이터 안에 user_id가 이미 있는데, 예측하고자 하는 y를 user_id 로 설정하는 것 또한 잘 이해가 되지 않습니다! 혹시 이부분에 왜 그렇게 했는지 설명 부탁드려도 될까요?

답변 1

0

거친코딩님의 프로필 이미지
거친코딩
지식공유자

안녕하세요.

거친코딩 입니다.

질문주신 부분에 답변드리겠습니다.

학습자님께서 질문하신 부분은 기본적으로 row하나당 다른 row와의 1:1 비교를 통한 loss 값을 계산하기 위해서는 rating을 y로 쓰는게 맞습니다 (보편적인 ML방식)

사실 이것도 크게 다르지는 않지만, 다른점 두가지를 말씀드립니다.

1) 해당 데이터는 한 row로는 표현할수없다. 해당 데이터에는 유저1명이 1개 이상의 영화에 대해서 평점을 내렸기 때문에 어떻게 보면, 이전의 1:1row를 비교한 것처럼 유저1:유저2를 비교하기위해서는 y값에 일반적인 rating을 넣으면 안됩니다.

2) 해당 마지막 score라는 function을 보시면 결국 user_similarity에서 나온값으로 loss를 비교하고 있고, 그 인자값으로 user_id를 넣게 되어있습니다.

 

결론은 이거는 row:row비교가 아닌,

유저:유저비교 이기때문에 y값에 rating이 아닌,

유저id가 들어가게됩니다.

 

감사합니다.

거친코딩 드림

박병현님의 프로필 이미지
박병현

작성한 질문수

질문하기