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

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

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

推荐商品的ID号:ans =983817582219111490214902123522473223071234991179015471655016550165501133113302741528391667281938193121682411402020631179582133625227225722571418253692231311280266992579212168170602963277912779127791202971418214182125991547154715584447922583262982600636271402096572508623662253722920326871159341388312220277852778527785254882798927989667227508225839829738646471355411939263525372253726080121622532917550786878682841086372548821838110832516319631924102392819421134947490236621415911000110001260621657457115639122302452817445113311052234822348223482234822348223482225832412696914902667226722

2.算法运行软件版本

matlab2022a

3.部分核心程序

...............................................................
while gen < MAXGEN;   genP1 = 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 == 1LR(a)    = Supp0;               elseLR(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
endload 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_NLen            = length(P);  [tmps,I]       = sort(Support);Index          = I(Len-Max_N+1:Len);Recommend_list = P(Index);Support_list   = Support(Index);
elseRecommend_list = P;Support_list   = Support;
end
%获得最后的推介商品
R1 = [Prod_ID(Recommend_list),Support_list];save r1.mat R1 P Support Prod_IDdisp('推荐商品的ID号:');
Prod_ID(Recommend_list)
05_028m

4.算法理论概述

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

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

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

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

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

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

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

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

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

5.算法完整程序工程

OOOOO

OOO

O

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速上手:在 Android 设备上运行 Pipy

Pipy 作为一个高性能、低资源消耗的可编程代理&#xff0c;通过支持多种计算架构和操作系统&#xff0c;Pipy 确保了它的通用性和灵活性&#xff0c;能够适应不同的部署环境&#xff0c;包括但不限于云环境、边缘计算以及物联网场景。它能够在 X86、ARM64、海光、龙芯、RISC-V …

Java中Sleep和Wait的区别

目录 1、所属类不同 2、作用不同 3、使用场景不同 4、异常处理不同 总结 在Java编程中&#xff0c;我们经常会遇到需要让线程暂停执行的情况。这时&#xff0c;我们可以使用Thread类的sleep()方法和Object类的wait()方法来实现线程的暂停。尽管它们都可以达到暂停线程的目的…

Linux——自写一个简易的shell

目录 前言 一、打印提示信息 二、分割字符串 三、替换程序 前言 之前学习了很多进程相关的知识&#xff0c;包括环境变量、进程的创建与退出、进程等待、进程替换。现在可以用所学的作一个小总结&#xff0c;手撕一个shell解释器&#xff0c;大致的思路是先通过环境变量获…

Java对接快递100实时快递单号查询API接口

目录 1.引入依赖 2.定义配置信息 3.模块结构 4.Controller 5.Service实现类 6.返回数据dto以及dto中的数据dto 7.测试运行 今天也是接到了这个任务&#xff0c;官网有小demo&#xff0c;可以下载下来参考test中代码 官方文档地址&#xff1a; 实时快递查询接口技术文档…

docker的网络配置

文章目录 1、网络模式1.1、bridge模式(默认模式)1.2、host模式 2、bridge模式3、自定义网络 1、网络模式 Docker在创建容器时有四种网络模式&#xff1a;bridge/host/container/none&#xff0c;bridge为默认不需要用–net去指定&#xff0c;其他三种模式需要在创建容器时使用…

【QT】创建第一个QT程序

下面的前7个可以先不看&#xff0c;直接从8开始看 1. 创建Qt程序 一个Qt程序的组成部分&#xff1a;应用程序类&#xff0c;窗口类应用程序类个数&#xff1a;有且只有一个QApplication a;如何查看类对应的模块&#xff1a;光标移动到类上&#xff0c;F1qmake模块的名字 2. …

【易经】-- 伏羲八卦次序图

1、伏羲八卦次序图 ☷☶☵☴☳☲☱☰八卦坤艮坎巽震离兑乾四象太阴少阳少阴太阳两仪阴阳太极太极 2、八“单卦”&#xff08;经卦&#xff09; 符号卦名自然象征1☰乾qin天2☱兑du泽3☲离l火4☳震zhn雷5☴巽xn风6☵坎kǎn水7☶艮gn山8☷坤kūn地 3、八卦及所代表的意像

二,几何相交----2,区间相交检测IID

一&#xff0c;算法 对于空间的线段是否相交&#xff0c;假设都是与x平行&#xff0c;则需要三步 1&#xff0c;对各线段左右端点设置为L,R标志 2&#xff0c;从小到大进行排序 3&#xff0c;线性扫描&#xff0c;从小到大&#xff0c;根据模式判断是否相交&#xff0c;假设不相…

⭐每天一道leetcode:27.移除元素(简单;vector)

⭐今日份题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中…

录屏、截屏好工具

踩过的坑&#xff1a;用了win11之后&#xff0c;截屏工具就无法安装了&#xff0c;还有sqlcompare也无法安装了。 解决&#xff1a;关闭系统自带的安全机制“实时保护”&#xff0c;再重新安装工具。

shell脚本 条件语句

一、条件语句 1. test测试 test 测试文件的表达式 是否成立 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] 注意[]空格&#xff0c;否则会失败 操作符&#xff1a; -d&#xff1a;测试是否为目录&#xff08;Directory&#xff09; -e&#xff1a;测…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了&#xff0c;还有很多小伙伴不会开通&#xff0c;其实开通很简单&#xff0c;环境需要自己搞定&#xff0c;升级的话就需要一张visa卡&#xff0c;办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…