Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Staging to main: LF announcement and GRU update #2006

Merged
merged 38 commits into from
Oct 10, 2023
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
42e6982
Replacing references GRU4Rec to GRU
miguelgfierro Sep 27, 2023
b5f0f3b
Replacing references GRU4Rec to GRU
miguelgfierro Sep 27, 2023
4ba66e8
Replacing references GRU4Rec in config files
miguelgfierro Sep 27, 2023
efd001a
Update references
miguelgfierro Sep 28, 2023
48ebb26
Merge pull request #2000 from recommenders-team/gru_fix
miguelgfierro Sep 28, 2023
3bb666c
datasets with Sgit st!
miguelgfierro Sep 19, 2023
dbbbb8b
Added init to fix import error
miguelgfierro Sep 20, 2023
92eb223
update repo url
miguelgfierro Sep 20, 2023
3738f03
ignore xlearn
miguelgfierro Sep 20, 2023
0ce2c79
Add init files
miguelgfierro Sep 20, 2023
011153d
update info from MS
miguelgfierro Sep 20, 2023
d1fb6dc
update info from MS
miguelgfierro Sep 20, 2023
dc7f6a7
:memo:
miguelgfierro Sep 20, 2023
457312d
Minor syntax in README
anargyri Sep 20, 2023
ff4634d
:memo:
miguelgfierro Sep 22, 2023
ccb7b75
Announcement LF
miguelgfierro Sep 28, 2023
bfe470c
Update email
miguelgfierro Sep 29, 2023
b7ee345
Update README.md
anargyri Sep 28, 2023
33104a1
Merge branch 'staging' into lf
miguelgfierro Sep 29, 2023
4a76743
security
miguelgfierro Sep 29, 2023
dc459bb
license and contribution notice
miguelgfierro Sep 29, 2023
6de8ce9
update author link
miguelgfierro Sep 29, 2023
63b352b
Add new code of conduct from LF
miguelgfierro Sep 29, 2023
89cbebb
Merge branch 'lf' of github.com:recommenders-team/recommenders into lf
miguelgfierro Sep 29, 2023
3643818
Merge pull request #2003 from recommenders-team/lf
miguelgfierro Sep 29, 2023
2576273
Delete conda.md
miguelgfierro Sep 29, 2023
17516c8
Merge pull request #2007 from recommenders-team/miguelgfierro-patch-1
miguelgfierro Sep 29, 2023
79e61ca
Update readme LF feedback @wutaomsft
miguelgfierro Oct 4, 2023
1b6ca64
Update NEWS.md
miguelgfierro Oct 5, 2023
0a40ee0
Update README.md
miguelgfierro Oct 5, 2023
793ef41
Merge pull request #2008 from recommenders-team/miguel/readme_ms
miguelgfierro Oct 5, 2023
2beb9dd
:memo:
miguelgfierro Oct 6, 2023
2036105
remove unused input
miguelgfierro Oct 6, 2023
512581c
:memo:
miguelgfierro Oct 6, 2023
6a8d770
no need to output the logs twice
miguelgfierro Oct 6, 2023
6af75fd
packages
miguelgfierro Oct 6, 2023
a1a1785
skipping flaky test
miguelgfierro Oct 6, 2023
d3da0fe
Merge pull request #2009 from recommenders-team/miguel/review_azureml…
miguelgfierro Oct 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion AUTHORS.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

Contributors to Recommenders
============================
Recommenders is developed and maintained by a community of people interested in exploring recommendation algorithms and how best to deploy them in industry settings. The goal is to accelerate the workflow of any individual or organization working on recommender systems. Everyone is encouraged to contribute at any level to add and improve the implemented algorithms, notebooks and utilities.

<p align="center">
<img src="https://contributors-img.web.app/image?repo=microsoft/recommenders" width = 500/>
<img src="https://contributors-img.web.app/image?repo=recommenders-team/recommenders" width = 500/>
</p>

