1223
[17주차 - Day3] Recommendation system
무비렌즈 데이터를 활용한 평점 예측 모델 계발
# surprise 모듈을 통한 로딩 파트
from surprise import Dataset
from surprise import Reader
from collections import defaultdict
reader = Reader(line_format='user item rating timestamp', sep=',', skip_lines=1)
data = Dataset.load_from_file('ratings.csv', reader=reader)
SVD
from surprise import SVD
from surprise import NormalPredictor
from surprise.model_selection import GridSearchCV
# 하이퍼 파라미터 그리드 검색을 해서 최적의 파라미터를 찾는다
# scikit-learn의 GridSearchCV와 아주 흡사
# - n_factors: 축소 차원수 (앞 그림에서 시그마 행렬의 차원 수 - r)
# - n_epochs: 전체 데이터셋을 훈련시키는 횟수
# - lr_all: 학습률
param_grid = {
'n_epochs': [20, 30],
'lr_all': [0.005, 0.01],
'n_factors': [50, 100]
}
# 3-폴드 교차검증을 하고 두 개의 비용함수를 사용: RMSE와 MAE (Mean Absolute Error)
gs = GridSearchCV(SVD, param_grid, measures=['rmse', 'mae'], cv=3)
gs.fit(data)
print("Best RMSE score attained: ", gs.best_score['rmse'])
print("Best RMSE params: ", gs.best_params['rmse'])
print("Best MAE score attained: ", gs.best_score['mae'])
print("Best MAE params: ", gs.best_params['mae'])
'프로그래머스 데브 코스 > TIL' 카테고리의 다른 글
[6기] 프로그래머스 인공지능 데브코스 116일차 TIL (0) | 2023.12.25 |
---|---|
[6기] 프로그래머스 인공지능 데브코스 115일차 TIL (0) | 2023.12.24 |
[6기] 프로그래머스 인공지능 데브코스 113일차 TIL (0) | 2023.12.22 |
[6기] 프로그래머스 인공지능 데브코스 112일차 TIL (1) | 2023.12.21 |
[6기] 프로그래머스 인공지능 데브코스 111일차 TIL (0) | 2023.12.20 |