Create new recommendation strategy for AppRecommender
Description of the project: AppRecommender is a recommender system application for Debian packages. Considering the high number of packages that are found on Debian distributions, this project aims at helping users find the right package for their needs, without a great manual effort. AppRecommender can perform this task with three different approaches
* Content based: The recommendation is done is based on package description. Therefore, the most significant terms of the user installed packages are used to filter new packages for a recommendation.
* Collaborative: The recommendation is done by selecting packages from other users with similar packages as the user running the application. This approach use data from popularity-contest to find the users with similar packages.
* Hybrid: This strategy is a combination of both content based and collaborative approach. Its goal is to balance the weakness found on the use of a single recommendation strategy
This project aims at creating a new strategy for AppRecommender. The new approach would only be triggered when the user installs a new package. AppRecommender would them use this contextual information and mix it together with the user already installed packages. Therefore, this new strategy focus on recommending new packages that are related to the package being installed while also taking in consideration to user preferences. As an example, if the user is a python developer, with several python packages installed on his machine, and he is currently installing vim, after the installation process is done, AppRecommender would then recommend vim plugins for python development. In order to test this proposed approach, AppRecommender will be integrated with apt and added to the Debian archive.
Confirmed Mentor: Tassia
Confirmed co-mentors: Terceiro
How to contact the mentor: <tassia|terceiro> at debian.org
Deliverables of the project: Implement a new recommendation strategy for when a user is currently installing a package (Ideally, integrate AppRecommender with at least apt to test this approach).
Desirable skills: The student must have a background on python and recommender systems, specially content-based ones.
What the intern will learn: The intern will learn about data science, recommender systems and how to integrate application with apt.
Student Application
Name: Luciano Prestes Cavalcanti
Contact/Email/IRC nick: email: lucianopcbr@gmail.com, IRC: lucianopc (freenode/OFTC), Github: https://github.com/LucianoPC
Background: Senior software engineering student at the University of Brasilia. Part time contributor to some open source projects. Programming languages I’m familiar with are ruby and python. Among areas I have interest on includes recommentation systems, machine learning and games.
- On my freshman year I first had experiencie with GNU/Linux, more specifically Ubuntu 12.04 LTS. After a short period of time, I have started using Debian 7, which I’ve been using since then.
Currently, I work on an university project. In this project, we are creating the new portal of the Brazilian public software, where I have contact with open source software and their communities. Among these software, I contribute with Noosfero, Colab and Django-Reverseproxy, and the Brazilian public software portal itself.
- On my freshman year I first had experiencie with GNU/Linux, more specifically Ubuntu 12.04 LTS. After a short period of time, I have started using Debian 7, which I’ve been using since then.
I have been working with a classmate on our bachelor thesis since August 2015, and we chose to work with AppRecommender, a recommendation system for Debian packages. This happened because we had great interest in working with machine learning, and wanted to help Debian and its community. Our bachelor thesis added new recommendation strategies to AppRecommender. One of the strategies is what we call deterministic strategy, where we recommend packages using a mathematical formula based on the most recent packages used by the user. The other strategy is using machine learning to filter packages being recommended to the user based on the most recent user packages. Future plans include making AppRecommender a package easier to use individually or along with other related packages.
Project title: Create new recommendation strategy for AppRecommender
Project details: This project aims at creating a new strategy for AppRecommender. The new approach would only be triggered when the user installs a new package. This will be used as contextual information, combined with previously installed packages, creating more focused recommendations.
Full description on: https://wiki.debian.org/SummerOfCode2016/ProjectProposals/Create%20new%20recommendation%20strategy%20for%20AppRecommender
Benefits to Debian: Customize AppRecommender to suggest useful packages after installation with a package manager, e.g. APT.
Deliverables: A new recommendation strategy when the user is currently installing a package (Ideally, integrating AppRecommender and APT to test this approach).
Project schedule: Considering the tasks described bellow are generic, time estimation to complete them can be tricky. Therefore, the schedule bellow is just an approximation, that will be further discussed with the project mentor.
1. Add continuous integration for App Recommender (1 week)
2. Use chef to configure AppRecommender (1 week)
3. Create an AppRecommender Package (2 weeks)
4. Implement new user profile generator for AppRecommender, since the application currently use only single terms to create the profile. Therefore, a more complex approach for this strategy is required (2 weeks) Create relation between the actual installed pakage and the packages installed on the user’s system. After that, use this relation to recommend new packages (3 weeks)
5. Implement the strategy and integrate it with both AppRecommender and APT(1 week)
6. Collect feedback from the community (1 week)
7. Use feedback along the community to optimize the algorithm(2 weeks)
8. Document the project and point out what can still be done (1 week)
Exams and other commitments: Currently I’m working on my bachelor thesis, and the due date is end of June. I might need some extra days to prepare myself and finish the presentation.
Why Debian?: I’ve been using Debian for almost two years now and I believe that it’s time to contribute to the community. With that in mind, I strongly believe that AppRecommender is a project that can help users finding new useful packages for their personal use.
Are you applying for other projects in SoC?: No.
[1] - https://gitlab.com/noosfero/noosfero [2] - https://github.com/colab/colab [3] - https://github.com/TracyWebTech/django-revproxy