Recommenders 1.2.0이 새로 출시되었습니다!
마지막 릴리스 이후 많은 변화가 있었습니다. Python 3.8~3.11(약 1800개 테스트)에 대한 전체 테스트, 많은 알고리즘의 성능 업그레이드, 노트북 검토 및 기타 많은 개선 사항이 있습니다.
추천자의 목표는 연구원, 개발자 및 열성팬이 다양한 고전 및 최첨단 추천 시스템을 프로토타입화하고 실험하고 생산하도록 지원하는 것입니다.
Recommenders는 Linux Foundation of AI and Data 산하의 프로젝트입니다.
이 저장소에는 Jupyter 노트북으로 제공되는 추천 시스템 구축을 위한 예제와 모범 사례가 포함되어 있습니다. 예제에서는 다섯 가지 주요 작업에 대한 학습 내용을 자세히 설명합니다.
다양한 알고리즘에서 예상하는 형식으로 데이터 세트 로드, 모델 출력 평가, 교육/테스트 데이터 분할과 같은 일반적인 작업을 지원하기 위해 여러 유틸리티가 추천자에 제공됩니다. 자체 학습 및 사용자 정의를 위한 여러 가지 최첨단 알고리즘 구현이 포함되어 있습니다. 추천자 문서를 참조하세요.
저장소에 대한 자세한 개요는 위키 페이지의 문서를 참조하세요.
추천 시스템이 적용된 실제 시나리오 중 일부는 시나리오를 참조하세요.
환경 관리에는 conda를, 개발에는 VS Code를 권장합니다. 추천자 패키지를 설치하고 Linux/WSL에서 예제 노트북을 실행하려면 다음 안내를 따르세요.
# 1. Install gcc if it is not installed already. On Ubuntu, this could done by using the command
# sudo apt install gcc
# 2. Create and activate a new conda environment
conda create -n < environment_name > python=3.9
conda activate < environment_name >
# 3. Install the core recommenders package. It can run all the CPU notebooks.
pip install recommenders
# 4. create a Jupyter kernel
python -m ipykernel install --user --name < environment_name > --display-name < kernel_name >
# 5. Clone this repo within VSCode or using command line:
git clone https://github.com/recommenders-team/recommenders.git
# 6. Within VSCode:
# a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb;
# b. Select Jupyter kernel <kernel_name>;
# c. Run the notebook.
다른 플랫폼(예: Windows 및 macOS) 및 다양한 구성(예: GPU, Spark 및 실험적 기능)에서의 설정에 대한 자세한 내용은 설정 가이드를 참조하세요.
핵심 패키지 외에도 다음과 같은 몇 가지 추가 기능도 제공됩니다.
[gpu]
: GPU 모델을 실행하는 데 필요합니다.[spark]
: Spark 모델을 실행하는 데 필요합니다.[dev]
: 저장소 개발에 필요합니다.[all]
: [gpu]
| [spark]
| [dev]
[experimental]
: 철저하게 테스트되지 않았거나 설치 시 추가 단계가 필요할 수 있는 모델입니다. 아래 표에는 현재 저장소에서 사용할 수 있는 추천 알고리즘이 나열되어 있습니다. 노트북은 예제 열 아래에 빠른 시작으로 연결되어 실행하기 쉬운 알고리즘 예제를 보여주거나 심층 분석으로 알고리즘의 수학 및 구현을 자세히 설명합니다.
연산 | 유형 | 설명 | 예 |
---|---|---|---|
교번 최소제곱법(ALS) | 협업 필터링 | 확장성과 분산 컴퓨팅 기능에 최적화된 대규모 데이터 세트의 명시적 또는 암시적 피드백을 위한 행렬 분해 알고리즘입니다. PySpark 환경에서 작동합니다. | 빠른 시작 / 심층 분석 |
A2SVD(주의적 비동기 특이값 분해) * | 협업 필터링 | 주의 메커니즘을 사용하여 장기 및 단기 사용자 선호도를 모두 포착하는 것을 목표로 하는 순차 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
Cornac/Bayesian 개인화 순위(BPR) | 협업 필터링 | 암시적 피드백을 사용하여 항목 순위를 예측하기 위한 행렬 분해 알고리즘입니다. CPU 환경에서 작동합니다. | 심층 분석 |
Cornac/BiVAE(양측 변이 자동 인코더) | 협업 필터링 | 이중 데이터(예: 사용자 항목 상호 작용)에 대한 생성 모델입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
컨벌루션 시퀀스 임베딩 권장 사항(Caser) | 협업 필터링 | 사용자의 일반적인 선호도와 순차적 패턴을 모두 포착하는 것을 목표로 하는 컨볼루션 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
심층 지식 인식 네트워크(DKN) * | 콘텐츠 기반 필터링 | 뉴스나 기사 추천을 제공하기 위해 지식 그래프와 기사 임베딩을 통합한 딥 러닝 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 / 심층 분석 |
익스트림 딥 인수분해 기계(xDeepFM) * | 협업 필터링 | 사용자/항목 기능에 대한 암시적 및 명시적 피드백을 위한 딥 러닝 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
FastAI 임베딩 도트 바이어스(FAST) | 협업 필터링 | 사용자 및 항목에 대한 임베딩 및 편향이 포함된 범용 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
LightFM/인수분해 기계 | 협업 필터링 | 암시적 피드백과 명시적 피드백 모두를 위한 Factorization Machine 알고리즘입니다. CPU 환경에서 작동합니다. | 빠른 시작 |
LightGBM/그래디언트 부스팅 트리 * | 콘텐츠 기반 필터링 | 콘텐츠 기반 문제에서 빠른 훈련과 낮은 메모리 사용량을 위한 Gradient Boosting Tree 알고리즘입니다. CPU/GPU/PySpark 환경에서 작동합니다. | CPU의 빠른 시작/PySpark의 심층 분석 |
LightGCN | 협업 필터링 | 암시적 피드백을 예측하기 위해 GCN 설계를 단순화하는 딥러닝 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
GeoIMC * | 협업 필터링 | Riemannian Conjugate Gradient Optimization을 사용하여 사용자 및 항목 특성을 고려하고 기하학적 접근 방식을 따르는 행렬 완성 알고리즘입니다. CPU 환경에서 작동합니다. | 빠른 시작 |
그루 | 협업 필터링 | 순환 신경망을 사용하여 장기 및 단기 사용자 선호도를 모두 포착하는 것을 목표로 하는 순차 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
다항 VAE | 협업 필터링 | 사용자/항목 상호 작용을 예측하기 위한 생성 모델입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
장기 및 단기 사용자 표현(LSTUR)을 사용한 신경 추천 * | 콘텐츠 기반 필터링 | 장단기 사용자 관심도 모델링을 통해 뉴스 기사를 추천하는 신경 추천 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
NAML(주의적 다중 뷰 학습)을 통한 신경 추천 * | 콘텐츠 기반 필터링 | 세심한 다시점 학습을 통해 뉴스 기사를 추천하는 신경 추천 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
NCF(신경 협력 필터링) | 협업 필터링 | 사용자/항목 암시적 피드백에 대한 성능이 향상된 딥 러닝 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 / 심층 분석 |
개인화된 관심(NPA)을 통한 신경 추천 * | 콘텐츠 기반 필터링 | 개인화된 관심 네트워크를 통해 뉴스 기사를 추천하기 위한 신경 추천 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
NRMS(Multi-Head Self-Attention)를 사용한 신경 추천 * | 콘텐츠 기반 필터링 | Multi-head self-attention을 통해 뉴스 기사를 추천하기 위한 신경 추천 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
다음 항목 추천(NextItNet) | 협업 필터링 | 순차 패턴을 포착하는 것을 목표로 하는 확장된 컨볼루션 및 잔여 네트워크를 기반으로 하는 알고리즘입니다. 사용자/항목 상호 작용과 기능을 모두 고려합니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
제한된 볼츠만 기계(RBM) | 협업 필터링 | 명시적 또는 암시적 사용자/항목 피드백에 대한 기본 확률 분포를 학습하기 위한 신경망 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 / 심층 분석 |
리만 하위 행렬 완성(RLRMC) * | 협업 필터링 | 사용자/항목 상호 작용을 예측하기 위해 작은 메모리 소비로 리만 공액 기울기 최적화를 사용하는 행렬 분해 알고리즘입니다. CPU 환경에서 작동합니다. | 빠른 시작 |
추천을 위한 단순 알고리즘(SAR) * | 협업 필터링 | 암시적 사용자/항목 피드백을 위한 유사성 기반 알고리즘입니다. CPU 환경에서 작동합니다. | 빠른 시작 / 심층 분석 |
SASRec(Self-Attentive Sequential Recommendation) | 협업 필터링 | 순차적 추천을 위한 변환기 기반 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
단기 및 장기 선호 통합 추천자(SLi-Rec) * | 협업 필터링 | 주의 메커니즘, 시간 인식 컨트롤러 및 콘텐츠 인식 컨트롤러를 사용하여 장기 및 단기 사용자 선호도를 모두 캡처하는 것을 목표로 하는 순차 기반 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
다중 관심 인식 순차 사용자 모델링(SUM) * | 협업 필터링 | 사용자의 다양한 관심을 포착하는 것을 목표로 하는 향상된 메모리 네트워크 기반 순차 사용자 모델입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
SSEPT(Personalized Transformer)를 통한 순차적 추천 | 협업 필터링 | 사용자 임베딩을 통한 순차적 추천을 위한 변환기 기반 알고리즘. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
표준 VAE | 협업 필터링 | 사용자/항목 상호 작용을 예측하기 위한 생성 모델입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
서프라이즈/특이값 분해(SVD) | 협업 필터링 | 소규모 데이터 세트에서 명시적인 등급 피드백을 예측하기 위한 행렬 분해 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
용어 빈도 - 역문서 빈도(TF-IDF) | 콘텐츠 기반 필터링 | 텍스트 데이터 세트를 사용한 콘텐츠 기반 추천을 위한 간단한 유사성 기반 알고리즘입니다. CPU 환경에서 작동합니다. | 빠른 시작 |
보우팔 와빗(VW) * | 콘텐츠 기반 필터링 | 빠른 온라인 학습 알고리즘은 사용자 기능/컨텍스트가 지속적으로 변화하는 시나리오에 적합합니다. 온라인 학습을 위해 CPU를 사용합니다. | 심층 분석 |
넓고 깊은 | 협업 필터링 | 특징 상호작용을 기억하고 사용자 특징을 일반화할 수 있는 딥러닝 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 빠른 시작 |
xLearn/Factorization Machine(FM) 및 현장 인식 FM(FFM) | 협업 필터링 | 사용자/항목 기능으로 레이블을 예측하는 빠르고 메모리 효율적인 알고리즘입니다. CPU/GPU 환경에서 작동합니다. | 심층 분석 |
참고 : *는 Microsoft가 발명/기여한 알고리즘을 나타냅니다.
독립적이거나 배양 중인 알고리즘 및 유틸리티는 contrib 폴더의 후보입니다. 여기에는 핵심 저장소에 쉽게 맞지 않거나 코드를 리팩터링하거나 완성하고 필요한 테스트를 추가하는 데 시간이 필요한 기여가 포함됩니다.
연산 | 유형 | 설명 | 예 |
---|---|---|---|
SAR플러스 * | 협업 필터링 | Spark용 SAR 최적화 구현 | 빠른 시작 |
다양한 알고리즘을 평가하고 비교할 수 있는 방법을 설명하기 위해 벤치마크 노트북을 제공합니다. 이 노트북에서 MovieLens 데이터 세트는 계층화 분할을 사용하여 75/25 비율로 훈련/테스트 세트로 분할됩니다. 추천 모델은 아래의 각 협업 필터링 알고리즘을 사용하여 학습됩니다. 여기서는 문헌에 보고된 경험적 매개변수 값을 활용합니다. 순위 지표의 경우 k=10
(상위 10개 권장 항목)을 사용합니다. 표준 NC6s_v2 Azure DSVM(vCPU 6개, 112GB 메모리 및 P100 GPU 1개)에서 비교를 실행합니다. Spark ALS는 로컬 독립 실행형 모드에서 실행됩니다. 이 표에서는 15세대에 대한 알고리즘을 실행한 Movielens 100k의 결과를 보여줍니다.
알고 | 지도 | nDCG@k | 정밀도@k | 리콜@k | RMSE | 매 | R 2 | 설명된 분산 |
---|---|---|---|---|---|---|---|---|
루게릭병 | 0.004732 | 0.044239 | 0.048462 | 0.017796 | 0.965038 | 0.753001 | 0.255647 | 0.251648 |
비베 | 0.146126 | 0.475077 | 0.411771 | 0.219145 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
BPR | 0.132478 | 0.441997 | 0.388229 | 0.212522 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
FastAI | 0.025503 | 0.147866 | 0.130329 | 0.053824 | 0.943084 | 0.744337 | 0.285308 | 0.287671 |
LightGCN | 0.088526 | 0.419846 | 0.379626 | 0.144336 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
NCF | 0.107720 | 0.396118 | 0.347296 | 0.180775 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
특별 행정구 | 0.110591 | 0.382461 | 0.330753 | 0.176385 | 1.253805 | 1.048484 | -0.569363 | 0.030474 |
SVD | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
이 프로젝트는 기여와 제안을 환영합니다. 기여하기 전에 기여 지침을 참조하세요.
이 프로젝트는 모두를 환영하고 영감을 주는 커뮤니티를 조성하기 위해 이 행동 강령을 준수합니다.
이러한 테스트는 비동기 테스트를 계산하는 야간 빌드입니다. main
은 주요 브랜치이고, staging
개발 브랜치입니다. 우리는 추천자의 Python 유틸리티를 테스트하기 위해 pytest를 사용하고 노트북용 Recommenders 노트북 실행기를 사용합니다.
테스트 파이프라인에 대한 자세한 내용은 테스트 설명서를 참조하세요.
야간 빌드 테스트는 AzureML에서 매일 실행됩니다.
빌드 유형 | 나뭇가지 | 상태 | 나뭇가지 | 상태 | |
---|---|---|---|---|---|
리눅스 CPU | 기본 | 각색 | |||
리눅스 GPU | 기본 | 각색 | |||
리눅스 스파크 | 기본 | 각색 |