好文档 - 专业文书写作范文服务资料分享网站

(完整版)基于用户的协同过滤算法UserCF流程图

天下 分享 时间: 加入收藏 我要投稿 点赞

UserCF算法主要流程:

开始输入K(取k个最近邻居)将据集拆分为测试集test和训练集trainuser计算用户之间的相似性,获得用户相似性矩阵usersim用户相似性矩阵排序,获得排好序的用户相似性矩阵simiUser通过k个最近邻,计算用户对物品兴趣程度的矩阵trainuserItem通过物品兴趣程度,推荐前N个计算召回率、准确率和覆盖率结束

主要全局变量:

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值 在相同的随即种子下可得到不同的测/训集合

开始打开数据集是否成功打开Y到达文件末尾NN提示“open datasetfile failed”Y寻找数据集每条记录对应的用户号usernum和物品号itemnumNusernum<=usersumtemnum<=itemsumYNrand()%m==kY1←test[usernum-1][itemnum-1]1←trainuser[usernum-1][itemnum-1]关闭文件结束

计算用户之间相似度函数double Simility(int* Ua, int*Ub)主要流程: 计算用户Ua和Ub的相似性,返回值为Ua和Ub的相似度

开始0←comItem(Ua与Ub共有项个数)0.0←simility,0←countUa,0←countUb0←ii0&&Ub[i]>0YcomItem++Ua[i]>0YcountUa++Ub[i]>0YcountUb++i++simility ← comItem/sqrt(countUa*countUb)返回similityNNNN结束

(完整版)基于用户的协同过滤算法UserCF流程图

UserCF算法主要流程:开始输入K(取k个最近邻居)将据集拆分为测试集test和训练集trainuser计算用户之间的相似性,获得用户相似性矩阵usersim用户相似性矩阵排序,获得排好序的用户相似性矩阵simiUser通过k个最近邻,计算用户对物品兴趣程度的矩阵trainuserItem通过物品兴趣程度,推荐前N个计算召回率、准确率和覆盖率结束<
推荐度:
点击下载文档文档为doc格式
9lutg639zz1x2cx44e354ncj33s2bw019oe
领取福利

微信扫码领取福利

微信扫码分享