【问题标题】:Mahout: RowSimilarity vs ClusteringMahout:行相似性和聚类
【发布时间】:2012-06-11 06:36:05
【问题描述】:

我尝试使用 KMeansClustering 方法对一些文档进行聚类,并成功创建了聚类。我保存了与特定文档相对应的集群 ID 以供推荐。因此,每当我想推荐与特定文档相似的文档时,我都会查询特定集群中的所有文档,并从集群中返回 n 个随机文档。但是,从集群返回任何随机文档似乎都不合适,我在某处读到我们应该返回最接近相关文档的文档。

所以我开始搜索计算文档之间的距离,并偶然发现了 RowSimilarity 方法,该方法返回 10 个与每个文档最相似的文档,按距离排序。现在,这种方法依赖于 LogLikelihood 等相似性度量来计算文档之间的距离。

现在我的问题是这个。 考虑到这两种方法都使用相似度距离度量来计算文档之间的距离,聚类与 RowSimilarity 相比如何更好/更差?

我想要实现的是,我试图根据产品的标题和其他文本属性对产品进行聚类,以推荐类似的产品。任何帮助表示赞赏。

【问题讨论】:

    标签: machine-learning cluster-analysis mahout


    【解决方案1】:

    聚类只是分类或推荐的另一种变体。这是一门不同的学科。

    在进行聚类分析时,您希望发现数据中的结构。但是,您实际上应该分析您找到的结构。

    现在 k-means 并不真正适用于文档。它试图找到一个接近最优的数据集划分为 k 个 Voronoi 单元。除非您有充分的理由相信 Voronoi 单元格是您的数据的良好分区,否则该算法可能几乎没有用处。仅仅因为它返回了一个结果,并不代表这个结果是有用的。

    对于文档,欧几里得距离(k-means 实际上是优化欧几里得距离)通常毫无意义。向量非常稀疏,因此 k-means 聚类中心通常类似于不可能(因此不明智)的“平均文档”。

    我还没有开始寻找合适的 k 值,Mahout 实现可能只是 Lloyds k-means 近似的近似值,等等。你甚至检查过集群大小吗?在这种情况下,k-means 通常会产生退化结果。例如,几乎所有簇都包含 1 或 0 个元素,而一个巨型簇则包含其余元素。在这种情况下,您实际上可能只是从数据库中返回随机文档...

    仅仅因为你可以使用它并不意味着它是有用的。确保验证您的方法的各个步骤,例如集群是否有用且合理!

    【讨论】:

      【解决方案2】:

      相似性与距离不同——一个大而另一个小。聚类也不等于计算距离。首先,您应该确定您是否有聚类问题——这听起来不像您所说的那样。所以,不要使用 k-means。

      【讨论】:

      • 非常感谢各位的回答。我猜你是对的@Anony-Mousse,关于使用上述方法形成的随机集群。再次重新审视这个问题,我发现了另一个可以在这种情况下以某种方式帮助我的帖子,肖恩回答了这个问题。 [链接](lucene.472066.n3.nabble.com/…)。让我知道该方法是否合适。非常感谢。 :)
      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2013-08-28
      • 2015-02-05
      • 2012-04-27
      • 2022-09-29
      • 2020-07-12
      • 2012-09-30
      相关资源
      最近更新 更多