什么时候为 tf-idf 使用哪个日志基础?

When to use which base of log for tf-idf?

我正在开发一个简单的搜索引擎,我在其中使用 TF-IDF 公式对搜索词的重要性进行评分。我看到人们对公式使用不同的基础,但我看不到何时使用哪个的解释。这有关系吗,你有什么建议吗?

我当前的实现使用 math.h 库的常规 log() 函数

没关系,因为下面的等式成立:

log_a(x)/log_a(y) = log_b(x)/log_b(y)

您始终可以从一种碱基转换为另一种碱基。这实际上很容易。只需使用这个公式:

log_b(x) = log_a(x)/log_a(b)

工程师通常更喜欢 2 和 10 这样的基数。 2 适合中场休息,10 是我们的数字系统。学数学的人更喜欢自然对数,因为它使微积分更容易。函数 b^x 的导数是 k*b^x,其中 b 是常数。 Bur如果b等于e(自然对数)那么k就是1.

假设您要使用 log() 发送 5.63 的 2 次对数。只需使用 log(5.63)/log(2).

如有需要,任意基数使用此函数即可:

double logb(double x, double b) {
    return log(x)/log(b);
}