Collaborative Filtering and Alternating Least Squares
- Dominant language
- Python
- Stars
- 951
- Forks
- 262
- PR merge metrics
- No merged PRs in 30d
Description
This would be fun / maybe useful to people.
ALS has a couple embarrassingly parallel stages. But getting good performance in a distributed setting requires some very careful bookkeeping about which blocks of the user and item factor matrices are required at each step. https://github.com/dask/dask-ml/compare/master...TomAugspurger:als does none of this bookkeeping at the moment, and is extremely slow.
I haven't found any papers about blocked ALS yet. The Spark scaladoc gives some hints: https://spark.apache.org/docs/2.2.0/api/scala/index.html#org.apache.spark.ml.recommendation.ALS
Some references
- Hu et al 2008: http://yifanhu.net/PUB/cf.pdf
- Winlaw et al 2015: https://arxiv.org/pdf/1508.03110.pdf
- https://github.com/benfred/implicit
I plan to work on this for fun on nights and weekends, but if someone wants to take it up then by all means.
Contributor guide
Assessment
This issue has not been assessed yet.