내가 보려고 만든 블로그

Surprise 모듈들 간단 정리 본문

Recommendation/모델링

Surprise 모듈들 간단 정리

정의김 2022. 6. 24. 15:31

추천에서 나름 유명한 프레임웤인 Surprise. 토치로 구현하느라 많이 써보진 않았는데 어쩌다 사용할 기회가 생겨

모듈들 간단하게 정리해봄.

 

surprise.Dataset.load_from_file(file_path , reader=reader)

surprise.Reader

토치의 Dataloader 같은 클래스임. args 에 reader가 들어가는데 

아래처럼 surprise.Reader 에 데이터 형태에 맞춰서 line_format에 넣주면 알아서 파싱해준다.

 

reader = Reader(line_format='user item rating timestamp', sep=',', skip_lines=1)

ratingsDataset = Dataset.load_from_file(self.ratingsPath, reader=reader) # 포맷맞춰서 파싱해줌 .

 

build_full_trainset()

뭐에 쓰는거지 싶어 Document 찾아 본 결과 전체 데이터를 트레인셋으로 쓰는 함수라고 한다.

 

build_full_trainset().build_anti_test_set(fill=None)

위의 build_full_trainset()으로 인스턴스생성후 build_anti_test_set이라는 메소드가 존재 , 트레인셋에서 레이팅이 비어있는 값 , 유저가 평가하지 않은 아이템에 대한 레이팅을 특정값으로 채워서 return 한다. args로 fills가 들어가고 아무것도 주지 않으면 global_mean 값으로 채움. 다음과 같이 리턴

[ (user1, item10, 3) , (user1, item15, 3) ,(user2, item4, 3)   ]

 

surprise.model_selection.train_test_split 

트레인, 테스트로 스플릿해주는 함수. 기본값은 75:25 .

ratings 한 개수가 10만개이면 75000개를 트레인, 25000개를 테스트로 스플릿해줌. 

 

surprise.model_selection.LeaveOneOut

이것도 트레인 , 테스트로 스플릿 해주는 함수 . 하나만 남기고란 말에 알수 있듯이 유저가 rating을 남긴 상품들 중에서 하나씩만 뽑아서 test셋으로 만들어준다. 

 

model.fit ,      model.test

학습시키고 , 추론해주는 메소드들