选择一种推荐系统算法,并在社交网络领域进行仿真。我能找到的唯一算法就是斜率一号。我有两个问题:
任何导游都会有帮助的,谢谢。
发布于 2012-06-14 21:55:41
1.
斜率一是一个非常简单的,但是的,你可能可以使用它。Facebook使用EdgeRank作为新闻提要。
2.
根据您的评论,对于语言、框架等,您的要求/偏好是什么?如果你是开放的,如果你原谅双关,建议,我建议一个ASP.Net MVC 3网络项目。
设置数据将是一个设置"Person"或"Friend"类的问题(这是假设您想要朋友推荐--您可以通过组、页面、应用程序等轻松地做到这一点--您的选择)。然后,您将创建该类的几个实例(越多越好),其中包含随机名称、属性等。Google搜索的随机生成器--我相信您会找到一些东西。或者自己写代码。如果这两种方法都做不到,请将我写回这里,我会为它拼凑一些代码。
然后,你要建立一个小规模的网络表示法。也就是说,定义你的“人”之间的关系。有几种方法可以做到这一点,但在您的场景中,您可能可以为每个Person对象提供一个"Friends"属性,该属性包含对其他Person对象的引用。
我会让算法实现更多地取决于你(因为这是一个学术项目,我必须让你学习,对吗?),但是这里有一些基础知识可以让你开始:
使用您向我展示的实现,您可以设置如下所示的类:
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项。然后,您可以为给定的人设置一本评分词典(或其他内容),如下所示:
Dictionary<Person, double> FriendDict = new Dictionary<Person, double>();
foreach (Person a in personYouAreRecommendingFriendsFor.Friends)
{
FriendDict.Add(a,Rating.RatingBetween(personYouAreRecommendingFriendsFor, a))
}现在,您已经设置了一个收视率表,您可以使用您找到的实现来完成剩下的工作。
如果你需要再往正确的方向推进,我很乐意帮助你。请在这里评论一下。
有用的参考资料
祝好运!
https://stackoverflow.com/questions/11041849
复制相似问题