Implicit feedback
- 사용자가 특정 행동을 취하지 않았더라도(예: 클릭, 구매) 해당 아이템에 대한 선호도를 추정하는 방법입니다.
- 예를 들어, 사용자가 영화를 시청한 경우에는 그 영화를 좋아하는 것으로 간주할 수 있습니다.
- 실제 비즈니스에서는 이러한 암묵적 피드백을 주로 사용하게 됩니다. (명시적 피드백은 데이터 구하기가 어렵고, 있다고 해도 편항이 있을수 있음)
- 단 명시적인 피드백(별점, 리뷰 등)을 잘 이용하면 추천 퀄리티가 높아질수 있습니다.
- Implicit feedback을 고려한 알고리즘이나 라이브러리가 별도 있습니다. 데이터 특성이나 인프라, 환경, 서비스형태 등에 따라 잘 선택해야합니다.
- https://orill.tistory.com/entry/Explicit-vs-Implicit-Feedback-Datasets
Business Rules
- 비즈니스 규칙은 매우 강력한 룰입니다. 이는 추천 알고리즘에 적용해야 하는 특정 규칙이나 제약 조건이며 전처리나 후처리에서 진행합니다.
- 예를 들어, 19세 이상의 컨텐츠를 청소년에게 추천하지 않는다거나, 곧 품절될 상품을 추천에서 제외한다거나 수많은 비즈니스 룰이 존재합니다.
- 주로 비즈니스 팀이나 담당자가 정하는 경우가 많고 이를 지키지 않으면 추후 고객 컴플레인이 올수도 있고 심지어 서비스 명성에 치명적일수 있습니다.
- 다만 너무 룰을 지키는데 치우쳐지면 추천할 아이템이 너무 없거나 범위가 협소하거나 추천 퀄리티 자체가 안 좋을수 있습니다.
- 적극적인 커뮤니케이션과 협업을 통해 모델 및 비즈니스룰 간의 균형을 잘 잡을 필요가 있습니다. (현업의 담당자와 친하게 지내야할 이유중 하나입니다)
Sparse matrix
- 같이 실습했던 것처럼 대부분 추천시스템에서 이용하는 데이터는 희소한 경우가 많습니다.
- 행렬분해기법을 이용하거나 유사도 기반(KNN-최근접 이웃 등) 방법을 통해 null을 어떻게든 채워서 진행하는 전략이 유용합니다.
- 추천 대상을 줄이는 대신 필터링을 진행(예 30회 이상 구매자 & 활성 사용자..)하여 최대한 dense한 형태로 만드는 것을 추천합니다.
- 위 조건에 제외된 사용자는 5강에서 배운 conten-based 와 같은 알고리즘으로 해결할수 있습니다. (기획자와 친하게 지내야할 이유입니다)
Large Data Size
- 실제 현업에서 다루어야할 데이터셋은 지금 다루어본 데이터셋과는 비교가 안될 정도로, 여러분의 상상을 뛰어넘을 정도로 방대하고 복잡합니다.
- 따라서 이 경우에는 데이터 엔지니어와 같은 분들의 도움을 받을수 밖에 없습니다. (스타트업이라면 혼자 알아서 처리해야할수도 있습니다)
- 데이터 처리시 직렬로는 처리가 되지 않는 경우가 많아 분산 처리(Apache Spark와 같은 분산 처리 프레임워크)를 사용하여 대규모 데이터를 처리합니다.
- PySpark 과 같은 언어의 문법을 별도로 배워야 합니다.
- https://wikidocs.net/26513
- 샘플링이 도움이 되기도 합니다. 만약 일부 샘플이 전체를 대변할수 있다면, 데이터 샘플링 기법을 활용하여 데이터의 일부만을 사용해 모델을 훈련하고 평가합니다.
Data Quaility
- 모델의 결과 퀄리티는 모델에 들어가는 인풋인 데이터셋이 거의다 결정한다고 해도 과언이 아닙니다.
- 데이터 품질이 낮으면 아무리 좋고 복잡한 알고리즘을 쓴다고 해도 추천 시스템 성능이 저하될 수 있습니다.
- 주로 오류로 수집된 데이터(이상치), 결측치, 중복 데이터 등이 문제를 일으킵니다.
- MLOPS 에서는 이러한 문제를 사전에 발견하고 조치하기 위해 많은 기술들이 나와있습니다.
- MLOPS 엔지니어와 협업하여 데이터 품질을 주기적으로 점검하고 유지 관리하는 프로세스를 설정합니다.
- https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning
Real time prediction > Stream 처리
- 실시간으로 추천을 생성해야 할 때, 대기 시간 없이 사용자의 행동에 빠르게 반응해야 합니다. (특히 유튜브와 같이 컨텐츠 추천이라면 필수입니다)
- Apache Kafka와 Spark Streaming 와 같이 스트리밍 처리를 사용하여 데이터를 실시간으로 수집하고 처리합니다.
- 모델 경량화도 도움이 될수 있습니다. 실시간 예측을 위해 모델을 경량화하여 빠른 응답 속도를 유지합니다.
AB TEST, MAB
- 추천시스템은 지속적으로 사용자의 피드백을 참고하여 개선해나가는 과정을 진행합니다.
- 이를 위해 AB TEST, MAB 등과 같은 실험 설계 방법론을 알아두고 진행해야합니다.
- https://docs-kr.hackle.io/docs/mab-vs-ab-test
Long-tail
- 특정 아이템 (주로 인기 있거나 추천이 자주되었거나)에 추천결과가 쏠려버리는 문제입니다.
- 이렇게 쏠리는 문제로 인해, 추천될 기회조차 없었던 아이템(신규 아이템)이 사용자에게 추천되지 않는 문제가 발생하여 diversity가 낮아질수 있습니다.
- 예를 들어 유튜브의 뉴스 추천 알고리즘에 지속적으로 노출되어 편향된 정치경향을 갖게 되고 이부분이 강화되는 것과 유사합니다.
- 해결을 위해 다소 강제로 쿼터나 슬롯을 할당하여 신규 아이템을 노출하는 기획을 하거나 MAB 를 도입하는 것이 도입될수 있습니다.
- 실험 계획은 매우 정교하게 이루어져야하며, 이에 대한 해석도 조심스럽게 진행해야할 필요가 많이 있습니다. (확증 편향을 조심해야합니다)
'코드 및 쿼리문 > 강의 - 메타코드M' 카테고리의 다른 글
Kaggle 데이터를 활용한 개인화 추천시스템(6) (0) | 2024.12.10 |
---|---|
Kaggle 데이터를 활용한 개인화 추천시스템(5) (1) | 2024.12.10 |
Kaggle 데이터를 활용한 개인화 추천시스템(4) (1) | 2024.12.05 |
Kaggle 데이터를 활용한 개인화 추천시스템(3) (2) | 2024.12.05 |
Kaggle 데이터를 활용한 개인화 추천시스템(2) (2) | 2024.12.05 |