1) 고객 페르소나 및 가설 정의
- buttom-up : 수집 데이터 기반
ex) LDA로 네 가지 범주로 나눔.
- top-down : 의사결정자, 전문가 기반 가설
ex) 마케팅, 인터넷 사업부, 출판 기획팀, 영업팀, 전략기획팀, 온라인 MD 등 다양한 부서에게 의견을 묻고 판단함.
- 모델러, 직관적 접근 기반
→ 이를 기반으로 최종 가설 설정
내부 정책상 문제, 기술적/적용 한계 가설, 부적절한 상품 추천, 데이터 보호 및 개인정보 침해, 회사 가치관 부합, 브랜드 이미지 훼손, 한시적 트렌드성 가설, 예산 초과 가설, 사용자 경험 저하 가설 등을 고려
2) 가설 기반 데이터 마트 설계/구축
쇼핑 : 고객데이터, 구매이력, 리뷰데이터, 장바구니
도서 : 상품데이터, 도서명 검색량 데이터
검색량 데이터, 상품데이터, 구매이력, 리뷰, 장바구니, 고객
외부 변수 : 폭염유무, 강수량, 대체공휴일, 검색량
추천 변수 추가 → 자연어 분석 기반 변수 생성, 내부 변수 확보, 외부 변수 추가, 변수 조합 추가, 표지 유사도, 논문리서치 기반 변수 추가
전처리 작업 → 결측치, 이상치, 데이터 정규화, 날짜 형식 통일, 중복 칼럼 제거, 수치/범주/연속형 체크, 원-핫 인코딩, 자연어 전처리(Tokenizing, Stem), 개인정보 보호 정책, 이미지 전처리(Noise, RGB, Edge), 데이터 불균형(SMOTE, Log), 데이터 밀도, KEY 컬럼 체크
변수 조합 → 책두께, 가격
할인 반응성 → 할인율, 장바구니
공휴일 독서 선호도 → 대체공휴일, 구매이력
기후별 독서 선호도 → 폭염유무, 강수량, 구매이력
3) 모델 리서치 및 모델링
추천 목적에 맞는 모델 서치 및 모델 선정
4) 실 서비스 중심 아키텍쳐 설계
검색 로그 데이터 급증, 데이터 소스 동기화 시간 다름, 모델 정확도 변화(Coldstart, 피처이슈 등), 모델 에러(패키지 이슈 등), 백엔드 엔지니얼 모델 이해도 부족, 고객 불만족 추천결과 업데이트 필요
모듈화 : 시스템을 작고 관리 가능한 부분으로 나누는 기법, 독립적 작동, 특정 기능 수행 → 코드 재사용성 증가, 유지 관리 용이
중복 최소화 : 코드 효율성 증가, 버그 가능성 감소
추상화 : 단순한 인터페이스로 표현, 복잡한 내부 로직 알 필요 없음, 이해하기 쉽고 내부 변경이 외부에 미치는 영향 최소화
데이터 파이프라인 : 배치 데이터 파이프라인(주기를 정해서), 실시간 처리 파이프라인(데이터가 하나씩 들어갈 때마다)
- 데이터 소스(db, api), 비즈니스 로직(비즈니스에 필요한 필터링, 데이터 정리 등), 목적지(db, dw, dl), 스케쥴러(cron, airflow, prefect 등)
모델 알고리즘 : cf, 협업 필터링, 딥러닝 기반 추천
사용자 인터페이스 : 추천 결과 제공, 웹/앱 ui, 이메일, 푸시 알림 등, 가장 적절한 시기와 방식으로 추천 제공해야 함.
MLOps : 머신러닝 모델의 개발, 운영을 효율적으로 관리하는 방법론, 머신러닝의 개발과 운영을 연결
- 모델 성능 모니터링, 모델 버전 관리(MLflow, DVC), 자동화(테스트, 배포)
- 데이터 관리(aws s3, google cloud storage, hadoop), 모델 학습 및 검증, 모델 배포(docker, 쿠버네티스)
CI/CD : 지속적 통합, 지속적 배포
Continuous Integration : 개발자가 코드 변경 사항을 공유 리포지토리에 정기적으로 병합하는 프로세스, 버그 찾아 수정, 소프트웨어 품질 개선
Continuous Delivery : 소프트웨어를 고객이 사용할 수 있는 상태로 유지하고, 신속하게 배포할 수 있도록, 고객에게 더 빠른 가치 제공, 시장 변화에 더 빠르게 대응
데이터 → 데이터 마트 → 모델
api로 결과값을 ui에 보내 user에게 보내줌.
5) A/B TEST 기획 및 진행
- 현업 기반 KPI 협의, 지표 선택, 목표 설정
KPI : 특정 목표 달성을 위해 중요한 성과 지표
최종 고객 페르소나 | 추천 목표 | KPI
통계적 KPI : 통계적으로 측정 가능함, 평균 세션 시간, 페이지 뷰 등
가시적 KPI : 사용자 경험과 직접 관련, 직관적이고 이미 현업 부서에서 사용하고 있음, 사용자 만족도, 이탈률, CTR 등
- 테스트 섹터 및 대조군 설정
섹터 정의 : 전체 사용자, 전체 화면 대상 OR 특정 섹터 집중
실험군/ 대조군 설정
샘플 크기 결정 : 실험군과 대조군에 속할 사용자 수 결정, 통계적 유의성을 확보할 수 있을 만큼 충분한 크기가 필요함.
- A/B 테스트 Tool 및 기간 선정
Google Optimize, VWO, Optimizely
도구 기능성(사용자 경험 테스트, 경로 분석, 히트맵 등 다양한 기능 제공하는지 검토), 비용, 사용자 친화성, 통합성(이미 사용하는 플랫폼 (GA)와 통합 가능한 지, 이를 많이 봄)
기간 산정 : 추천 모델링 및 배치테스트가 끝나는 날
- 실험 진행 및 데이터 수집 : 추천 알고리즘 성능 비교, 다른 추천 제공하고 이에 대한 유저 반응 (클릭률, 구매율 등) 수집
유저 행동 데이터 : 사용자의 행동 패턴을 분석
서베이 데이터 : 사용자로부터 직접적인 피드백 받기 위해 설문조사해서 그 결과 수집
사용자 데모그래픽 정보 : 나이, 지역, 성별 등 정보
장치 및 브라우저 정보 : 사용자가 어떤 장치 사용하는지, 사용자 경험 최적화
- 결과 분석 및 해석을 바탕으로 한 의사결정 : 수집 데이터를 분석해 어떤 추천 알고리즘이 더 나은 성능 보였는지 판단
→ 우수한 알고리즘 채택 OR 두 알고리즘 합쳐 새로운 알고리즘 만들기
- 결과 공유 및 피드백 수집 : 팀원들과 공유, 그들로부터 피드백 수집
ex) 마케팅 기획팀(사용자 행동 파악), 고객 서비스팀(고객 만족도, 불만사항, 제안사항 파악), 온라인 비즈니스 기획팀(웹사이트 ui/ux, 사용자 경험), 출판 기획팀(선호도나 트렌드 파악) 등
A/B 테스트 주요 한계
고정효과 : 테스트 기간 해당 저자의 새로운 책이 출시되었다면 결과 왜곡, 두 가지 버전 단순 비교이기에 다른 변수가 결과에 미치는 영향 무시
상호작용 효과 : 서로 다른 요소들이 복합적으로 작용하여 결과에 미치는 경우
외부적 요인 : 내부적 변수만을 제어하고 이를 기반으로 결과 도출해 완전히 배제할 수 없음.
시간의 변동성 : 시간에 따라 변화할 수 있기에 이를 실시간 서비스 배포에 반영하기 힘듦.
다중 비교 문제 : 여러 개 도서 추천 알고리즘 동시 테스트할 때 한 알고리즘이 다른 알고리즘 보다 더 나은 성능 보인 것처럼 봉리 수 있으나 통계적으로 유의미해보이는 결과가 나올 확률이 높아지는 다중 비교 문제
P-해킹 : p-value 여러 통계적 방법 동시 적용하거나 데이터를 여러 가지 방법으로 얻고싶은 방향으로 이끔.
Simpson 역설 : 각 개별 사용자에 대한 알고리즘 성능이 좋지 않음에도 불구하고 전체 사용자를 대상으로 할 때는 효과가 좋게 나올 수 있음. 부분적인 결과가 전체적인 결과와 서로 다른 방향을 가리킬 수 있음.
- 실험 설계와 결과 해석에서 주의점
랜덤화, 결과의 일반화, 선택 편향, 데이터 품질
6) 실시간 서비스 배포
모델 서빙 : 학습한 후 실제 운영 환경에 사용자 요청에 따라 예측을 제공하는 과정 의미
- 모델 서빙의 종류 및 주요 요소
배치 모델 서빙, 실시간 모델 서빙
- REST API를 통한 모델 서빙 실습
웹 서비스에서 널리 사용되는 방식, 엔드포인트에 GET 또는 POST 요청을 보내고 서버는 해당 요청에 따라 모델을 통해 예측을 생성하고 그 결과를 반환함.
- Fast API : 많이 사용하는 API
장점 : 빠른 속도, 쉬운 테스트, 자동 API 문서화, 비동기 지원
단점 : 생태계가 상대적으로 작용, 학습 곡선
- Airflow DAG : 데이터마트 업데이트
데이터 마트 업데이트 태스크 설정 : 각 태스크는 독립적 실행
스케쥴링 및 실행 : DAG는 지정된 스케쥴에 따라 실행
모니터링 및 알람 : Airflow는 DAG와 각 태스크의 실행 상태를 모니터링
- 실시간 서비스 모니터링
Prometheus, Grafana : 시스템과 사용자 행동 모니터링, 추천 효과, 시스템 성능, 에러 발생률, API 응답 시간 등 Slack으로 알람, 아니면 대시보드 생성
출처 : 패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 구현 강의
'이론' 카테고리의 다른 글
[알고리즘 코테] 이진 탐색 (0) | 2024.02.07 |
---|---|
[알고리즘 코테] DFS/BFS (0) | 2024.02.03 |
[알고리즘 코테] 정렬 (1) | 2023.11.19 |
[알고리즘 코테] 그리디 (0) | 2023.11.12 |
[패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 강의 Chapter06. 추천시스템이 필요한 이유] (0) | 2023.10.29 |