dask / dask/dask-ml

Collaborative Filtering and Alternating Least Squares

Open
#139 6 comments 0 reactions 0 assignees View on GitHub
Roadmap
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.