首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种用于社交网络的推荐系统算法&斜率算法的仿真

一种用于社交网络的推荐系统算法&斜率算法的仿真
EN

Stack Overflow用户
提问于 2012-06-14 21:49:58
回答 1查看 966关注 0票数 1

选择一种推荐系统算法,并在社交网络领域进行仿真。我能找到的唯一算法就是斜率一号。我有两个问题:

  1. 该算法适用于社交网络吗?如果答案是否定的,你能给我介绍一种其他有用的算法吗?
  2. 我不知道,我怎么能做这个模拟?我该怎么做?&这是什么要求?

任何导游都会有帮助的,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 21:55:41

1.

斜率一是一个非常简单的,但是的,你可能可以使用它。Facebook使用EdgeRank作为新闻提要。

2.

根据您的评论,对于语言、框架等,您的要求/偏好是什么?如果你是开放的,如果你原谅双关,建议,我建议一个ASP.Net MVC 3网络项目。

设置数据将是一个设置"Person""Friend"类的问题(这是假设您想要朋友推荐--您可以通过组、页面、应用程序等轻松地做到这一点--您的选择)。然后,您将创建该类的几个实例(越多越好),其中包含随机名称、属性等。Google搜索的随机生成器--我相信您会找到一些东西。或者自己写代码。如果这两种方法都做不到,请将我写回这里,我会为它拼凑一些代码。

然后,你要建立一个小规模的网络表示法。也就是说,定义你的“人”之间的关系。有几种方法可以做到这一点,但在您的场景中,您可能可以为每个Person对象提供一个"Friends"属性,该属性包含对其他Person对象的引用。

我会让算法实现更多地取决于你(因为这是一个学术项目,我必须让你学习,对吗?),但是这里有一些基础知识可以让你开始:

使用您向我展示的实现,您可以设置如下所示的类:

代码语言:javascript
复制
public static class Rating
{
    public static double RatingBetween(Person a, Person b)
    {
        double rating = 0;
        foreach (Person friend in a.Friends)
        {
            if(b.Friends.Contains(friend))
            {
                rating ++;
            }
        }
    }
}

这是一个非常简单的例子,但基本上是这样的:对于每个人a的朋友,如果人b也有这个朋友,那么a和b之间的评分会稍微好一些。您可能需要添加其他方案(例如,如果朋友a和朋友b居住在同一城市,则可以添加5项评等,而对于同一所学校、工作等,则添加5项。然后,您可以为给定的人设置一本评分词典(或其他内容),如下所示:

代码语言:javascript
复制
Dictionary<Person, double> FriendDict = new Dictionary<Person, double>();
foreach (Person a in personYouAreRecommendingFriendsFor.Friends)
{
    FriendDict.Add(a,Rating.RatingBetween(personYouAreRecommendingFriendsFor, a))
}

现在,您已经设置了一个收视率表,您可以使用您找到的实现来完成剩下的工作。

如果你需要再往正确的方向推进,我很乐意帮助你。请在这里评论一下。

有用的参考资料

  • 维基百科关于斜坡的文章-一篇
  • 带有免费社交网络SDK的一些帮助 --这可能有助于定义您的网络、对象、模式等。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11041849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档