我有一组与特定域相关的文档,并根据该集合训练了质心分类器。我想要做的是,我将为分类器提供来自不同领域的文档,并希望确定它们与受过训练的领域的相关程度。我可以为此使用余弦相似度来获得一个数值,但我的问题是确定阈值的最佳方法是什么?
为此,我可以从不同的域下载多个文档并检查它们的相似度分数以确定阈值。但这是要走的路吗,在统计上听起来不错吗?其他方法是什么?
我有一组与特定域相关的文档,并根据该集合训练了质心分类器。我想要做的是,我将为分类器提供来自不同领域的文档,并希望确定它们与受过训练的领域的相关程度。我可以为此使用余弦相似度来获得一个数值,但我的问题是确定阈值的最佳方法是什么?
为此,我可以从不同的域下载多个文档并检查它们的相似度分数以确定阈值。但这是要走的路吗,在统计上听起来不错吗?其他方法是什么?
实际上,稀疏向量中的质心还有另一个问题。问题是它们通常比原始数据稀疏得多。例如,这增加了计算成本。它可以产生本身实际上是非典型的向量,因为它们具有不同的稀疏模式。这种效果类似于使用离散数据的算术平均值:假设汽车的平均门数为 3.4;但显然不存在实际上有 3.4 个门的汽车。所以特别是,不会有汽车到质心的欧几里得距离小于 0.4!- 那么质心到底有多“中心”呢?
有时使用中心点代替质心会有所帮助,因为它们实际上是数据集的正确对象。
确保控制对数据的此类影响!
一个简单的尝试方法是使用各种机器学习算法 - 特别是基于树的算法 - 与质心的距离。
正如另一个答案(@Anony-Mousse)中提到的,这不一定会为您提供好的或可用的答案,但它可能会。在此过程中使用 ML 框架,例如 WEKA,也将帮助您以更严格的方式估计您的准确性。
以下是使用WEKA的步骤:
通过找到代表每个班级的大量文档来生成一个训练集(为了获得有效的估计,我建议每个班级至少有几十个)
计算从每个文档到每个质心的距离。
为每个此类文档生成一个特征向量,由该文档到质心的距离组成。您可以使用单个特征 - 到最近质心的距离;或使用所有距离,如果您想尝试更精细的阈值方案。例如,如果您选择使用单个特征的更简单方法,则表示距离最近的质心为 0.2 的文档的向量属于 A 类将是:“0.2,A”
将此集合保存为 ARFF 或 CSV 格式,加载到 WEKA,然后尝试分类,例如使用 J48 树。
结果将为您提供总体准确度估计、详细的混淆矩阵,当然还有特定模型(例如树),您可以使用它对其他文档进行分类。
这些结果可用于迭代地改进模型和阈值,方法是为有问题的类收集额外的训练文档,方法是重新创建质心或重新训练阈值分类器。