1

我正在尝试使用混淆矩阵检查我的 LDA 模型的性能,但我不知道该怎么做。我希望有人可以指出我正确的方向。

所以我在一个充满短文档的语料库上运行了一个 LDA 模型。然后我计算了每个文档的平均向量,然后继续计算余弦相似度。

我现在如何获得混淆矩阵?请注意,我对 NLP 世界很陌生。如果有其他/更好的方法来检查这个模型的性能,请告诉我。

4

1 回答 1

2

你的模型应该做什么?它是如何可测试的?

在您的问题中,您没有描述您对模型的可测试评估,其结果将在混淆矩阵中表示。

混淆矩阵可帮助您表示和探索预测系统(例如分类器)的不同类型的“准确性”。它要求您的系统做出选择(例如,是/否,或多标签分类器),并且您必须使用已知的测试数据才能根据系统应该如何选择对其进行评分。然后,您将矩阵中的这些结果算作一种可能性组合,例如,对于二元选择,有两个错误和两个正确。

例如,如果您的余弦相似度试图预测一个文档是否与另一个文档属于同一“类别”,并且您确实知道真正的答案,那么您可以对它们进行评分,以确定它们的预测是否正确。

二元选择的四种可能性是:

  1. 正面预测与正面实际 = 真正面(正确)
  2. 负预测与负实际 = 真负(正确)
  3. 正预测与负实际 = 假正(错误)
  4. 负预测与正实际 = 假负(错误)

在多标签系统中,由于组合更多,因此更复杂,但正确/错误的结果是相似的。

关于“准确性”。

衡量系统执行情况的方法有很多种,因此在选择对系统进行评分的方式之前,值得一读。术语“准确性”是指该领域的特定内容,有时会与该词的一般用法混淆。

如何使用混淆矩阵。

混淆矩阵总和(总 TP、FP、TN、FN)可以输入一些简单的方程,这些方程为您提供这些性能评级(在不同领域用不同的名称引用):

  • 敏感度、d'(dee-prime)、召回率、命中率或真阳性率 (TPR)
  • 特异性、选择性或真阴性率 (TNR)
  • 精确度或阳性预测值 (PPV)
  • 阴性预测值 (NPV)
  • 未命中率或假阴性率 (FNR)
  • 脱落率或误报率 (FPR)
  • 错误发现率 (FDR)
  • 误漏率 (FOR)
  • 准确性
  • F 分数

所以你可以看到Accuracy是一个具体的东西,但可能不是你说“accuracy”时想到的!最后两个是更复杂的度量组合。F 分数可能是其中最可靠的,因为它可以通过组合其他指标来调整以表示您的要求。

我发现这篇维基百科文章最有用,并帮助理解了为什么有时最好为您的应用程序选择一个指标而不是另一个指标(例如,丢失真值是否比丢失假值更糟糕)。有一组关于同一主题的链接文章,从不同的角度来看,例如关于搜索的这篇文章

这是我发现自己回到的一个更简单的参考:http ://www2.cs.uregina.ca/~dbd/cs831/notes/confusion_matrix/confusion_matrix.html

这与敏感性有关,更多来自科学统计视图,其中包含与混淆矩阵相关的 ROC 图表的链接,对于可视化和评估性能也很有用:https ://en.wikipedia.org/wiki/Sensitivity_index

本文更具体地介绍了在机器学习中使用这些内容,并进行了更详细的介绍:https ://www.cs.cornell.edu/courses/cs578/2003fa/performance_measures.pdf

因此,总而言之,混淆矩阵是评估系统性能的众多工具之一,但您需要首先定义正确的度量。

现实世界的例子

我最近在我从事的一个项目中完成了这个过程,其中的重点是从一个大集合中找到所有少数相关文档(使用像你这样的余弦距离)。这就像一个由手动标记而不是初始搜索查询驱动的推荐引擎。

我从项目领域的角度与利益相关者一起制定了他们自己的目标列表,然后尝试将这些目标转换或映射为绩效指标和统计术语。你可以看到这不仅仅是一个简单的选择!我们数据集的巨大不平衡性质扭曲了指标的选择,因为有些人假设数据是平衡的,否则它们会给你带来误导性的结果。

我的发展日志摘录

希望这个例子能帮助你前进。

于 2019-08-02T00:37:23.327 回答