-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
About design of recommendation feature, and things to decide while implementing it. #56
Comments
수고 많으셨습니다! 어느정도 잘 작동한다니 다행이네요. 제가 이쪽을 잘 알지는 못해서 당장 생각나는 것만 몇 가지 말씀 드리자면,
|
지금 이슈가
인것 같은데요 제 생각 모델은 update하는 부분은 모델이 만들어지고 나서 생각해도 될 것 같습니다. 매번 모델을 학습하고 수정해서 서비스해도 좋겠지만 다른 급한 문제가 많아 이를 먼저 해결하는 것이 좋을 것 같습니다.. 모델이 만들어지면 inference할 공간이 필요할 것 같은데 모델이 작으면 백엔드 서버에 두고 바로 inference해도 좋고 아니라면 개인 azure 서버에 두고 따로 백엔드 서버를 만드는 것도 좋을 것 같네요. 그리고 모델이 어느정도 디자인되었다고 하셨는데 혹시 작동까지 모두 되는건지 궁금합니다. 최대한 robust하게 만들고 적용한뒤 차차 수정하는 방향으로 개발하면 좋을 것 같습니다. |
|
@deploy-soon |
혹시 지금 cf cb 앙상블 모델을 개발하고 계신가요 아니면 cb만 하고 계신건가요? |
처음 생성하면 private로 되고 사용자가 설정할 때 public으로 바뀌게 될 것 같아요! |
@deploy-soon |
@rxwe |
지금 Recommendation feature을 일단 local에서 구현 중입니다. 현재 content-based와 collaborative filtering을 대략적으로 구현한 상태이고, 둘을 합친 hybrid model도 design한 상태입니다.
Backend가 아직 구현되지 않았기 때문에 간단한 데이터를 만들거나, 유사한 데이터셋을 이용해서 테스팅 중인데, 몇 가지 정해야 하는 것이 생겼습니다.
0. design
일단 현재 구상 중인 design은 content-based로 계산된 유사도, collaborative filtering에서 계산된 점수, block의 distribution에서 계산된 유사도, 이 세가지를 이용해서 추천을 하는 것입니다.
Content-based의 경우 현재 사용하느 universal-sentence encoder가 문장에 대해서는 어느 정도 잘 작동하는 것을 확인하였습니다. 또한 location에 대해서도 큰 도시나 나라에 대해서는 적절한 유사도를 보여주는 것을 확인하였습니다.
Collaborative filtering의 경우 implicit feedback을 이용한 방법을 채택하였습니다. Explicit feedback은 영화 평점과 같이 user의 평가가 점수로 환산되어지는 경우입니다. 하지만 Implicit feedback의 경우 그 plan을 보거나, comment를 다는 행위, 등 user의 행동만을 관찰할 수 있는 경우입니다. 해당 plan을 봤다고 해서 해당 plan을 마음에 들어한다는 보장이 없기 때문에 이를 반영한 모델링을 해줬습니다. 이 모델의 경우 view, like, commenting 등의 행위에 대해서 가중치를 줄 수 있기 때문에 더욱 좋을 것 같습니다.
block의 distribution의 경우, 해당 plan의 block distribution이 비슷한 경우 해당 여행의 성향이 비슷하다고 판단하여 반영하기로 하였습니다.
Design에 대해서 의견이 있으시면 댓글로 달아주세요!
1. Data update
일단 content-based의 경우 plan안에 있는 내용이 바뀔 때마다 embedding vector를 새로 계산해서 저장해야 합니다. embedding vector를 계산하는 것이 오래걸리지는 않지만 모델 로딩에 필요한 overhead가 상당 부분 차지합니다. 따라서 plan의 내용이 바뀔 때마다 바로바로 계산하는 것이 가능할지 모르겠고, 상당히 비효율적일 것 같습니다.
그래서 data update를 반영하여 embedding vector를 계산하는 것을 1시간에 한 번씩, 같이 적당한 주기를 가지고 하는 것에 대해 생각하고 있는데 의견 있으시면 답글 달아주시면 감사합니다.
또한 현재 작성중인 plan에 대해서도 추천을 해주는 것이 맞는지에 대한 의견도 궁금합니다!
2. model update
collaborative filtering의 경우 model update를 해줘야 하는데, model update 또한 시간이 걸리기 때문에, 1시간에 한번이나 하루에 한 번 update하는 것에 대해서 어떻게 생각하는지 궁금합니다.
3. recommendation time period
사용자에게 추천을 함에 있어서 1년전이나 2년전에 본 plan과 유사한 plan을 추천하는 것이 의미있는지 잘 모르겠습니다. 그 때 당시와 지금의 사용자가 필요한 것이 많이 다를 것 같다고 생각되서, 최근 한달 동안 본 plan을 대상으로만 추천을 해준다거나 하는 것이 더 좋을 것 같은데 이에 대해서 어떻게 생각하는지 궁금합니다.
4. Where does we calculate?
이건 제가 잘 몰라서 그런데, 시간이 다소 걸릴 수 있지만, 바로 계산해야할 필요는 없는 model update 같은 경우 어디서 진행해야하는지 잘 모르겠습니다. 따로 서버를 하나 더 파는 걸 까요?
The text was updated successfully, but these errors were encountered: