我正在研究涉及两个变量的项目排名问题:流行度和位置。
我的目标是想出一种方法来决定我的集合中的项目的受欢迎程度和距离之间的最佳权衡。也就是说,从一组具有受欢迎程度和地理位置的项目,以及我的位置(因此,距离),我想找到最重要的项目。
上一个问题中提到了以下解决方案,但没有引起太多关注:
给定一个位置p,您可以通过使用流行度P(p)和距离D(p)来计算地点I(p)的重要性。您应该决定或找到权重a和b的最佳值。
I(p)= a * P(p)-b * D(p)
现在,我如何最好地确定值a和b的权重?
我有一套“解决方案”,我可以使用。每个解决方案都包含一个项目的子集,这些项目具有受欢迎程度和距离,以及集合中哪一个项目被认为是最相关/最重要的。
答案 0 :(得分:2)
您不需要两个权重。由于您不需要绝对重要性值(您只想知道哪些项目比其他项目更重要),您可以减少到一个参数:
I(p) = a * P(p) + D(p),
其中P(p)
是基于项目质量(或其任何内容)的重要性术语,D(p)
是基于距离的重要性术语。在这里,你可能想要一个递减的距离函数。
据我所知,找到权重是一个只执行一次的离线过程。因此,采用非常简单的抽样方法就足够了。
执行此操作的最简单方法如下:对a
的某个域进行采样(例如,假设合理的下限和上限,然后使用给定的步长迭代此间隔)。评估解决方案的子集并找到具有最高重要性的项目。计算有多少子集选择了正确的相关项目。最后,产生最高正确计数的a
的值被认为是最佳选择。
答案 1 :(得分:0)
你有真正的数据集吗?比如,所有位置的距离D(p)
和受欢迎P(p)
的真实排名??
如果你有,你可以先训练你的公式,即
I(p) = a * P(p) - b * D(p)
包含以下集合中(a,b)
的所有值对 - >
{(1,1),(1,2), ... , (1,10)}
{(2,1),(2,2), ... , (2,10)}
...........................
...........................
{(10,1),(10,2), ... , (10,10)}
对于所有这些100
对,您可以为所有对创建一个temporary_ranklist
&检查你的temporary_ranklist
哪一对最接近真实的raklist。
你正在寻找那对(a,b)
。我认为这有助于:)