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