我对数据挖掘和ML很陌生。我想了解LSH与k均值有何不同。阅读了几篇在线论文和其他材料后,似乎两种算法都试图对相似文档进行分组/聚类。对于诸如垃圾邮件检测之类的用例,在许多论文中都使用了其中一种。但是我不太清楚它们之间的区别,如果我们将其全部用于垃圾邮件检测等用例,结果将有何不同?
最佳答案
LSH不会将您的数据聚类。
它适用于近重复(!)检测。
LSH在设计上可能会产生根本不相似的“假阳性”(哈希碰撞)。
LSH有一个阈值t,它仅尝试为低于此阈值的对象生成哈希冲突。为了获得良好的性能,您需要选择尽可能小的阈值。对于群集,您确实需要能够在存储桶之外(比t更远)找到对象-使用LSH无法可靠地做到这一点。
LSH将随机放置存储区边界;您没有太多注意到这一点的唯一原因是您多次执行此操作,并希望并非所有人都被错误选择。因此,您几乎只会得到所有近邻。根据您的参数,甚至可能只有90%。由于每个对象都在多个存储桶中,因此它的簇是什么?您会得到大量重叠的“集群”,每个集群仅包含数据的某些部分。几乎可以清楚地知道如何从中有效地找到好的集群。
LSH实际上是关于“几乎相同”的对象,而不是关于在数据中查找更大的结构。
我认为垃圾邮件检测都不是一个好用例-您是否知道实际上可以做到这一点的任何垃圾邮件过滤器?
几乎重复的新闻检测,例如但是,Google新闻与某种LSH相关;据说他们正在使用minhashing。
关于machine-learning - k均值与LSH算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41099138/