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

news2024/11/18 0:45:45

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


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.部分核心程序

...............................................................
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)
05_028m
 

4.算法理论概述

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

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

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

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

       支持度表示某一关联规则在数据中出现的普遍程度,即称为该关联规则在数据中的支持度,其中支持度的计算公式为:

       此外,置信度说明某一关联规则成立的必然程度,即称为该关联规则在数据库的可信度,其中支持度的计算公式为:

        通过判断支持度和置信度是否超过阈值,来判断是否产生一个强规则,那么预先设置这个支持度阈值和置信度阈值是十分重要的,对最后的推荐准确度有着重要影响。 这里,通过遗传算法来优化支持度阈值和置信度阈值。

       这里,设置优化目标函数为:

       其中函数f表示的是当设置不同的支持度阈值和置信度阈值下,整个推荐算法获得的推荐正确率,然后通过GA算法流程图进行阈值的优化。

5.算法完整程序工程

OOOOO

OOO

O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1491327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游泳耳机品牌排行榜前十名:10大口碑产品力荐!

在现代快节奏的生活中&#xff0c;游泳已经成为许多人放松身心、保持健康的重要方式。而伴随着游泳&#xff0c;一款优秀的游泳耳机则成为了许多游泳爱好者不可或缺的装备之一。它不仅能让你在游泳时享受音乐、广播或是专注训练&#xff0c;还能让整个游泳过程更加愉悦、充满动…

宠物的异味,用空气净化器可以解决吗?宠物空气净化器品牌推荐

养猫的人都了解&#xff0c;一个养猫家庭的环境卫生和气味问题与主人的关系密切相关。主人的勤劳程度和对卫生的重视程度直接影响着家中的气味。尽管主人通常会经常更换猫砂&#xff0c;但有时候仍然会存在一些难闻的气味。事实上&#xff0c;忙碌的猫主人可能会因为没有足够的…

总结zy_不定长数据帧的收发

1、接收部分 身份证模块串口接收解析&#xff1a; #define CRC_16_CCITT 0x1021 unsigned short CRC16_CCITT(unsigned char* pchMsg, unsigned short wDataLen) // 1. MSB { unsigned char i, chChar; unsigned short wCRC 0; while (wDataLen–) { chChar *pchMsg; wCRC ^…

符号函数Sign(博途PLC SCL代码)

符号函数在ADRC自抗扰算法里会有涉及,同时在滑膜控制里也会用到,这篇博客我们介绍符号函数在博途PLC里的实现。 1、ADRC自抗扰算法: https://rxxw-control.blog.csdn.net/article/details/126547180https://rxxw-control.blog.csdn.net/article/details/1265471802、模拟量…

虚拟机内存不够用了?全流程操作Look一下?

虚拟机信息&#xff1a;操作系统&#xff1a;CentOS Linux 7 (Core)&#xff0c;用的是VMware Workstation 16 Pro 版本16.2.3 build-19376536&#xff1b;我的主机 Windows 10 Education, 64-bit (Build 22000.1817) 10.0.22000 前言&#xff1a;虚拟机用久了就会出现内存不足…

Java知识点总结(二)

ID生成策略 主键自增id 主键自动增长&#xff0c;不用手工设值、数字型&#xff0c;占用空间小、检索非常有利、有顺序&#xff0c;不会重复&#xff0c;但在迁移旧数据是会出现id冲突 UUID 基于时间&#xff0c;计数器和地址生成32位的id redis生成id 原子性自增&#xff0c;并…

Python 关于函数的使用

一、学习目标 1&#xff0e;掌握函数定义和调用。 2&#xff0e;掌握函数形参与实参的使用。 3&#xff0e;熟练掌握lambda表达式使用。 二、相关练习 1.建立自定义函数实现计算圆的面积和球的体积。 def Count(radius):area 3.14*radius**2volume (4/3)*3.14*radius*…

C 判断

判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 C 语言把任何非零和非空的值假定为 true&#xff0c;把零或 null 假定为 false。 下面…

C语言快速入门之指针详解

