You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Jerry Lam (JIRA)" <ji...@apache.org> on 2018/06/25 20:45:00 UTC

[jira] [Created] (SPARK-24652) Strange ALS Implementation for Implicit Feedback

Jerry Lam created SPARK-24652:
---------------------------------

             Summary: Strange ALS Implementation for Implicit Feedback
                 Key: SPARK-24652
                 URL: https://issues.apache.org/jira/browse/SPARK-24652
             Project: Spark
          Issue Type: Bug
          Components: ML
    Affects Versions: 2.3.1
            Reporter: Jerry Lam


Hi there,

I'm evaluating the ALS implementation from Spark ML. Does Spark implement the algorithm described in "Collaborative Filtering for Implicit Feedback Datasets"? because if it is, I think the implementation returns result that is incorrect.

Here is the example:
{code:java}
from pyspark.ml.recommendation import ALS

als = ALS(
    maxIter=100,
    regParam=0.0,
    alpha=1.0,
    nonnegative=False,
    implicitPrefs=True,
    rank=1)


ratings = spark.createDataFrame([(0, 0, 1), (1,1, 1)]).toDF('user', 'item', 'rating')
als_model = als.fit(ratings)
reco = als_model.recommendForAllUsers(10)
reco.show(truncate=False)
{code}
 The result is:
{code:java}
+----+---------------------------------+ 
|user|recommendations |
+----+---------------------------------+ 
|0 |[[0, 0.6666667], [1, -0.6666667]]|
|1 |[[1, 0.6666667], [0, -0.6666667]]| 
+----+---------------------------------+
{code}
 I expect the results for the above to be :
{code:java}
+----+---------------------------------+ 
|user|recommendations | 
+----+---------------------------------+ 
|0 |[[0, 1.0], [1, -1.0]]|
|1 |[[1, 1.0], [0, -1.0]]| 
+----+---------------------------------+
{code}
The reason I believe that it should be equal to 1.0 for (user=1, item=1) and 1.0 for (user=0, item=0) is because from the paper, the above should return 1.0 this two cases given that lambda is 0.0 (no regularization). 

 

Can someone describe what implementation of implicit feedback is spark using? If it implemented the same paper, why the result is so different? Thank you.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org