我首先要指出这一点,我对算法的了解非常谦虚,我正在努力通过我正在研究的推荐系统来改进这一点(这是为了我自己的教育收益)。
到目前为止,我有一个用户首选项列表,可用于与其他用户首选项的关联。每个用户都将拥有以下数据:
我的目标是对彼此参与的人进行排名。因此,User1会有一个排名用户列表,如下所示:
现在,如果我给每个用户偏好设置一个等级(1 - 5),我可以进行排名。然后使用Pearson系数对它们进行排名。用户类具有如下映射:
用户1 :(姓名,职级)
我找到了这个链接,似乎与我想要做的很接近:User matching with current data
我使用的编程语言是C#。此外,如果可能的话,我想在没有图书馆帮助的情况下这样做,因为我们的目标是学习更高级的CS主题。
由于
答案 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 .......]
以此格式表明您的所有用户......
在您指明此表单中的所有用户(特征向量)后,您可以采用点积(余弦相似度)或使用任何相似性度量来实现您的目的。 相似度得分越高,用户越相似。并且您可以使用此分数对用户进行排名。 希望这会有所帮助。