gpt4 book ai didi

apache-spark - spark-如何在使用 RowMatrix 计算相似度后检索项目对

转载 作者:行者123 更新时间:2023-12-04 10:24:38 24 4
gpt4 key购买 nike

我在我的推荐系统中遇到了“all-pairs Similarity”问题。感谢 this databricks blog ,看来 RowMatrix 可能会来帮忙。

但是,RowMatrix 是一种没有有意义的行索引的矩阵类型,因此我不知道如何在调用 columnSimilarities(threshold) 后检索相似度结果。为 特定项目 i 和 j

以下是有关我正在做的事情的一些详细信息:

1) 我的数据文件来自 Movielens格式如下:

user::item::rating

2) 我建立了一个 RowMatrix,其中每个稀疏向量 i 代表所有用户对这个项目 i 的评分
val dataPath = ...
val ratings: RDD[Rating] = sc.textFile(dataPath).map(_.split("::") match {
case Array(user, item, rate) => Rating(user.toInt, item.toInt, rate.toDouble)
})
val rows = ratings.map(rating=>(rating.product, (rating.user, rating.rating)))
.groupByKey()
.map(p => Vectors.sparse(userAmount, p._2.map(r=>(r._1-1, r._2)).toSeq))

val mat = new RowMatrix(rows)

val similarities = mat.columnSimilarities(0.5)

现在我得到一个坐标矩阵 similarities .如何获得特定项目 i 和 j 的相似度?虽然它可以用来检索 RDD[MatrixEntry] ,我不确定第 i 行和第 j 列是否对应于项目 i 和 j。

最佳答案

我遇到了和你一样的问题,解决方法如下。

  • 你应该注意到 columnSimilarities() 是调用列向量的相似性。然而,我们的“行”总是由行向量组成。所以你应该得到“行”的转置,假设它是“tran_rows”。然后计算 tran_rows.columnSimilarities()
  • 那么事情就简单了。在 columnSimilarities() 的结果中,索引 i 和 j 正好对应项目 i 和项目 j。
  • 关于apache-spark - spark-如何在使用 RowMatrix 计算相似度后检索项目对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860472/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com