Maintainers (sorted alphabetically)
Expand Down
45 changes: 39 additions & 6 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,42 @@
# Microsoft Open Source Code of Conduct
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
# Recommenders Code of Conduct

Resources:
This code of conduct outlines expectations for participation in the Recommenders open source community, as well as steps for reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all. People violating this code of conduct may be banned from the community. Our open source community strives to:

- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
* **Be friendly and patient**: Remember you might not be communicating in someone else's primary spoken or programming language, and others may not have your level of understanding.

* **Be welcoming**: Our community welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, color, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.

* **Be respectful**: We are a world-wide community of professionals, and we conduct ourselves professionally. Disagreement is no excuse for poor behavior and poor manners. Disrespectful and unacceptable behavior includes, but is not limited to:
1. Violent threats or language.
1. Discriminatory or derogatory jokes and language.
1. Posting sexually explicit or violent material.
1. Posting, or threatening to post, people's personally identifying information ("doxing").
1. Insults, especially those using discriminatory terms or slurs.
1. Behavior that could be perceived as sexual attention.
1. Advocating for or encouraging any of the above behaviors.

* **Understand disagreements**: Disagreements, both social and technical, are useful learning opportunities. Seek to understand the other viewpoints and resolve differences constructively.

* **Remember that we’re different**. The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Focus on helping to resolve issues and learning from mistakes.

* This code is not exhaustive or complete. It serves to capture our common understanding of a productive, collaborative environment. We expect the code to be followed in spirit as much as in the letter.

## Reporting Code of Conduct Issues

We encourage all communities to resolve issues on their own whenever possible. This builds a broader and deeper understanding and ultimately a healthier interaction. In the event that an issue cannot be resolved locally, please feel free to report your concerns by contacting [email protected]. In your report please include:

1. Your contact information.
1. Names (real, usernames or pseudonyms) of any individuals involved. If there are additional witnesses, please include them as well.
1. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g. a mailing list archive or a public chat log), please include a link or attachment.
1. Any additional information that may be helpful.

All reports will be reviewed by a multi-person team and will result in a response that is deemed necessary and appropriate to the circumstances. Where additional perspectives are needed, the team may seek insight from others with relevant expertise or experience. The confidentiality of the person reporting the incident will be kept at all times. Involved parties are never part of the review team.

Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the review team may take any action they deem appropriate, including a permanent ban from the community.

