【问题标题】:Apache Spark - calculate correlationApache Spark - 计算相关性
【发布时间】:2016-09-17 00:27:41
【问题描述】:

我正在尝试计算用户评分之间的相关性。我想出了一个简单的程序,现在试图理解 pearson 相关的结果。

val user1 = Vectors.dense(10, 2, 3, 3)
val user2 = Vectors.dense(10, 3, 2, 2)
val user3 = Vectors.dense(1, 8, 9, 1)
val user4 = Vectors.dense(3, 9, 8, 2)
val user5 = Vectors.dense(1, 1, 1, 1)
val user6 = Vectors.dense(2, 2, 2, 2)


val users = spark.sparkContext.parallelize(Array(user1, user2, user3, user4, user5, user6))

val corr = Statistics.corr(users)

这是供参考的矩阵结果:

1.0                   -0.30336465877348895  -0.33033040622002124  0.7679896586280794    
-0.30336465877348895  1.0                   0.9660056657223798    -0.21945076948288175  
-0.33033040622002124  0.9660056657223798    1.0                   -0.21945076948288175  
0.7679896586280794    -0.21945076948288175  -0.21945076948288175  1.0     

有人可以帮我解释一下这个矩阵吗?我很惊讶它包含 4 列和 4 行(我有六个用户作为输入)?

【问题讨论】:

    标签: apache-spark correlation apache-spark-mllib


    【解决方案1】:

    这里没有太多要解释的。正如您在the API docs corr(X: RDD[Vector]) 中看到的那样返回:

    Pearson 相关矩阵比较 X 中的列。

    所以四列意味着 4*4 矩阵。

    【讨论】:

    • 有没有其他方法可以代替corr(x: RDD[Double], y: RDD[Double])来计算用户之间的皮尔逊相关性?
    • 您可以简单地转置输入,但实际上您并不希望这样。 corr 返回一个局部矩阵,因此具有 N*N 大小的东西不是一个好主意。
    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 2023-03-14
    • 2016-10-03
    • 2018-03-13
    • 2015-09-20
    • 2012-11-18
    • 2016-06-12
    • 2011-12-27
    相关资源
    最近更新 更多