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

[Microsoft AzureML - 19] 추천시스템 심화 - 식당추천시스템

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

※ 이전글

[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

[Microsoft AzureML - 18] 영화 추천시스템 만들기 - II https://limitsinx.tistory.com/131

 


지난번에는 영화추천시스템을 간단하게 만들어보았는데요

 

이번에는 식당추천시스템을 만들어보도록 하겠습니다.

 

AzureML Block Diagram은 지난글에서 모두 다루었으니, 식당추천시스템은 바로 전체 diagram을 공개하겠습니다.

 

 

영화추천과 차이가 있는부분만 표시해보았습니다.

 

[Train Matchbox Recommendation]의 Input node는 3개인데요 각각 넣을 수 있는 데이터는 다음과 같습니다.

(왼쪽부터)

1. Training data of user-item-rating triples

2. Training dataset of user features

3. Training dataset of item features

 

즉, 1번은 학습시킬 데이터를 넣는공간이며, 2번은 고객들의 특징데이터, 3번은 식당의 특징데이터입니다.

이렇게 추가적인 데이터를 연결해줆으로써 더욱 정교한 추천시스템을 만들 수 있는데요

 

이렇게 고객데이터를 넣어준다고 무조건적으로 성능이 오르는것은 아닙니다 :(

 

오히려 필요없는 데이터를 넣어주는 경우 성능이 떨어질수가 있거든요

 

위의 Restaurant Data는 AzureML에서 내장하고 있는 샘플입니다.

 

 

예를들면, [Restaurant Customer data]를 [Visualize]해보겠습니다.

 

138명의 고객들을 19가지 특징별로 잘 나누어놓았는데요

 

식당을 추천해주기에는 굳이 없어도 될만한 데이터도 많은것 같습니다.

 

예를들면, Dress Performanmce(옷차림) / Smoker(흡연유무) /Drink level(주량)...

경우에따라서는 도움이 될 수 있겠지만, 일반적인 식당을 추천해주는데는 오히려 마이너스적인 요소가 될만한 데이터들도 많이 있습니다.

 

이런 데이터들을 전처리해서 정말 유의미한 데이터들을 토대로 추천시스템을 만든다면 성능이 향상될 수 있지만,

아무 데이터나 다넣어서 돌려보신다면.. 오히려 결과가 안좋아지는것을 확인하실 수 있습니다.

 

또한, Train Model의 Hyper Parameter가 우측박스에 표기되어있는데요

 

추천시스템의 내부 하이퍼파라미터를 이해하는데는 오래걸리지만, 직관적으로는 파라미터의 수가 클수록 대체적으로 시스템이 더욱 복잡해지고 정교해집니다. (반대로 연산에 필요한 시간은 길어지죠..)

 

이 값또한 잘 조절해주시며 학습을 진행해주시면 더욱 정교해진 추천시스템을 만드실 수 있습니다! 

 

 

 

댓글