用户偏好匹配推荐系统(pearson correlation)
本文关键字:系统 pearson correlation 用户 | 更新日期: 2023-09-27 18:20:22
我将首先指出这一点,我对算法的了解非常有限,我正在使用推荐系统改进这一点(这是为了我自己的教育利益)。
背景
到目前为止,我有一个用户偏好列表,可以与其他用户偏好进行关联。每个用户将拥有以下数据:
- 专业:(商科、计算机科学、护理等)
- 性别:(男、女)
- 年龄:(数值)
- 种族:(美洲印第安人/阿拉斯加原住民、黑人/非裔美国人、西班牙裔/拉丁裔、亚裔/太平洋岛民、白人、非西班牙籍)
我的目标是对相互参与的人进行排名。因此,User1会有一个排名用户列表,如下所示:
- 用户4-89%
- 用户20-34%
- 用户234-31%
现在,如果我给每个用户的偏好打分(1-5),我就可以进行排名。然后使用皮尔逊系数对它们进行排序。用户类的映射如下:
用户1:(姓名、职级)
- 专业->计算机科学,3
- 性别->男性,5
- 年龄->18,5
- 种族->白人,3
我找到了这个链接,似乎接近我想做的:用户与当前数据匹配
问题
- 我在这个过程中使用了正确的算法吗
- 我怎么能取"计算机科学"之类的东西,并给它一个与皮尔逊系数一起使用的值
- 我可以即时生成"等级"吗?(我该怎么做?)
我使用的编程语言是C#。此外,如果可能的话,我想在没有图书馆帮助的情况下完成这项工作,因为我的目标是学习更高级的CS主题。
感谢
首先需要构建的是一个特征向量。让我举例说明一种方法。请注意,这不是唯一的方法。
你有分类变量。(至少大部分)。
对用户有效的每个功能。。指示为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..,依此类推。。通过这种方式,你可以将这些桶表示到等式中。
现在想象一下,你有一个计算机科学专业的用户,美国印第安人男性这可以表示为:
[0,1,0,1,0, 1 .......]
在此表单中指明您的所有用户…
在你用这种形式(特征向量)指示了所有用户之后,你可以进行点积(余弦相似性)或使用任何相似性度量来达到你的目的。相似性得分越高,用户越相似。您可以使用此得分对用户进行排名。希望这能有所帮助。