본문 바로가기

프로그래머스 데브 코스/TIL

[6기] 프로그래머스 인공지능 데브코스 114일차 TIL

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'])