해결된 질문
작성
·
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가 들어가게됩니다.
감사합니다.
거친코딩 드림