为什么我们通常使用日志log压缩频率?

人工智能 自然语言处理 定义 图书 tf-idf 对数
2021-11-04 17:25:05

词频和逆文档频率是信息检索中众所周知的术语。

我将介绍向量语义和嵌入的 p:12,13 中的定义

长期频率

词频是词的频率t在词频文档中d. 我们可以只使用原始计数作为词频:

tft,d=count(t,d)

更常见的是,我们通过使用 log10相反的频率。直觉是,在文档中出现 100 次的单词并不会使该单词与文档含义相关的可能性增加 100 倍。

关于逆文档频率

idf使用分数定义Ndft, 在哪里N是集合中的文档总数,并且dft是哪个术语中的文档数t发生.......

由于许多集合中有大量文档, 因此通常也使用 log 函数来压缩此度量逆文档频率的结果定义(idf) 因此

idft=log10(Ndft)

如果我们观察引号的粗体部分,很明显log函数是常用的。它不仅用于这两个定义。它在文献中出现了许多定义。例如:、互信息、对数似然。所以,我不认为挤压是使用log功能。

是否有任何理由选择对数函数进行挤压?有什么优势吗log与任何其他壁球功能相比,如果有的话?

2个回答

处理对数要容易得多,因为相关数字通常非常小或非常大。如果你有一个很长的指数表达式,很难看出差异,但如果你查看 4.3 和 5.6,你可以立即看到发生了什么。对数是实现这种压缩的一种众所周知的(并且很好理解的)方法。您可以轻松地解释差异,具体取决于所使用的对数的底数。

很多时候log2在处理熵或信息时使用,因为它们通常以位表示。

我想为奥利弗的回答添加细节。

来自 Bishop 的《模式识别和机器学习》一书(第 1.2.5 节):

在实践中,最大化似然函数的对数更方便。因为对数是其自变量的单调递增函数,所以函数对数的最大化等价于函数本身的最大化。取对数不仅简化了后续的数学分析,而且在数值上也有帮助,因为大量小概率的乘积很容易溢出计算机的数值精度,而这通过计算对数概率的总和来解决。

那是,log是单调递增的,因此保留了极值的顺序和位置。例如,如果p(x)p(y)然后log(p(x))log(p(y))也成立。因此,最大化似然等同于最大化对数似然。

此外,它在计算联合概率时非常有用,因为可以用总和代替乘积:

log(iP(xi))=ilog(P(xi))

这也使计算在数值上稳定,并且对数和的导数比乘积的导数容易得多。