是否存在任何加权各种因素的算法?

Los*_*oul 6 algorithm

如果我没有正确解释,请提前抱歉.我想知道是否有算法可以在决策过程中对各种因素进行加权.

我正在阅读编程集体智慧,有一个章节,你建立一个搜索引擎,并使用各种因素来排名网页(页面排名,单词的频率,单词的距离,标题中的单词等).基本上在他们的示例代码中,他们将所有因素作为类中的函数,然后使用此命令对它们进行评分:

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))]  
Run Code Online (Sandbox Code Playgroud)

每个因素排名相同(1.0),但我想知道是否有一种方法可以动态地使不同的因素权重不同,而无需手动设置权重?在本书中,他们继续使用神经网络来研究用户点击,但上述权重保持不变.

我觉得有一种非静态的方法可以做到这一点,但不确定是什么.任何关于如何处理这个问题的建议都会很棒.

提前致谢

注意:如果你想要书中的示例代码,那么它的http://examples.oreilly.com/9780596529321/和我所指的章节是第4章.另外,如果我没有正确解释任何问题,请告诉我知道,我会更新我的问题.

ami*_*mit 2

首先定义你的效用函数:如何估计一个解决方案是否比另一个更好。您所描述的问题的一种常见实用程序是查全率和查准率以及F 度量

另外,创建评估集:构建一组查询以及这些查询的一组预期答案。

现在,您可以使用任何 AI 优化算法(例如爬山算法遗传算法)调整权重函数。在这些优化算法中,您的变量是每个算法的权重,并且您尝试优化您的效用函数。

注意:如果您的搜索引擎 API 允许一些明确的反馈,您也可以使用相同的方法来不断调整:在足够多的用户指出查询的“正确”答案是什么之后,您可以将其添加到您的评估集中,并再次运行您的调整算法。