Show HN: Gorse – An Out-of-the-box open-source Recommender System
gorse.io
gorse.io
For example:
- Perhaps there are relationships or similarities among items which are known prior to any feedback (e.g. different options of the "same" product are represented as distinct items in your catalog). Recommending to the user many closely related items may be a poor experience in some contexts.
- Perhaps you have other relevant actions, and care about more than maximizing the probability of a click. E.g. purchases, shares, etc. In an ecommerce context, you may want to recommend items at a range of price points; showing only very expensive items may get you clicks but not purchases.
- This has a concept of whether an item was "read" (which I interpret as an impression, or an opportunity to be clicked). But not all impressions are equal. Perhaps you have other knowledge about the context in which something was displayed. Was it "read" in the context of a search? Was it 8th in a list of 10 items?
We can easily do this with the Universal Recommender as shown in this article (reprinted from the IBM dev blog) https://actionml.com/blog/making_dislikes_predict_likes
I think there are two major areas where this can be improved. A quick read through the docs doesn't show much info about the algorithms themselves, and from what I can see, it doesn't look like you can customize the hyperparameters of the algorithms (correct me if I'm wrong). You have to just wait for the automated hyperparameter search to finish. I think this is mostly very good but the ability to freeze them would be even better to save compute time in subsequent retrainings. The other thing I notice is that there's no system to detect when the offline model is too out of date and trigger retraining. It would be nice to have a way of automating the retraining based on performance evaluations rather than on a clock schedule.
I just wrote in my problem validation platform about the need for personal recommendation system which can create a model based on the data of our activities stored locally and distribute the model to the services when needed[1].
Then came across your project, Although its meant to be integrated in products and is a replacement for propitiatory recommendation system I wonder whether it can be used to build a local recommendation system?
[1] https://needgap.com/problems/269-keeping-the-things-i-like-w...
I think NLP Gorse would be a very valuable addition and agree that it would a huge effort to do it properly.
You're welcomed to comment about Gorse or anything else in the aforementioned thread as well if you have some suggestions to address the problem.
Are you thinking about offering this as a service as well? It feels like you could have a lot of interest with a run-it-yourself or we-do-it-for-you-as-a-service model. I couldn't see that after a quick look :)
It might be worth sharing the project with some privacy-oriented forums to get some feedback and ideas on what a good privacy model would look like for it. Good luck! :)
If the recommender somehow can be based on buyer satisfaction - it would be a system that focuses on the buyer. It would then perhaps not please the seller.
Taking it one step further, if a buyer is VERY satisfied, the buyer is likely to return for MORE purchases, ensuring the satisfaction of BOTH seller and buyer with the first recommendation. This is the ultimate recommender, measuring not first-purchase buyer/seller satisfaction, but rather measuring "so satisfied with the first purchase that the buyer returned for a second purchase".
However it turned out that only the "Universal Recommender" template (that I wrote) had real demand and virtually no one was developing or using other "engines"
As designed it was hard to deploy and was not multi-tenant. I could go on about the shortcomings but suffice it to say that after I did the Universal Recommender and saw the PIO shortcomings, we (ActionML, my consulting company) decided to write a from-scratch ML server, called Harness, to solve the PIO issues and act as the host for continuing work on the Universal Recommender.
https://actionml.com/docs https://github.com/actionml/harness
So the best part of PIO (The Universal Recommender) lives on with a clean new design and modern architecture.
PIO is/was a great product, it's sad Apache decided to retire it.
it seems that one algo used is "Bayesian Personal Ranking" based on a paper from 2012 https://arxiv.org/pdf/1205.2618.pdf, here is a related blog post https://towardsdatascience.com/recommender-system-using-baye...
another one is Weighted Regularized Matrix Factorization/ALS (by the Netflix Prize winner team): http://yifanhu.net/PUB/cf.pdf , also see https://www.ethanrosenthal.com/2016/10/19/implicit-mf-part-1...
I will introduce algorithms briefly in documents in the future :)
If you're not familiar, it's a fun history visualizer for git repos: https://gource.io/