Submitted my bachelor thesis titled "Biasing a News Recommender System by Learning an Optimal Attack Strategy
". It was supervised by Dr. Aonghus Lawlor and marks the end of my journey at UCD.
It involved experiments on PoisonRec
, a Python-based reinforcement learning framework, that learns how to attack recommender systems. GRU4Rec, the underlying recommender system, learnt the user activity on the Microsoft News Dataset (MIND)
to recommend news articles. PoisonRec would make up fake users and fake views in an attempt to manipulate the recommendations made. These manipulations, i.e. bias introduced into the recommender system, is then quantified.
The experiments showed that PoisonRec:
- has varying levels of success between different news categories
- is more successful when pushing new articles compared to existing articles
- is more successful among sparse user activity than dense user activity
Other than the experiments, I learned that I'm a fairly quick learner. I jumped into this project and PoisonRec's codebase without experience with Python or managing its libraries. I came out of the other side having worked with pickle files, troubleshooting my data, figuring out the codebase (to some extent), an appreciation of Python list comprehension, and more questions about the experiment results I got. I hope this means I can pick up other languages quickly while only having the most experience with Java. 💭