基于用户的协同过滤算法 UserCF流程图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UserCF算法主要流程:
主要全局变量:
const int usersum = 6040; //用户总数
const int itemsum =3952; //项目总数
const int N =10; //为用户推荐前N个物品
int trainuser[usersum][itemsum]={0}; //训练集合user item rate矩阵
int test[usersum][itemsum]={0}; //测试集合user item rate矩阵
struct _simi
{
double value; //相似值
int num; //相似用户号
};
_simi simiUser[usersum][usersum]; //排序后的相似性矩阵double trainuserItem[usersum][itemsum]={0.0}; // user item 兴趣程度矩阵int recommend[usersum][N]={0}; //为每个用户推荐N个物品
拆分数据集函数int SplitData(int m, int k) 主要流程:
将数据集拆分为测试集test和训练集trainuser,其中1/m为测试集,取不同的k<=m-1值在相同的随即种子下可得到不同的测/训集合
计算用户之间相似度函数double Simility(int* Ua, int*Ub)主要流程:计算用户Ua和Ub的相似性,返回值为Ua和Ub的相似度
用户相似性矩阵排序函数int sort(double *simArr,_simi *simStruct)主要流程:根据相似性由高到低排序,每行第一个是自己
用户i对物品j预测兴趣程度函数double getUserLikeItem(int i,int j,int k)主要流程:
利用k个最近邻来计算
推荐函数int getRecommend()主要流程:通过物品兴趣程度,推荐前N个