사용자 추천시스템
Environment
- MacOS, Windows
- Python 3.8
- Jupyter Notebook
- GitHub
Contributor
- 유치영
- 데이터를 추천/검색 알고리즘 성능 개선을 위한 다양한 전처리
- 전처리 코드 클래스화를 통해 새 데이터 통합 대응 등 end2end 모델을 위한 자동화
- 추천/검색 알고리즘 평가지표 개발
- 이루오
- 콘텐츠 기반 추천/검색 모델 탐색 및 선정 후 클래스화
- 데이터 입력부터 추천결과까지 end2end 자동화 모델을 위해 데이터클래스 + 모델클래스 파일 취합
- 고객 맞춤형 추천을 위해 모델 최적화 및 검색 필터링 정확도, 속도 개선
사용법
conda create -n recommend python=3.8
conda activate recommend
cd Recommendation_system
python -m pip install -r requirements.txt
python run.py
- 추천 결과 목록과 추천된 상품 이미지는 동일 디렉터리에
result_{검색아이템명}/
디렉터리를 자동생성 후 하위에.png
,.csv
파일로 저장
Demonstration
파일설명
preprocess.py
: 데이터 전처리 클래스run.py
(실행 파일) : 콘텐츠 기반 추천 검색 필터링test-result.ipynb
: 모델 실행 추천 결과 보고서 (쥬피터 파일)evaluation.ipynb
: 모델 평가 보고서 (쥬피터 파일)algorithm
디렉터리 내 실험 모델들contents-based.ipynb
: count vectorizer 콘텐츠 기반 필터링을 사용하여 cold-start 문제를 해결하기 위한 초기 유저에 대응CF-SGD.ipynb
: SGD 알고리즘을 활용한 잠재요인 협업 필터링을 기반으로 어느정도 유저에 대한 정보가 들어올 경우 콘텐츠 기반 필터링과 함께 하이브리드 추천시스템 대안CF-KNN.ipynb
: Item-based collaborative filtering ⇒ 특정 사용자가준 점수간의 유사한 상품을 찾아 추천 (하이브리드 추천시스템 대안)item2vec.ipynb
: cold-start 해결을 위한 embedding 알고리즘의 word2vec를 활용한 콘텐츠 기반 필터링hybrid.ipynb
: 콘텐츠 기반 필터링 + 잠재요인 협업 필터링 하이브리드 추천시스템
업데이트
2022-03-07
- 콘텐츠기반 필터링, 협업필터링 SGD, 협업필터링 KNN, item2vec 모델파일 추가
- 추가 데이터 적용
2022-03-08
- 단일, 복수 아이템에 대한 하이브리드 추천시스템 모델 추가
2022-03-10
- 텍스트 거리 유사도를 기반으로 한 콘텐츠 기반 필터링 모델 추가 (속도 개선 : 기존 20초-2분 -> 약 0.2초 / 1개 아이템에 대한 추천 검색)
2022-03-12
- 아이템 추천 시 아이템 카테고리보다 아이템 특징에 기반하여 추천하는 방향으로 알고리즘 개선 + 새로운 카테고리 태그를 통해 정교한 필터링을 위한 데이터 전처리
top-style
에 따라 아이템 추천 검색 성능 향상- 복수 아이템에 대한 추천 검색 알고리즘 개선 및 성능 향상
- factorization + 사용 가이드 (수정 중 - README 파일에 추가 예정)
2022-03-13
- 완성된 추천 시스템의 성능 개선을 정량적으로 확인할 수 있는 객관적 평가 지표 마련
2022-03-14
- 최종 데이터 => 모델 적용 및 테스트
2022-03-17
top-style
에 따른 가중치 적용- 아이템 검색 결과 개선 (precision : 0.2-0.3 => 0.79-0.82)
- 평가 지표 속도에 대한 개선
2022-03-18
2022-03-21
- 학습 데이터 유효성 확인을 위해 불필요한 카테거리 제거 후 같은 프로젝트 내 아이템이 1~2개만 있는 경우 제거
2022-03-23
2022-03-24
projectId
가 없는 신규product_id
에 대해 잘 추천할 수 있도록 데이터 전처리 고도화 및 모델 최적화-
[전처리 코드 상의 변화] - 유치영 파트
- 신규 데이터(프로젝트 내 포함되지 않은 아이템들)의 경우 =>
merge
시how=outer
적용 (신규 데이터들은projectId
가NaN
값을 갖게 됨 - 데이터의 안정성을 위해서 신규 데이터를 분리해서 적용한 후 concat 적용
- 신규 데이터(프로젝트 내 포함되지 않은 아이템들)의 경우 =>
-
[추천 시스템 알고리즘 상의 변화] - 이루오 파트
- 기존 데이터(프로젝트 내 포함된 아이템들)의 경우 =>
color
정보를 추가 - 신규 데이터(프로젝트에 포함되지 않은 아이템들)의 경우 =>
tag, category, name
정보를 이용해new_tag
생성
- 기존 데이터(프로젝트 내 포함된 아이템들)의 경우 =>
-
[추천 결과] - 공동 파트
- 정상적으로 작동 확인
- 하지만 신규데이터에 포함된
tag
정보가 회사이름만 포함한 경우와 없는 경우가 대다수이기 때문에 - 추천시 아이템간 유사도가 아주 낮음 =>
[0.125, 0.11764705882352944, 0.10526315789473684, 0.09999999999999998....]
-
[결론]
- 신규 데이터의 경우
tag
정보에 좀더 명확하게카테고리 정보, 색상정보, 가구의 세부 특징 정보, 스타일 정보
등이 포함되면 추천 성능이 개선될 것으로 예상됨.
- 신규 데이터의 경우
-
업데이트 예정
- 미정