Netflix 상금 데이터에 대한 공동 필터링 모델을 구축하려는 과제를 담당하고 있습니다. 내가 사용하고있는 데이터는 데이터 프레임으로 쉽게 가져온 CSV 파일에 있습니다. 이제는 사용자를 행으로, 동영상을 열로 구성하고 각 셀을 해당 등급 값으로 채우는 스파 스 매트릭스를 만듭니다. 데이터 프레임의 값을 맵핑하려고하면 데이터 프레임의 각 행에 대해 루프를 실행해야하는데, 이는 R에서 많은 시간이 걸립니다. 누구나 더 나은 접근 방식을 제안 할 수 있습니까?데이터 프레임에서 스파 스 매트릭스 만들기
이MovieID UserID Rating
1 1 2 3
2 2 3 3
3 2 4 4
4 2 6 3
5 2 7 3
그래서 결국 나는 이런 식으로 뭔가를 원하는 : 스파 스 매트릭스 작성되는에서 dataframe의 데이터
buildUserMovieMatrix <- function(trainingData)
{
UIMatrix <- Matrix(0, nrow = max(trainingData$UserID), ncol = max(trainingData$MovieID), sparse = T);
for(i in 1:nrow(trainingData))
{
UIMatrix[trainingData$UserID[i], trainingData$MovieID[i]] = trainingData$Rating[i];
}
return(UIMatrix);
}
샘플 : 열 다음 샘플 코드 및 데이터는 영화 ID와 행은 사용자 ID되어 있습니다
1 2 3 4 5 6 7
1 0 0 0 0 0 0 0
2 3 0 0 0 0 0 0
3 0 3 0 0 0 0 0
4 0 4 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 3 0 0 0 0 0
7 0 3 0 0 0 0 0
그래서 해석이 같은 것입니다 : 사용자 2 등급 영화 (1) 3 성급 호텔로는, 사용자 3 세 역으로 영화 (2) 평가 다른 사용자와 영화의 경우에는 r을 사용합니다. 내 데이터 프레임에는이 코드를 사용하여이 사용자 항목 행렬을 만드는 데 약 30-45 분이 걸리는 행이 약 8500000 개 있습니다. 제안 사항을 얻고 싶습니다.
고마워요 !!!, 이것은 절대적으로 잘 작동합니다. – user37940
sparseMatrix 접근 방식이 두 번째 접근 방식보다 빠르게 작동합니다. 감사합니다. :) – user37940