I am familiar with the article "Collaborative Filtering for Implicit Feedback Datasets" http://yifanhu.net/PUB/cf.pdf. I use spark ml ALS implicit to recommend items to users, with parameters Alpha = 30, Rank = 10, RegParam = 0.1. In my dataset there are only users that use more than one item (according to advice given here How to improve my recommendation result? I am using spark ALS implicit )
I use .recommendForAllUsers and get preferences p_ui. Then I filter only "new" recommendations (combinations user-item that were not in the input dataset). I also filter preferences > 0.01 to get only the most preferable items.
The questions is: how can I postprocess the preferences to make them more similar to "probabilities"? (it is a requirement to my program to output some kind of "probability").
Is it a good idea to scale preferences to [0.5, 1.0]? (using the formula:
scaled_preference = ($"preference"*0.5 + max_preference*0.5 -
min_preference)/(max_preference - min_preference) ) ?