我应该选择一个推荐系统算法并在社交网络领域进行模拟。我能找到它的代码的唯一算法是斜率一。我有两个问题:
这个算法适合社交网络吗?如果答案是否定的,请您介绍一下其他有用的算法吗?
我不知道,我该如何进行这个模拟?我该怎么办?& 它有什么要求?
任何指南都会有所帮助,谢谢。
我应该选择一个推荐系统算法并在社交网络领域进行模拟。我能找到它的代码的唯一算法是斜率一。我有两个问题:
这个算法适合社交网络吗?如果答案是否定的,请您介绍一下其他有用的算法吗?
我不知道,我该如何进行这个模拟?我该怎么办?& 它有什么要求?
任何指南都会有所帮助,谢谢。
Slope One 是一个非常简单的,但是,是的,你可能会使用它。Facebook 将 EdgeRank 用于新闻源。
根据您的评论,您对语言、框架等的要求/偏好是什么?如果您愿意,如果您愿意原谅双关语,建议,我建议您使用 ASP.Net MVC 3 web 项目。
设置数据将是设置一个"Person"
或"Friend"
类的问题(这是假设您想要朋友推荐——您可以使用组、页面、应用程序等轻松地做到这一点——您的选择)。然后,您将创建该类的几个(越多越好)实例,具有随机名称、属性等。谷歌搜索随机生成器 - 我相信您会找到一些东西。或者自己编写代码。如果您不能做到其中任何一个,请在此处给我回信,我将为此编写一些代码。
然后,您将设置网络的小规模表示。也就是说,定义你的“人”之间的关系。有几种方法可以做到这一点,但在您的场景中,您可能会为每个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))
}
所以现在你已经设置了一个评级表,你可以使用你找到的实现来完成剩下的工作。
如果您在前进的过程中需要更多的推动正确的方向,我很乐意提供帮助。只是在这里评论。
祝你好运!