用户偏好匹配推荐系统(皮尔逊相关)

时间:2012-01-16 17:22:17

标签: c# .net algorithm

我首先要指出这一点,我对算法的了解非常谦虚,我正在努力通过我正在研究的推荐系统来改进这一点(这是为了我自己的教育收益)。

背景

到目前为止,我有一个用户首选项列表,可用于与其他用户首选项的关联。每个用户都将拥有以下数据:

  • 专业:(商业,计算机科学,护理等...)
  • 性别:(男,女)
  • 年龄:(数值)
  • 种族:(美洲印第安人/阿拉斯加原住民,黑人/非裔美国人,西班牙裔/拉丁裔,亚洲/太平洋岛民,白人,不是西班牙裔)

我的目标是对彼此参与的人进行排名。因此,User1会有一个排名用户列表,如下所示:

  1. User4 - 89%
  2. User20 - 34%
  3. User234 - 31%
  4. 现在,如果我给每个用户偏好设置一个等级(1 - 5),我可以进行排名。然后使用Pearson系数对它们进行排名。用户类具有如下映射:

    用户1 :(姓名,职级)

    • 专业 - >计算机科学,3
    • 性别 - >男,5岁
    • 年龄 - > 18,5
    • 种族 - >白色,3

    我找到了这个链接,似乎与我想要做的很接近:User matching with current data

    问题

    • 我是否在此过程中使用了正确的算法?
    • 我怎样才能选择像'计算机科学'这样的东西,并赋予它与Pearson系数一起使用的价值?
    • 我可以动态生成'排名'吗? (我怎么能这样做?)

    我使用的编程语言是C#。此外,如果可能的话,我想在没有图书馆帮助的情况下这样做,因为我们的目标是学习更高级的CS主题。

    由于

1 个答案:

答案 0 :(得分:0)

您需要构建的第一件事是特征向量。让我举例说明一种方法。请注意,这不是唯一的方法。

您有分类变量。 (至少大部分都是。)

对用户有效的每个功能都表示为1,否则为0

因此,假设您的特征向量由

表示
[Business, Computer Science, Nursing, Male, Female , American Indian/Alaskan Native, African American, Hispanic/Latino, Asian/Pacific Islander, White, Not of Hispanic Origin ]

请注意,我在这里忽略了年龄,因为年龄是一个数字特征而不是分类特征。

解决这个问题的一种方法是,将您的年龄变量离散化..即表示年龄为0-10,10-20 ......等等。 通过这种方式,您可以将这些桶指示到等式中。

现在想象一下,你有一个用户是comp sci major,男性美洲印第安人 这可以表示为:

[0,1,0,1,0, 1 .......]

以此格式表明您的所有用户......

在您指明此表单中的所有用户(特征向量)后,您可以采用点积(余弦相似度)或使用任何相似性度量来实现您的目的。 相似度得分越高,用户越相似。并且您可以使用此分数对用户进行排名。 希望这会有所帮助。