【问题标题】:ELKI DBSCAN epsilon value issueELKI DBSCAN epsilon 值问题
【发布时间】:2018-06-11 00:01:02
【问题描述】:

我正在尝试使用 ELKI DBSCAN 对词向量进行聚类。我希望使用余弦距离来聚类 300 维的词向量。数据集的大小为 19,000 个单词(19000*300 大小的矩阵)。这些是使用 gensim word2vec 计算的词向量,列表输出保存为 CSV

下面是我在 UI 中传递的命令

KDDCLIApplication -dbc.in "D:\w2v\vectors.csv" -parser.colsep '","' -algorithm clustering.DBSCAN -algorithm.distancefunction CosineDistanceFunction -dbscan.epsilon 1.02 -dbscan.minpts 5 -vis。 window.single

我使用了 epsilon 值,同时尝试了 3 个值 0.8、0.9、1.0。 对于 0.8 和 0.9 - 我得到“发现的邻居很少。Epsilon 可能太小了。” 而对于 1.0 - 我得到“找到了很多邻居。Epsilon 可能太大了。”

我在这里做错了什么?我对 ELKI 还很陌生,因此感谢您提供任何帮助

【问题讨论】:

    标签: cluster-analysis dbscan elki


    【解决方案1】:

    在 300 维时,您将看到维度的诅咒。

    与流行的说法相反,余弦确实存在维度灾难(因为余弦在归一化向量上等同于欧几里得,它最多只能比欧几里得“更好”一维)。使余弦应用程序仍然有效的通常是内在维度远小于文本的表示维度(即,虽然您的词汇表可能有数千个单词,但只有少数出现在两个文档的交集中)。

    词向量通常不是稀疏的,所以你的内在维度可能非常高,你会看到维度的诅咒。

    所以看到 Cosine 距离集中就不足为奇了,然后您可能需要选择具有几位数精度的阈值。

    出于显而易见的原因,1.0 是余弦距离的无意义阈值。最大余弦距离为 1.0!所以是的,例如,您需要尝试 0.95 和 0.99。

    您可以使用 KNNDistancesSampler 来帮助您选择 DBSCAN 参数,或者您可以使用例如 OPTICS(它可以让您找到具有不同阈值的集群,而不仅仅是一个阈值)。

    请注意,词向量是针对非常特定的场景进行训练的:可替换性。到目前为止,它们并不像基于“国王+女人=女王”示例而普遍解释的那样普遍。试试“king-man+boy”,它通常也返回“queen”(或“kings”)......结果主要是因为 king 的最近邻居是“queen”和“kings”。由于训练数据,“资本”示例同样过拟合。它是针对新闻文章进行训练的,这些文章通常以“首都、国家、等等”开头。如果你省略了“capital”,如果你省略了“country”,你会得到几乎完全相同的上下文。所以 word2vec 模型知道它们是“可替代的”。只要首都也是美国主要报纸的所在地(例如柏林、巴黎),这种方法就可以奏效。对于加拿大、美国或澳大利亚等主要报告中心所在的国家(例如多伦多、纽约、悉尼),它通常会失败。它并不能真正证明向量已经学会了资本是什么。它首先起作用的原因是对新闻训练数据的过度拟合。

    【讨论】:

    • ELKI 有多种光学功能,最新版本。你对词向量有什么建议?
    • 默认的 OPTICSHeap 应该没问题。您可能想尝试 FastOPTICS,这是一种概率近似,但您必须调整参数。使用 Xi 提取。
    猜你喜欢
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2014-07-15
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多