我正在研究一个涉及两个变量的项目排名问题:受欢迎程度和位置。
我的目标是想出一种方法来决定我的集合中项目的受欢迎程度和距离之间的最佳权衡。也就是说,从一组具有受欢迎程度和地理位置以及我的位置(因此,距离)的项目中,我希望找到最重要的项目。
上一个问题中提到了以下解决方案,但没有引起太多关注:
给定一个位置p,你可以通过使用流行度P(p)和距离D(p)来计算位置I(p)的重要性。您应该决定或找到权重a和b的最佳值。
I(p) =a* P(p) -b* D(p)
现在,我如何最好地确定a和b值的权重?
我有一套“解决方案”,我可以用。每个解决方案都包括一个项目子集,包括它们的流行度和距离,以及集合中哪个项目被认为最相关/最重要。
发布于 2016-08-09 06:35:41
您不需要同时使用两个权重。由于您不需要绝对重要性值(您只想知道哪些项比其他项更重要),因此可以简化为一个参数:
I(p) = a * P(p) + D(p),其中P(p)是基于项目质量(或其他任何东西)的重要性项,D(p)是基于距离的重要性项。这里,你可能想要一个距离的递减函数。
据我所知,找到权重是一个离线过程,只执行一次。因此,一个非常简单的抽样方法就足够了。
要做到这一点,最简单的方法如下:对a的某个域进行采样(例如,假设一个合理的上下界,然后用给定的步长迭代这个区间)。评估解决方案的子集,并找到最重要的项目。计算有多少子集选择了正确的相关项。最后,产生最高正确计数的a值被认为是最佳选择。
发布于 2016-08-09 17:07:47
你有真正的数据集吗??例如,所有地点的距离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)就是你要找的。我认为这很有帮助:)
https://stackoverflow.com/questions/38839289
复制相似问题