为社交网络模拟一个名为 slope-one 的推荐系统算法
Posted
技术标签:
【中文标题】为社交网络模拟一个名为 slope-one 的推荐系统算法【英文标题】:simulating a recommender system algorithm named slope-one for social networks 【发布时间】:2012-06-14 21:49:58 【问题描述】:我应该选择一个推荐系统算法并在社交网络领域进行模拟。我能找到它的代码的唯一算法是斜率一。我有两个问题:
这个算法适合社交网络吗?如果答案是否定的,请您介绍一下其他有用的算法吗?
我不知道,我该如何进行这种模拟?我该怎么办?以及它的要求是什么?
任何指南都会有所帮助,谢谢。
【问题讨论】:
这是一个偶然的家庭作业吗? 这是一种研究,最后我应该有一个模拟。 【参考方案1】:1.
Slope One 是一个非常简单的斜坡,但是是的,您可能会使用它。 Facebook 将 EdgeRank 用于新闻源。
2.
根据您的评论,您在语言、框架等方面的要求/偏好是什么?如果您愿意,如果您愿意原谅双关语,建议,我建议您使用 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 个评分。然后您可以设置字典(或给定 Person 的评分,如下所示:
Dictionary<Person, double> FriendDict = new Dictionary<Person, double>();
foreach (Person a in personYouAreRecommendingFriendsFor.Friends)
FriendDict.Add(a,Rating.RatingBetween(personYouAreRecommendingFriendsFor, a))
所以现在您已经设置了一个评级表,您可以使用您找到的实现来完成剩下的工作。
如果您在前进的过程中需要进一步推动正确的方向,我很乐意提供帮助。只需在此处评论即可。
有用的参考资料
Wikipedia Article on Slope-One Some help 带有免费的社交网络 SDK——这可能有助于定义您的网络、对象、模式等。祝你好运!
【讨论】:
感谢您的回答。我的意思是如何找到数据集并进行模拟,我不知道如何? @Mina 如果这是您要找的,您介意接受/支持我的回答吗?如果没有,请告诉我如何改进它。谢谢! 我在C#中找到了slope-one实现,在这里:cnblogs.com/kuber/articles/SlopeOne_CSharp.html,我没有时间学习ASP.Net MVC,我必须在C#中做,我不知道我应该怎么做才能测试这个算法?感谢您的回答,这很有帮助,但我没有任何声誉标记来支持它,而且它不完全是我的回答被接受。感谢您的关注。 @Mina ASP.Net MVC 只是 C#(或 VB.NET)的框架 :) 您使用 ASP.NET 编写的所有内容都可以用 C# 或 Visual Basic.NET 编写。而且我不确定您希望我添加什么。我不能只为你编写所有的源代码——我做了 SO 上的任何人都会做的事情——为你提供让自己前进所需的资源和背景。 非常感谢,我还没有开始,我会从这些信息开始,如果我遇到麻烦,我会回来问我的问题,谢谢。以上是关于为社交网络模拟一个名为 slope-one 的推荐系统算法的主要内容,如果未能解决你的问题,请参考以下文章