如果我没有正确解释这一点,请提前道歉。我想知道是否有算法可以在决策过程中权衡各种因素。
我正在阅读编程集体智慧,其中有一章介绍如何构建搜索引擎并使用各种因素对网页进行排名(网页排名、词频、词距、标题中的词等)。基本上在他们的示例代码中,他们将所有因素作为类中的函数,然后使用此命令对它们进行评分:
weights=[(1.0,self.locationscore(rows)),
(1.0,self.frequencyscore(rows)),
(1.0,self.distancescore(rows)),
(1.0,self.pagerankscore(rows)),
(1.0,self.linktextscore(rows, wordids))]
每个因素排名均等(1.0),但我想知道是否有一种方法可以在不手动设置权重的情况下动态地使不同因素的权重不同?在书中,他们继续使用神经网络来研究用户点击,但上述权重保持不变。
我觉得有一种非静态的方法可以做到这一点,但不确定是什么。任何关于如何解决这个问题的建议都会很棒。
提前致谢
注意:如果你想要书中的示例代码,它是http://examples.oreilly.com/9780596529321/我指的是第 4 章。另外,如果我没有正确解释任何内容,请告诉我,我会更新我的问题。
最佳答案
首先定义效用函数:如何估计一个解决方案是否比另一个更好。您描述的问题的一个常用实用程序是 recall and precision和 F measure .
另外,创建一个评估集:构建一组查询,以及这些查询的一组预期答案。
现在,您可以使用任何 AI 优化算法调整您的权重函数,例如 hill climbing或 genetic algorithms .在这些优化算法中,您的变量是每个算法的权重,您尝试优化效用函数。
注意:如果您的搜索引擎 API 允许一些明确的反馈,您也可以使用相同的方法保持即时调整:在足够多的用户指出查询的“正确”答案是什么之后,您可以将其添加到您的评估集中,然后再次运行您的调整算法。
关于algorithm - 是否存在任何算法来衡量各种因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998593/