首页 > 编程语言 >基于遗传优化的协同过滤推荐算法matlab仿真

基于遗传优化的协同过滤推荐算法matlab仿真

时间:2024-03-23 11:33:16浏览次数:24  
标签:仿真 end Selch Support list 用户 算法 matlab 兴趣

1.算法运行效果图预览

 

 

 

最后得到推荐的商品ID号:

推荐商品的ID号:
 
ans =
 
        9838
       17582
       21911
       14902
       14902
       12352
       24732
       23071
       23499
       11790
        1547
       16550
       16550
       16550
        1133
       11330
       27415
       28391
        6672
        8193
        8193
       12168
         241
       14020
       20631
       17958
       21336
       25227
        2257
        2257
       14182
        5369
       22313
       11280
       26699
       25792
       12168
       17060
        2963
       27791
       27791
       27791
       20297
       14182
       14182
       12599
        1547
        1547
       15584
        4479
       22583
       26298
       26006
        3627
       14020
        9657
       25086
       23662
       25372
       29203
       26871
       15934
       13883
       12220
       27785
       27785
       27785
       25488
       27989
       27989
        6672
       27508
       22583
        9829
        7386
        4647
       13554
       11939
        2635
       25372
       25372
        6080
       12162
       25329
       17550
        7868
        7868
       28410
        8637
       25488
       21838
       11083
         251
        6319
        6319
        2410
       23928
       19421
       13494
        7490
       23662
       14159
       11000
       11000
       12606
       21657
        4571
       15639
       12230
       24528
       17445
        1133
       11052
       23482
       23482
       23482
       23482
       23482
       23482
       22583
         241
       26969
       14902
        6672
       26722

  

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

       用户兴趣模型,即对用户的兴趣和爱好的准确描述。而在建立用户兴趣模型的时候,首先需要确定用户兴趣模型的表示形式。因此,用户兴趣模型的表示是用户兴趣模型的一个重要环节。所谓用户兴趣的表示,即个性化信息推荐的一个重要环节,影响用户兴趣的因素有很多种,比如年龄,学历,职业等。另外一方面,用户兴趣会随着时间的变化而变化,这对用户兴趣的表示增加了难度。其中一个最为基础的用户兴趣表示方法是通过关键词来表示的。但是通过关键词方式的用户兴趣表示方法具有一定的局限性。这个局限性,主要是因为关键词无法完全表达出用户兴趣导致的。

 

        用户兴趣模型的构建,其本质就是和用户兴趣相关的信息的获取,然后构建一个可以读取识别这些信息的数学模型的过程。用户兴趣模型的构建过程如下图所示。

 

 

 

       用户兴趣模型是个性化推荐技术的基础,通过建立一个优良的用户兴趣模型,可以实现更高性能的推荐系统。从而大大减少了用户寻找自己感兴趣信息的时间和精力。

 

       协同过滤推荐(Collaborative Filtering Recommendation)技术,在推荐系统中是最为成功的技术之一。协同过滤,被称为社会过滤或者协作过滤。最早是由Goldberg等学者提出来的,之后发展快速且广泛。协同过滤方法,首先利用用户历史评价的记录,然后构建出用户评分矩阵,并且计算项目或用户之间相似度,最后是采用领域的方法向用户推荐。协同过滤,根据用户的历史喜好信息,计算用户之间的距离,然后对商品的评价进行加权评价值,利用目标用户的最近的邻居用户,预测目标用户对商品的喜好程度,系统根据对商品的喜好程度从而对目标用户进行个性化推荐。

 

 

 

 

4.部分核心程序

while gen < MAXGEN;   
      gen
      P1 = 0.9;
      P2 = 1-P1;
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,P1);   
      Selch=mut( Selch,P2);   
      phen1=bs2rv(Selch,FieldD);   
      for a=1:1:NIND  
          if  gen == 1
              LR(a)    = Supp0;               
          else
              LR(a)    = phen1(a,1);      
          end
          %计算对应的目标值
          errs    = func_obj(data(Index(1:10000),:),Max_N,LR(a));
          E       = 1/errs;
          JJ(a,1) = E;
      end 
      Objvsel=(JJ+eps);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 
      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      LR2(gen) = mean(LR);
 
end 
 
