Facebook新闻Feed算法公式

时间:2015-12-20 06:25:04

标签: php facebook algorithm facebook-graph-api

我被要求在PHP中使用现有的基本新闻源代码更聪明一些。也许具有相关性和多样性。客户不确定自己,他只是想要像Facebook的新闻源一样聪明(有点)。我发现了这个(可能过时但有一些线索)

enter image description here

其中:

Sigma - 每个边缘的总和。边缘是一个可以显示在您的新闻Feed中的故事,如状态更新,评论,赞,标记等。

u - 亲和力分数。这个因素会影响您与发布帖子的距离。如果您经常与发帖人,多个共同朋友或相关人员进行互动,Facebook更有可能给予该内容更高的权重。

w - 此边缘的重量。在Facebook的算法眼中,并非所有行为都被认为是平等的。例如,创建状态更新的朋友比仅仅喜欢状态更新的人更重要。

d - 时间衰减因子。随着帖子越来越老,它更有可能已经被发现或者它已经不再具有相关性了。 Facebook通过考虑帖子的年龄来解决这两个问题。

我猜这个公式非常抽象,这是我对它的解释:

function calculateFeedScore (){
    foreach ($edges as $edge){
        $friendshipWeight = 30 // pre calculated from the DB
        if ($edgeType = comment) $edgeWeight = 1;
        if ($edgeType = like) $edgeWeight = 2;
        if ($edgeType = tag) $edgeWeight = 3;
        .....
        $edgeAgeInDay = ...; // decay each day
        $decay = 0.5 // Radioactive  decay ??
        $edgeDecayFactor =  1 * pow($decay ,$edgeAgeInHour+1 )  // decay after one day 
        $edgeScore = friendshipWeight  * $edgeWeight  *$edgeDecayFactor  
        $feedItemScore += $edgeScore;

     }
    return $feedItemScore
}

所以我只是乘以你,w和d。那是对的吗?我怎样才能改进它?是的,我知道我需要在生产中对其进行微调,但是......谢谢

0 个答案:

没有答案