.推荐算法之协同过滤算法
1.0推荐系统流程
推荐系统的流程是什么?
流程就是: 要给A进行推荐,那么找到与A最相似的前K个用户 ,然后取他们前TOPN个物品进行召回去重,然后进行排序,把结果存储到一个数据库里。及时推荐给A
现实场景中用户和用户观看的电影往往不会一一对应上,在计算相似度时,均值计算时可选用的是:
1>用户评分所有值求平均值
2>用户与用户交集的均值
我们通常选用1 ----原因
1>如果我们选用2。每一个交集都得计算一次均值,为了减少计算量
2>选用1时与效果2不会有太大的误差。
1.1协同过滤推荐方法CF理论基础
基于记忆的协同过滤主要分为:
相似统计方法得到具有相似兴趣爱好的用户
基于模型的协同过滤主要分为:
先用历史数据得到一个模型,在用此模型进行预测。基于模型的推荐广泛应用使用的技术包括神经网络技术、潜在语义LFM分析、贝叶斯网络聚类算法模型、分类算法模型、回归算法模型、矩阵分解模型、神经网络模型图模型、隐语义模型
1.1关系矩阵相似度推荐
在推荐系统中,“关系”是用关系矩阵的形式来创建和存储下来的。以视频推荐为例,可以归纳为用户关系矩阵U-U矩阵、视频(物品)关系V-V矩阵和用户-视频(物品)关系U-V矩阵。
基于记忆的协同过滤主要是依赖于对U-U矩阵和V-V矩阵处理分析,通过相似度计算得到用户相似度和视频或物品相似度,并在此基础上形成推荐结果。
1.1.1U-U矩阵相似度推荐-Pearson
1.算法原理
2.算法流程
1>访问用户最近的行为数据
2>提取用户视频二维矩阵
3>通过相似度计算,获得与用户U具有相似爱好的相似用户集合N
4>计算用户u对视频的偏好。
5>很据喜好进行排序
6>输出TOP-N视频列表。
归纳提取总结以上流程
3.算法步骤
4.Pearson系数存在的问题
Pearson相关系数计算用户相似度很突出,但是仍然存在以下问题:
不能应对不同用户可能对某一件广受欢迎的项目都给予高评分的情况
在遇到用户只对非常少的共同项目评分时出现预测不准的情况。
相关文献提出了改进的方案。
提高了对有争议的共同评价的相对重要性,降低了广受欢迎项目有共同评价的相对重要性
1.1.2V-V矩阵相似度推荐-cos
1.算法原理
2.算法流程
3.算法步骤
1.1.3U-V矩阵的相似度推荐
1.2基于用户的CF
基于U-V矩阵构建基于用户和基于物品的协同过滤算法:
基于记忆的协同过滤算法:
基于记忆的协同过滤算法(Memory-based CF)直接使用整个已知的(所谓“记忆”)评分矩阵去预测用户对未知项目的评分或者推荐,又可以分为基于用户的协同过滤算法和基于物品的协同过滤算法。
KNN求相似用户或相似项目,根据相似用户或项目来辅助预测用户对项目的评分,指标一般是RMSE MAE
TOPN,可以理解为,在预测用户对未选择项目的评分,然后排序, 取前TOPN个项目(用户没有选择过的)推荐给用户,看命中率,指标一般是RECALL PRECISION AUC
TopN和kNN目的不同,TopN在kNN基础之上进行推荐,KNN只预测评分没做推荐
1.算法原理
2.算法流程
1>访问用户最近的行为数据
2>提取用户视频二维矩阵
3>通过相似度计算,获得与用户U具有相似爱好的相似用户集合N
4>计算用户u对视频的偏好。
5>很据喜好进行排序
6>输出TOP-N视频列表。
基于用户的CF对物品的评分流程图
3.算法步骤
注意:UU矩阵的输出就是UserCF的输入矩阵
4.算法举例
课堂笔记:
5.算法适用场景
当用户数据量比物品数量大很多时候,采用基于物品的CF。原因如下:
1.3基于物品的CF
1.算法原理
2.算法原理
对上述公式修正:
3.算法流程
4.算法步骤
5.算法举例
课堂笔记:
6.适用场景
适用于物品数量变化小于用户数量变化的场景。
2.UserCF和ItemCF区别和联系
1.协同过滤优点:
实现快
对商品和物品没有要求
效果有保障
2.协同过滤缺点:
冷启动
马太效应
推荐解析模糊
协同过滤算法是一种基于用户行为或者项目属性的推荐算法,它通过分析用户的历史行为数据和项目的属性特征,来预测用户可能感兴趣的项目。协同过滤算法主要有两种类型:基于用户的协同过滤和基于项目的协同过滤。
基于用户的协同过滤算法是通过分析用户的历史行为数据,找到与目标用户具有相似兴趣爱好的其他用户,然后将这些用户喜欢的项目推荐给目标用户。
基于项目的协同过滤算法是通过分析项目的属性特征,找到与目标项目具有相似属性的其他项目,然后将这些相似项目推荐给用户。
协同过滤算法的优点包括:
1. 个性化推荐:协同过滤算法可以根据用户的个人兴趣和喜好,给出个性化的推荐结果。
2. 可扩展性:协同过滤算法可以适应不同规模的数据集,可以处理大量用户和项目的推荐。
3. 隐性特征:协同过滤算法可以通过分析用户历史行为和项目属性,探索潜在的隐性特征,提供更准确的推荐结果。
协同过滤算法的缺点包括:
1. 冷启动问题:协同过滤算法对新用户和新项目的推荐效果较差,因为缺乏足够的历史数据。
2. 数据稀疏性:协同过滤算法在面对大规模数据集时,可能会出现数据稀疏性的问题,导致推荐结果不准确。
3. 算法复杂性:协同过滤算法的计算复杂度较高,尤其是在处理大规模数据时。
以下是使用C语言实现协同过滤算法的一个示例:
```c
#include <stdio.h>
#define USERS 10
#define ITEMS 5
int user_item_matrix[USERS][ITEMS] = {
{1, 0, 1, 0, 1},
{1, 1, 0, 1, 0},
{0, 1, 1, 0, 1},
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{1, 1, 0, 1, 0},
{0, 1, 1, 0, 1},
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{1, 1, 0, 1, 0}
};
int main() {
// 计算用户相似度矩阵
double user_similarity[USERS][USERS] = {0};
for (int i = 0; i < USERS; i++) {
for (int j = 0; j < USERS; j++) {
int common_items = 0;
for (int k = 0; k < ITEMS; k++) {
if (user_item_matrix[i][k] == 1 && user_item_matrix[j][k] == 1) {
common_items++;
}
}
user_similarity[i][j] = (double)common_items / ITEMS;
}
}
// 针对每个用户进行推荐
for (int i = 0; i < USERS; i++) {
double item_scores[ITEMS] = {0};
for (int j = 0; j < USERS; j++) {
if (i != j) {
for (int k = 0; k < ITEMS; k++) {
if (user_item_matrix[j][k] == 1 && user_item_matrix[i][k] == 0) {
item_scores[k] += user_similarity[i][j];
}
}
}
}
printf("User %d recommendations:\n", i);
for (int k = 0; k < ITEMS; k++) {
if (item_scores[k] > 0) {
printf("Item %d: score %.2f\n", k, item_scores[k]);
}
}
}
return 0;
}
```
使用该程序实现协同过滤算法时,需要注意以下事项:
1. 数据集准备:需要准备用户和项目的历史行为数据,并通过user_item_matrix矩阵来表示。
2. 相似度计算:在计算用户相似度矩阵时,需要选择合适的相似度度�
没有合适的资源?快使用搜索试试~ 我知道了~
协同过滤算法附带源码及解析
共1个文件
txt:1个
需积分: 0 0 下载量 164 浏览量
2024-05-16
11:29:30
上传
评论
收藏 3KB RAR 举报
温馨提示
协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码协同过滤算法附带源码
资源推荐
资源详情
资源评论
收起资源包目录
协同过滤算法附带源码.rar (1个子文件)
协同过滤算法.txt 9KB
共 1 条
- 1
资源评论
猿来如此yyy
- 粉丝: 1499
- 资源: 145
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功