%画图
figure;
plot(LR2(3:end),'b-o','linewidth',2);
xlabel('Iteration Number');
ylabel('Support value');
grid on;
save GA.mat LR2
end
 
load GA.mat
figure;
plot(LR2(3:end),'b-o','linewidth',2);
xlabel('Iteration Number');
ylabel('Support value');
grid on;
%**************************************************************************
Supp        = LR2(end); %支持度阈值
%根据关联规则进行推荐算法
%初始商品推荐列表
[P,Support] = func_ProductList(data,Supp);
 
if length(P) > Max_N
   Len            = length(P);  
   [tmps,I]       = sort(Support);
   Index          = I(Len-Max_N+1:Len);
   Recommend_list = P(Index);
   Support_list   = Support(Index);
else
   Recommend_list = P;
   Support_list   = Support;
end
%获得最后的推介商品
R1 = [Prod_ID(Recommend_list),Support_list];
 
save r1.mat R1 P Support Prod_ID
 
disp('推荐商品的ID号:');
Prod_ID(Recommend_list)

  

标签:仿真,end,Selch,Support,list,用户,算法,matlab,兴趣
From: https://www.cnblogs.com/matlabworld/p/18090912

相关文章

  • java数据结构与算法基础-----排序------堆排序
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录堆排序是利用堆(数据结构)设计的排序算法,属于选择排序,最坏,最好,平均时间复杂度均为O(nlogn),不稳......
  • octave中matlab中的双变量循环的解决思路,不是双层循环,请钢精回避吧
    同时画出K=1,KI=0和K=1,KI=1和K=10,KI=5,传递函数为Ts=(Ks+KI)/(s^3+3*s^2+(2+K)*s+KI)的暂态响应曲线。刚开始用循环时,发现不能像c中的for中双变量循环,很明显,此处也不能双重循环,否则图像就不对了,后来的解决的办法,虽然不是很高明,但总算解决了,记录下,代码的注释已经很详细了,具体就说了......
  • 【毕业设计】73-基于51单片机智能液晶温控风扇设计(说明书+PPT+仿真工程+源代码+原理图
    【毕业设计】73-基于51单片机智能液晶温控风扇设计(说明书+PPT+仿真工程+源代码+原理图)主要研究内容:1.单片机;2.直流电机;3.DS18B20;4.液晶显示器LCD。设计思路:查阅相关文献资料学习单片机、直流电机,温度传感器,液晶显示器LCD,编程实现单片机控制的智能温控风扇系统设计功能,......
  • 【毕业设计】74-基于单片机的红外遥控步进电机控制系统设计与实现(详细说明书+PPT+原理
    【毕业设计】74-基于单片机的红外遥控步进电机控制系统设计与实现(详细说明书+PPT+原理图+仿真+源代码+全套资料)基于单片机的红外控制系统的研究意义在于可以通过用红外控制的方式直接对物体进行控制,而不需要人为的操控。在工业的使用环境中,在许多复杂噪音多的环境中同样可......
  • 【故障诊断】基于卷积神经网络结合长短时记忆CNN-LSTM实现数据分类含Matlab源码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 【VRP问题】基于粒子群算法求解带时间窗的路径最短多车辆多任务车辆路径规划CTWVRP问
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • MATLAB用GARCH-EVT-Copula模型VaR预测分析股票投资组合
    全文链接:http://tecdat.cn/?p=30426原文出处:拓端数据部落公众号对VaR计算方法的改进,以更好的度量开放式基金的风险。本文把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Copula模型来度量开放式基金的风险,并与其他VaR估计方法的预......
  • 7-10 公路村村通 Prim算法
    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及......
  • 代码随想录算法训练营第day54|392.判断子序列 、 115.不同的子序列
    目录392.判断子序列115.不同的子序列392.判断子序列力扣题目链接(opensnewwindow)给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而......
  • Python 机器学习 维特比算法和鲍姆-韦尔奇算法
    在机器学习和信号处理领域,特别是在处理隐马尔可夫模型(HiddenMarkovModels,HMM)时,维特比算法(ViterbiAlgorithm)和鲍姆-韦尔奇算法(Baum-WelchAlgorithm)是两个核心算法,用于不同的目的。维特比算法用于解决解码问题,即在给定观察序列的情况下找到最可能的状态序列。它通过动态规......