•  


GitHub - maciejkula/spotlight: Deep recommender models using PyTorch.
Skip to content

maciejkula/spotlight

Repository files navigation

image


image

image

image

image

image

image

Spotlight uses PyTorch to build both deep and shallow recommender models. By providing both a slew of building blocks for loss functions (various pointwise and pairwise ranking losses), representations (shallow factorization representations, deep sequence models), and utilities for fetching (or generating) recommendation datasets, it aims to be a tool for rapid exploration and prototyping of new recommender models.

See the full documentation for details.

Installation

conda
 install
 -
c
 maciejkula
 -
c
 pytorch
 spotlight

Usage

Factorization models

To fit an explicit feedback model on the MovieLens dataset:

from
 spotlight
.
cross_validation
 import
 random_train_test_split

from
 spotlight
.
datasets
.
movielens
 import
 get_movielens_dataset

from
 spotlight
.
evaluation
 import
 rmse_score

from
 spotlight
.
factorization
.
explicit
 import
 ExplicitFactorizationModel


dataset
 =
 get_movielens_dataset
(
variant
=
'100K'
)

train
, 
test
 =
 random_train_test_split
(
dataset
)

model
 =
 ExplicitFactorizationModel
(
n_iter
=
1
)
model
.
fit
(
train
)

rmse
 =
 rmse_score
(
model
, 
test
)

To fit an implicit ranking model with a BPR pairwise loss on the MovieLens dataset:

from
 spotlight
.
cross_validation
 import
 random_train_test_split

from
 spotlight
.
datasets
.
movielens
 import
 get_movielens_dataset

from
 spotlight
.
evaluation
 import
 mrr_score

from
 spotlight
.
factorization
.
implicit
 import
 ImplicitFactorizationModel


dataset
 =
 get_movielens_dataset
(
variant
=
'100K'
)

train
, 
test
 =
 random_train_test_split
(
dataset
)

model
 =
 ImplicitFactorizationModel
(
n_iter
=
3
,
                                   
loss
=
'bpr'
)
model
.
fit
(
train
)

mrr
 =
 mrr_score
(
model
, 
test
)

Sequential models

Recommendations can be seen as a sequence prediction task: given the items a user has interacted with in the past, what will be the next item they will interact with? Spotlight provides a range of models and utilities for fitting next item recommendation models, including

from
 spotlight
.
cross_validation
 import
 user_based_train_test_split

from
 spotlight
.
datasets
.
synthetic
 import
 generate_sequential

from
 spotlight
.
evaluation
 import
 sequence_mrr_score

from
 spotlight
.
sequence
.
implicit
 import
 ImplicitSequenceModel


dataset
 =
 generate_sequential
(
num_users
=
100
,
                              
num_items
=
1000
,
                              
num_interactions
=
10000
,
                              
concentration_parameter
=
0.01
,
                              
order
=
3
)

train
, 
test
 =
 user_based_train_test_split
(
dataset
)

train
 =
 train
.
to_sequence
()
test
 =
 test
.
to_sequence
()

model
 =
 ImplicitSequenceModel
(
n_iter
=
3
,
                              
representation
=
'cnn'
,
                              
loss
=
'bpr'
)
model
.
fit
(
train
)

mrr
 =
 sequence_mrr_score
(
model
, 
test
)

Datasets

Spotlight offers a slew of popular datasets, including Movielens 100K, 1M, 10M, and 20M. It also incorporates utilities for creating synthetic datasets. For example, generate_sequential generates a Markov-chain-derived interaction dataset, where the next item a user chooses is a function of their previous interactions:

from
 spotlight
.
datasets
.
synthetic
 import
 generate_sequential


# Concentration parameter governs how predictable the chain is;

# order determins the order of the Markov chain.

dataset
 =
 generate_sequential
(
num_users
=
100
,
                              
num_items
=
1000
,
                              
num_interactions
=
10000
,
                              
concentration_parameter
=
0.01
,
                              
order
=
3
)

Examples

  1. Rating prediction on the Movielens dataset .
  2. Using causal convolutions for sequence recommendations .
  3. Bloom embedding layers .

How to cite

Please cite Spotlight if it helps your research. You can use the following BibTeX entry:

@misc{kula2017spotlight,
  title={Spotlight},
  author={Kula, Maciej},
  year={2017},
  publisher={GitHub},
  howpublished={\url{https://github.com/maciejkula/spotlight}},
}

Contributing

Spotlight is meant to be extensible: pull requests are welcome. Development progress is tracked on Trello : have a look at the outstanding tickets to get an idea of what would be a useful contribution.

We accept implementations of new recommendation models into the Spotlight model zoo: if you've just published a paper describing your new model, or have an implementation of a model from the literature, make a PR!

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본