*This code of conduct is based on the [template](http://todogroup.org/opencodeofconduct) established by the [TODO Group](http://todogroup.org/) and used by numerous other large communities and the Scope section from the [Contributor Covenant version 1.4](http://contributor-covenant.org/version/1/4/).*
9 changes: 7 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# Contribution Guidelines

Contributions are welcomed! Here's a few things to know:
Expand Down Expand Up @@ -32,9 +37,9 @@ Once the features included in a [milestone](https://github.com/microsoft/recomme

We strive to maintain high quality code to make the utilities in the repository easy to understand, use, and extend. We also work hard to maintain a friendly and constructive environment. We've found that having clear expectations on the development process and consistent style helps to ensure everyone can contribute and collaborate effectively.

Please review the [coding guidelines](https://github.com/Microsoft/Recommenders/wiki/Coding-Guidelines) wiki page to see more details about the expectations for development approach and style.
Please review the [coding guidelines](https://github.com/recommenders-team/recommenders/wiki/Coding-Guidelines) wiki page to see more details about the expectations for development approach and style.

Apart from the official [Code of Conduct](CODE_OF_CONDUCT.md) developed by Microsoft, in the Recommenders team we adopt the following behaviors, to ensure a great working environment:
Apart from the official [Code of Conduct](CODE_OF_CONDUCT.md), in Recommenders team we adopt the following behaviors, to ensure a great working environment:

#### Do not point fingers
Let’s be constructive.
Expand Down
5 changes: 5 additions & 0 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# Glossary

* **A/B testing**: Methodology to evaluate the performance of a system in production. In the context of Recommendation Systems it is used to measure a machine learning model performance in real-time. It works by randomizing an environment response into two groups A and B, typically half of the traffic goes to the machine learning model output and the other half is left without model. By comparing the metrics from A and B branches, it is possible to evaluate whether it is beneficial the use of the model or not. A test with more than two groups it is named Multi-Variate Test.
Expand Down
9 changes: 9 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# What's New

## Update October 3, 2023

We are pleased to announced that we have joined the [Linux Foundation of AI and Data](https://lfaidata.foundation/) (LF AI & Data). With this move, our objective is to keep building an ecosystem to sustain open source innovation and collaboration in recommendation systems.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is important to note prominently in the home page that that this repo used to be "Microsoft Recommenders", so people are sure that they don't get redirected by malware, etc.

Suggest to change the Update to be: "We are pleased to announce that this repository (formerly known as Microsoft Recommenders, https://github.com/microsoft/recommenders)", has joined the Linux Foundation of AI and Data (LF AI & Data)! The new organization, recommenders-team, reflects this change.

We hope this move makes it easy for anyone to contribute! Our objective continues to be building an ecosystem and a community to sustain open source innovations and collaborations in recommendation systems. "

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be good to add a few words about the active work going on at the repo, e.g., support of newer version of python, etc.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@miguelgfierro did you see these comments?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wutaomsft new PR: #2008 please review


## Update August 18, 2023

We moved to a new organization! Now to access the repo, instead of going to https://github.com/microsoft/recommenders, you need to go to https://github.com/recommenders-team/recommenders. The old URL will still resolve to the new one, but we recommend you to update your bookmarks.
Expand Down
19 changes: 12 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# Recommenders

[![Documentation Status](https://readthedocs.org/projects/microsoft-recommenders/badge/?version=latest)](https://microsoft-recommenders.readthedocs.io/en/latest/?badge=latest)

<img src="https://raw.githubusercontent.com/recommenders-team/artwork/main/color/recommenders_color.svg" width="800">

## What's New (August, 2023)
## What's New (October, 2023)

We moved to a new organization! Now to access the repo, instead of going to https://github.com/microsoft/recommenders, you need to go to https://github.com/recommenders-team/recommenders. The old URL will still resolve to the new one, but we recommend that you update your bookmarks.
We are pleased to announced that we have joined the [Linux Foundation of AI and Data](https://lfaidata.foundation/) (LF AI & Data). With this move, our objective is to keep building an ecosystem to sustain open source innovation and collaboration in recommendation systems.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as above.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR here: #2008


Starting with release 0.6.0, Recommenders has been available on PyPI and can be installed using pip!
We moved to a new organization! Now to access the repo, instead of going to https://github.com/microsoft/recommenders, you need to go to https://github.com/recommenders-team/recommenders. The old URL will still resolve to the new one, but we recommend that you update your bookmarks.

Here you can find the PyPi page: https://pypi.org/project/recommenders/
## Introduction

Here you can find the package documentation: https://microsoft-recommenders.readthedocs.io/en/latest/
Recommenders objective is to assist researchers, developers and enthusiasts in prototyping, experimenting with and bringing to production a range of classic and state-of-the-art recommendation systems.

## Introduction
Recommenders is a project under the [Linux Foundation of AI and Data](https://lfaidata.foundation/projects/).

This repository contains examples and best practices for building recommendation systems, provided as Jupyter notebooks. The examples detail our learnings on five key tasks:

Expand Down Expand Up @@ -82,7 +87,7 @@ The table below lists the recommender algorithms currently available in the repo
| LightGBM/Gradient Boosting Tree<sup>*</sup> | Content-Based Filtering | Gradient Boosting Tree algorithm for fast training and low memory usage in content-based problems. It works in the CPU/GPU/PySpark environments. | [Quick start in CPU](examples/00_quick_start/lightgbm_tinycriteo.ipynb) / [Deep dive in PySpark](examples/02_model_content_based_filtering/mmlspark_lightgbm_criteo.ipynb) |
| LightGCN | Collaborative Filtering | Deep learning algorithm which simplifies the design of GCN for predicting implicit feedback. It works in the CPU/GPU environment. | [Deep dive](examples/02_model_collaborative_filtering/lightgcn_deep_dive.ipynb) |
| GeoIMC<sup>*</sup> | Hybrid | Matrix completion algorithm that has into account user and item features using Riemannian conjugate gradients optimization and following a geometric approach. It works in the CPU environment. | [Quick start](examples/00_quick_start/geoimc_movielens.ipynb) |
| GRU4Rec | Collaborative Filtering | Sequential-based algorithm that aims to capture both long and short-term user preferences using recurrent neural networks. It works in the CPU/GPU environment. | [Quick start](examples/00_quick_start/sequential_recsys_amazondataset.ipynb) |
| GRU | Collaborative Filtering | Sequential-based algorithm that aims to capture both long and short-term user preferences using recurrent neural networks. It works in the CPU/GPU environment. | [Quick start](examples/00_quick_start/sequential_recsys_amazondataset.ipynb) |
| Multinomial VAE | Collaborative Filtering | Generative model for predicting user/item interactions. It works in the CPU/GPU environment. | [Deep dive](examples/02_model_collaborative_filtering/multi_vae_deep_dive.ipynb) |
| Neural Recommendation with Long- and Short-term User Representations (LSTUR)<sup>*</sup> | Content-Based Filtering | Neural recommendation algorithm for recommending news articles with long- and short-term user interest modeling. It works in the CPU/GPU environment. | [Quick start](examples/00_quick_start/lstur_MIND.ipynb) |
| Neural Recommendation with Attentive Multi-View Learning (NAML)<sup>*</sup> | Content-Based Filtering | Neural recommendation algorithm for recommending news articles with attentive multi-view learning. It works in the CPU/GPU environment. | [Quick start](examples/00_quick_start/naml_MIND.ipynb) |
Expand Down
18 changes: 18 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# Security Policy

## Reporting a Vulnerability
If you think you have found a security vulnerability, please send a report to [email protected].

We don't currently have a PGP key, unfortunately.

A Recommenders committer will send you a response indicating the next steps in handling your report. After the initial reply to your report, the committer will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.

Important: Please don't disclose the vulnerability before it has been fixed and announced, to protect our users.

## Security announcements
Please subscribe to the [announcements mailing list](https://lists.lfaidata.foundation/g/recommenders-announce), where we post notifications and remediation details for security vulnerabilities.
5 changes: 5 additions & 0 deletions SETUP.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
<!--
Copyright (c) Recommenders contributors.
Licensed under the MIT License.
-->

# Setup Guide

The repo, including this guide, is tested on Linux. Where applicable, we document differences in [Windows](#windows-specific-instructions) and [MacOS](#macos-specific-instructions) although
Expand Down
4 changes: 2 additions & 2 deletions docs/source/models.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ Caser
.. automodule:: recommenders.models.deeprec.models.sequential.caser
:members:

GRU4Rec
GRU
--------------
.. automodule:: recommenders.models.deeprec.models.sequential.gru4rec
.. automodule:: recommenders.models.deeprec.models.sequential.gru
:members:

NextItNet
Expand Down
4 changes: 2 additions & 2 deletions examples/00_quick_start/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ In this directory, notebooks are provided to perform a quick demonstration of di
| [sar_azureml_designer](sar_movieratings_with_azureml_designer.ipynb) | MovieLens | Python CPU | An example of how to implement SAR on [AzureML Designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer). |
| [a2svd](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use A2SVD [11] to predict a set of movies the user is going to interact in a short time. |
| [caser](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use Caser [12] to predict a set of movies the user is going to interact in a short time. |
| [gru4rec](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use GRU4Rec [13] to predict a set of movies the user is going to interact in a short time. |
| [gru](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use GRU [13] to predict a set of movies the user is going to interact in a short time. |
| [nextitnet](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use NextItNet [14] to predict a set of movies the user is going to interact in a short time. |
| [sli-rec](sequential_recsys_amazondataset.ipynb) | Amazon | Python CPU, GPU | Use SLi-Rec [11] to predict a set of movies the user is going to interact in a short time. |
| [wide-and-deep](wide_deep_movielens.ipynb) | MovieLens | Python CPU, GPU | Utilizing Wide-and-Deep Model (Wide-and-Deep) [5] to predict movie ratings in a Python+GPU (TensorFlow) environment.
Expand All @@ -38,5 +38,5 @@ In this directory, notebooks are provided to perform a quick demonstration of di
[10] _NPA: Neural News Recommendation with Personalized Attention_, Chuhan Wu, Fangzhao Wu, Mingxiao An, Jianqiang Huang, Yongfeng Huang and Xing Xie. KDD 2019, ADS track.<br>
[11] _Adaptive User Modeling with Long and Short-Term Preferences for Personailzed Recommendation_, Zeping Yu, Jianxun Lian, Ahmad Mahmoody, Gongshen Liu and Xing Xie, IJCAI 2019.<br>
[12] _Personalized top-n sequential recommendation via convolutional sequence embedding_, Jiaxi Tang and Ke Wang, ACM WSDM 2018.<br>
[13] _Session-based Recommendations with Recurrent Neural Networks_, Balazs Hidasi, Alexandros Karatzoglou, Linas Baltrunas and Domonkos Tikk, ICLR 2016.<br>
[13] _Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation_, Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio, arXiv preprint arXiv:1406.1078. 2014.<br>
[14] _A Simple Convolutional Generative Network for Next Item Recommendation_, Fajie Yuan, Alexandros Karatzoglou, Ioannis Arapakis, Joemon M. Jose and Xiangnan He, WSDM 2019. <br>
4 changes: 2 additions & 2 deletions examples/00_quick_start/sasrec_amazon.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"\n",
"![image.png](attachment:image.png)\n",
"\n",
"This is a class of sequential recommendation that uses Transformer \\[2\\] for encoding the users preference represented in terms of a sequence of items purchased/viewed before. Instead of using CNN (Caser \\[3\\]) or RNN (GRU4Rec \\[4\\], SLI-Rec \\[5\\] etc.) the approach relies on Transformer based encoder that generates a new representation of the item sequence. Two variants of this Transformer based approaches are included here, \n",
"This is a class of sequential recommendation that uses Transformer \\[2\\] for encoding the users preference represented in terms of a sequence of items purchased/viewed before. Instead of using CNN (Caser \\[3\\]) or RNN (GRU \\[4\\], SLI-Rec \\[5\\] etc.) the approach relies on Transformer based encoder that generates a new representation of the item sequence. Two variants of this Transformer based approaches are included here, \n",
"\n",
"- Self-Attentive Sequential Recommendation (or SASRec [1]) that is based on vanilla Transformer and models only the item sequence and\n",
"- Stochastic Shared Embedding based Personalized Transformer or SSE-PT [6], that also models the users along with the items. \n",
Expand Down Expand Up @@ -456,7 +456,7 @@
"\n",
"\\[3\\] Jiaxi Tang and Ke Wang. 2018. Personalized top-n sequential recommendation via convolutional sequence embedding. In Proceedings of the Eleventh ACM International Conference on Web Search and Data Mining. ACM, 565–573.\n",
"\n",
"\\[4\\] Balázs Hidasi, Alexandros Karatzoglou, Linas Baltrunas, and Domonkos Tikk. 2015. Session-based recommendations with recurrent neural networks. arXiv preprint arXiv:1511.06939 (2015)\n",
"\\[4\\] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. arXiv preprint arXiv:1406.1078. 2014.\n",
"\n",
"\\[5\\] Zeping Yu, Jianxun Lian, Ahmad Mahmoody, Gongshen Liu, Xing Xie. Adaptive User Modeling with Long and Short-Term Preferences for Personailzed Recommendation. In Proceedings of the 28th International Joint Conferences on Artificial Intelligence, IJCAI’19, Pages 4213-4219. AAAI Press, 2019.\n",
"\n",
Expand Down
Loading