Cluster analysis ELKI DBSCANε值问题

Cluster analysis ELKI DBSCANε值问题,cluster-analysis,dbscan,elki,Cluster Analysis,Dbscan,Elki,我正在尝试使用ELKI-DBSCAN对单词向量进行聚类。我希望使用余弦距离对300维的词向量进行聚类。数据集的大小为19000字(19000*300大小矩阵)。这些是使用gensim word2vec计算的字向量,列表输出保存为CSV 下面是我在UI中传递的命令 KDDCLIApplication-dbc.in“D:\w2v\vectors.csv”-parser.colsep'””-算法clustering.DBSCAN-algorithm.distance函数cosindedistance函

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

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

KDDCLIApplication-dbc.in“D:\w2v\vectors.csv”-parser.colsep'””-算法clustering.DBSCAN-algorithm.distance函数cosindedistance函数-DBSCAN.epsilon 1.02-DBSCAN.minpts 5-vis.window.single

我对ε值进行了调整,同时尝试了3个值0.8、0.9、1.0。 对于0.8和0.9,我得到了“几乎找不到邻居。ε可能太小了。” 而对于1.0,我得到了“发现了很多邻居。ε可能太大了。”


我做错了什么?我对艾尔基很陌生,所以在300维空间,任何帮助都是值得感激的,你将看到维度的诅咒

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

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

因此,看到要集中的余弦距离并不奇怪,然后您可能需要选择精度只有几位数的阈值

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

您可以使用KNNDistancesSampler来帮助选择DBSCAN参数,也可以使用例如光学(这将允许您查找具有不同阈值的群集,而不仅仅是单个阈值)


请注意,单词向量是针对一个非常特定的场景进行训练的:可替换性。到目前为止,它们还没有根据“国王男人+女人=女王”的例子普遍解释的那么普遍。试一试“国王男人+男孩”,它通常也会返回“女王”(或“国王”)。。。结果主要是因为国王的近邻是“女王”和“国王”。由于培训数据,“资本”的例子也同样被过度拟合。它的训练内容是新闻文章,通常以“首都,国家,诸如此类”开头。如果你省略了“资本”,如果你省略了“国家”,你会得到几乎完全相同的上下文。因此word2vec模型知道它们是“可替代的”。只要首都也是美国主要报纸的总部所在地(如柏林、巴黎),这种做法就行得通。对于加拿大、美国或澳大利亚等主要报告中心所在的国家(如多伦多、纽约、悉尼)来说,这种方法往往失败。这并不能真正证明向量已经知道资本是什么。首先,它工作的原因是对新闻培训数据进行了过度拟合。

最新版本的ELKI for optics具有多种功能。对于单词向量,您建议使用什么方法?默认的OPTICSHeap应该可以。您可能想尝试FastOPTICS,这是一种概率近似,但您必须调整参数。使用席提取,谢谢大家的帮助!