【发布时间】:2014-02-10 19:06:41
【问题描述】:
我想通过 Matlab 实现一个推荐系统,我选择 MoveiLens Dataset 和 svm 算法。 我实现了一个返回两组项目的函数。第一组是用户评分超过 3 的项目,第二组是用户评分低于 4 的项目。 Rate 是一个 3 列的矩阵,第一个是 user Id,第二个是 Item Id,第三个是 User Rate to this item。
function [like,dislike]=UsetLike(User,Rate)
k1=1;
k2=1;
for i=1:size(Rate,1)
if(Rate(i,1)==User)
if(Rate(i,3)>3)
like(k1)= Rate(i,2);
k1=k1+1;
end
if(Rate(i,3)<=3)
dislike(k2)= Rate(i,2);
k2=k2+1;
end
end
end
end
然后我编写另一个由 svm 训练的函数,例如这样。 特征是一个矩阵,在 (i) 行中显示第 (i) 项特征,它有 19 个特征,值为 0 或 1。
function [svmModel]=TrainSVM(like,dislike,Feture)
group1=zeros(size(like,2),19);
group2=zeros(size(dislike,2),19);
for i=1: size(group1,1)
group1(i,:)= Feture(like(i),:);
end
for i=1: size(group2,1)
group2(i,:)= Feture(dislike(i),:);
end
Dataset=cat(1,group1,group2);
group=[repmat({'like'},1,size(group1,1)) repmat({'dislike'},1,size(group2,1) )]';
svmModel = svmtrain(Dataset, group, ...
'Autoscale',true, 'Showplot',false, 'Method','QP', ...
'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1);
end
现在我想知道我的解决方案是否正确?因为它主要是在 3D 空间中,所以我无法接受它。如果我想使用评分 (1-5) 而不是喜欢或不喜欢怎么办?
【问题讨论】:
标签: matlab dataset classification svm