我有一个庞大的名单的名字-姓氏,我试图合并他们。例如,'Michael Jordan'和Jordan Michael。
我正在使用pyspark执行以下过程
这对于10000个名字是可行的,但我怀疑计算100万个名字的相似性需要多长时间,因为每个矩阵都是1000000×1000000(由于矩阵是对称的,我只取上三角形矩阵,但这并没有改变所需的高复杂性时间)。
我读过,在计算了tfidf之后,计算输出矩阵的SVD来减少维数是非常有用的。从文档中,我找不到computeSVD的例子。它不存在吗?
在我的情况下,SVD如何可以帮助减少高内存和计算时间?
欢迎任何反馈和意见。
发布于 2017-07-14 17:29:46
为了更新这一点,computeSVD现在可以在RowMatrix和IndexedRowMatrix的PySpark mllib API中使用。
发布于 2016-02-12 18:36:48
我找不到computeSVD的例子。它不存在吗?
不,它没有。目前(Spark1.6.0/Spark2.0.0快照) computeSVD只在Scala中可用。您可以在这里使用eliasah提供的解决方案:
在我的情况下,SVD如何可以帮助减少高内存和计算时间?
那得看情况。如果您的数据只是一组非常短的字符串(2-3个字),而您只需在空格上拆分就可以标记您的数据,那么它根本帮不上您。它不能改善你使用的蛮力方法,而且你的数据已经非常稀少了。
如果您在某些上下文中处理数据,或者提取更复杂的特性(例如,ngram),它可以降低成本,但是仍然不能帮助您处理总体复杂性。
https://stackoverflow.com/questions/35368227
复制相似问题