一.指针基础 1.指针定义的理解 就像我们住房子划分房间一样&#xff0c;在系统中&#xff0c;内存会被划分为多个内存单元&#xff0c;一个内存单元大小是一个字节&#xff0c;我们在搜索房间时有门牌号&#xff0c;与之类似&#xff0c;每个内存单元都会有一个编号 地址 指…

UCSF DOCK 分子对接详细案例(05)- 遗传算法用于分子生成 DOCK_GA

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、软件及操作环境二、遗传算法三、结构文件准备四、 DOCK_GA4.1 Fragment Library Generation4.2 运行 GA没有RDKit编译的情况RDKit编译的情况在服务器上运行 总结参考资料 前言 本文是UCSF DOC…

能源大数据采集,为您提供专业数据采集服务

随着经济的不断发展&#xff0c;能源产业也逐渐成为国民经济的支柱产业之一。而对于能源行业来说&#xff0c;数据采集是一项至关重要的工作。以往&#xff0c;能源企业采集数据主要依靠人工收集、整理&#xff0c;但是这种方式不仅效率低下&#xff0c;而且容易出现数据不准确…

Spring——Bean的作用域

bean的作用域 Bean Scope Scope说明singleton&#xff08;默认情况下&#xff09;为每个Spring IoC容器将单个Bean定义的Scope扩大到单个对象实例。prototype将单个Bean定义的Scope扩大到任何数量的对象实例。session将单个Bean定义的Scope扩大到一个HTTP Session 的生命周期…

Python 面向对象编程——类的使用

一、学习目标 1&#xff0e;掌握类的定义和实例化对象。 2&#xff0e;熟练掌握类的构造函数__init__使用。 3&#xff0e;掌握类的继承机制和使用。 二、相关练习 1、定义一个玩具类Toy()&#xff0c;创建名字为“小汽车”、“手枪”和“积木”的玩具实例&#xff0c;计…

qt cmake添加resource文件

文章目录 方式一:方式二:qrc的使用 两种方式 方式一: 创建一个qrc文件&#xff0c;在qt_add_executable 中直接添加 qt_add_executable(helloworldmain.cppimageresources.qrc )方式二: 使用 qt_add_resources qt_add_resources(helloworld "app_images"PREFIX &…

tomcat nginx 动静分离

实验目的:当访问静态资源的时候&#xff0c;nginx自己处理 当访问动态资源的时候&#xff0c;转给tomcat处理 第一步 关闭防火墙 关闭防护 代理服务器操作&#xff1a; 用yum安装nginx tomcat &#xff08;centos 3&#xff09;下载 跟tomcat&#xff08;centos 4&#xff0…

循环队列:一道使数据结构萌新知道什么是“愁滋味“的题目

这破题目肝了我一天半才搞明白,也正是因为这道题目,我才豁然明白了李煜所说的"剪不断,理还乱...别是一般滋味在心头"到底是什么"滋味".在完全搞明白之前,真的是放有放不下,理也理不清... 但是理解之后你会发现,嘛い---,也就那么个回事嘛O(∩_∩)O 目录 1…

瑞_Redis_短信登录(一)

文章目录 项目介绍1 项目准备1.1 导入SQL1.2 导入后端项目1.2 导入前端项目 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的项目准备小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识&#xff0c;所以本系列专栏主要是针对该…

Tonka Finance,BTCFi 浪潮的发动机

在 2023 年年初&#xff0c;Ordinals 技术方案为比特币 Layer1 带来了一种全新的资产发行方式&#xff0c;此后一场以比特币生态为主战场的新一轮资金、注意力价值争夺战打响&#xff0c;并且越来越多的加密原教旨主义者、密码极客们加入这场战争中。我们看到&#xff0c;铭文市…

【操作系统概念】 第1章:导论

文章目录 关于本书内容0.前言1.1操作系统的功能1.1.1 用户视角1.1.2 系统视角1.1.3 操作系统的定义 1.2 计算机系统的组成1.2.1 计算机系统的运行1.2.2 存储结构1.2.3 I/O结构 1.3 计算机系统体系结构1.4 操作系统的结构1.5 操作系统的执行1.5.1 双重模式与多重模式的执行1.5.2…

DolphinScheduler——介绍及架构设计

目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…