基于SVM算法的Movielens数据集分类

时间:2014-01-21 09:22:33

标签: matlab dataset classification svm

我想通过Matlab实现一个推荐系统,我选择MoveiLens Dataset和svm算法。 我实现了一个返回两组Items的函数。第一组是用户评价超过3的项目,第二组是用户评价小于4的项目。 Rate是一个包含3列的矩阵,第一个是用户ID,第二个是Item Id,第三个是此项目的User Rate。

  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空间中我无法接受它。如果我想使用Rate(1-5)而不是喜欢或不喜欢怎么办?

1 个答案:

答案 0 :(得分:0)

为了使用Rate(1-5)作为输出信号,您需要一个名为排名SVM 的修改,因为这不仅仅是一个多标记分类,而是一个排名问题。< / p>