본문 바로가기
DeepLearning Framework & Coding/Microsoft AzureML

[Microsoft AzureML - 18] 영화 추천시스템 만들기 - II

by 노마드공학자 2021. 7. 4.

※ 이전글

[Microsoft AzureML - 0] Intro https://limitsinx.tistory.com/113

[Microsoft AzureML - 1] 개발 환경 세팅 https://limitsinx.tistory.com/114

[Microsoft AzureML - 2] 학습할 데이터 불러오기 https://limitsinx.tistory.com/115

[Microsoft AzureML - 3] 데이터 전처리(Data pre-processing) - I https://limitsinx.tistory.com/116

[Microsoft AzureML - 4] 데이터 전처리(Data pre-processing) - II https://limitsinx.tistory.com/117

[Microsoft AzureML - 5] 학습모델 구현 및 검증 https://limitsinx.tistory.com/118

[Microsoft AzureML - 6] 여러 학습모델 동시에 성능비교 https://limitsinx.tistory.com/119

[Microsoft AzureML - 7] Binary Classification with Kaggle https://limitsinx.tistory.com/120

[Microsoft AzureML - 8] 모델 선정과 Hyper Parameter 자동튜닝 https://limitsinx.tistory.com/121

[Microsoft AzureML - 9] 학습데이터 CSV로 Export하기 https://limitsinx.tistory.com/122

[Microsoft AzureML - 10] 데이터 Feature Engineering https://limitsinx.tistory.com/123

[Microsoft AzureML - 11] 이미지 데이터학습 with Neural Network https://limitsinx.tistory.com/124

[Microsoft AzureML - 12] Train/Test 데이터 구분하기 https://limitsinx.tistory.com/125

[Microsoft AzureML - 13] Kaggle 사용법 https://limitsinx.tistory.com/126

[Microsoft AzureML - 14] Titanic Dataset 학습하기 https://limitsinx.tistory.com/127

[Microsoft AzureML - 15] Cross Validation https://limitsinx.tistory.com/128

[Microsoft AzureML - 16] 불균일 데이터 전처리(Sampling,SMOTE) https://limitsinx.tistory.com/129 

[Microsoft AzureML - 17] 영화 추천시스템 만들기 - I https://limitsinx.tistory.com/130


이전글 이후로, 계속 진행해보겠습니다 :)

이제부터는 추천시스템 학습모델을 구현해볼 예정입니다.

 

 

[Machine Learning] -> [Train] -> [Train Matchbox Recommendation] 블록을 옮겨줍니다.

 

기존에 분류/회귀를 진행할때는 [Train Model] 혹은 [Tune HyperParameter] 블록을 사용했었는데요,

 

Recommendation은 조금 결이 다른 학습모델이기에 다른 블록을 옮겨줍니다.

 

Train Matchbox Recommendation의 Property를 보시면,

 

3개의 값들이 있는데요, 이건 Decision Forest나 다른 모델들과 마찬가지로 추천시스템의 Hyper Parameter입니다. 이것들을 어떻게 조정해주느냐에 따라 결과값에 차이가 생깁니다.

 

그다음 분류/회귀때와 마찬가지로 Score->Evaluate를 해주어야 하는데요

 

[Machine Learning] -> [Score] -> [Score Matchbox Recommendation] 블록을 연결해주시면 됩니다.

 

여기서 Block property가 아주 중요한데요, Recommendation Prediction Kind라고해서 어떤걸 예측하고싶은지가 나옵니다.

 

여기서 [Rating Predictions]를 해주시면, 어떤 User가 안본영화를 만약 본다면 평점을 몇점으로줄지 예측한 데이터가 나오게되고, [Item Recommendations]를 클릭해주면 어떤영화를 보는게 좋을지 직접 추천해주는 데이터가 나오게 됩니다.

 

Item Recommendations를 선택하는 경우 밑에 Maximum / Minimum을 적는것이 있는데요

 

Maximum은 최대 몇개의 영화를 추천해줄것이냐? 라는거고, Minimum~은 최소 몇개이상의 영화를 본사람들의 데이터를 참조할것이냐? 라는것입니다. 즉, Minimum~의 수가 높을수록 참조할 수 있는 고객 데이터의 양은 점점 줄어들지만 정확도는 상승할 수 있습니다.

 

저는 둘다 한번에 보도록 세팅해보겠습니다!

 

최종적으로 [Evaluate Recommender] 블록까지 연결하면 완성됩니다!

 

저희가 구현한 추천시스템의 결과값을 한번 보겠습니다. :)

 

 

각각의 User들 데이터를 학습하여 그들이 좋아할만한 영화를 추천해주네요!

비슷한 영화취향을 가진 사람들의 데이터를 기반으로 추천해주는 결과물입니다.

 

해당영화를 안본 User가 만약 보게된다면 줄 평점을 예측한것입니다.

 

또한, 추천시스템은 NDCG라는 지표를 활용하여 정합성을 평가하는데요

 

NDCG란, Normalized Discounted Cumulative Gain으로 간단하게 말씀드리면 1에 가까울수록 성능이 좋은것입니다 :)

해당 추천시스템은 0.957로 아주 괜찮은 영화추천모델링을 구현했다고 볼수있겠네요 !

 

댓글