毕设学习推荐系统的实现之Python

主动学习推荐系统 0, 概述 数据集: Amazon商品数据集 编程环境:Python, Matlab, Markdown 1

本文包含相关资料包-----> 点击直达获取<-------

主动学习推荐系统

0. 概述

1. 数据预处理

  • 商品信息
  • 提取数据集中的title和description信息
  • 命令: python item_information.py [file1, ..., file3]

  • 用户物品评分信息

  • 提取用户-物品评分,划分train集和test集

  • 将train集中的用户作为用户全集,以防止出现train集中有用户没有评分的情况
  • 命令: python user_information.py [file1, ..., file7]

  • 商品相似度生成

  • title: 分词 + LDA主题模型(topic number = 15)

  • description: 分词 + LDA主题模型(topic number = 15)
  • 未使用price(缺失值太多)
  • 未使用category(同类商品)
  • 命令: python item_similarity.py [topic number, file1, ..., file6]

  • 商品description和title相似度权重生成

  • non linear regression

  • Similarity(i1, i2) = weight1 * S_title(i1) + weight2 * S_description(i2)
  • 命令:

    • python similarity_parameters.py [file1, ..., file7]
    • fitnlm(path, param1, param2)
  • 用户相似度生成

  • 评分相似度

  • 命令: python user_similarity.py [file1, ..., file3]

  • 用户聚类

  • 用户聚类依靠用户相似度作为距离度量,使用K-medoids作为聚类算法

  • 问题主要存在于:由于评分稀疏,很多用户之间距离为0
  • 命令: python user_clustering.py input_file number_of_clusters output_file

  • 建树前的准备工作

  • 生成用户聚类对任一物品的平均评分,便于计算时直接调用

  • 利用非线性回归拟合的参数生成相似度矩阵
  • 命令: python buildtree_preparation.py input_file init_ptitle init_pdescrip output_file

2. 建树及预测

  • 树的生成:
  • 三叉树,对应不喜欢、一般般喜欢和喜欢三个节点
  • 生成的节点信息用 self.tree self.node_interval 两个变量保存
  • 构建预测模型:
  • 利用Spark的mllib包实现ALS Matrix Factorization
  • 生成伪物品(每个节点)和用户对应的latent vector(对每一层都计算)
  • 预测评分:
  • 对每一个test商品,从树的根节点开始向下走,利用目标叶子节点的latent vector作为它的特征向量
  • 利用特征向量和所有物品的特征向量的点积预测评分,计算RMSE(对每一层都计算)
  • 命令: python build_tree.py [input_file1, ..., input_file5] desired_depth

3. 运行

  • 利用 Python 脚本运行上述所有步骤: python script.py
  • 代码开头数据集名称( dataset )需相应更改

4. 对比实验

  • FDT (Factorized Deicision Tree)
  • python factorized_decision_tree.py dataset depth (dataset是数据集的名字,depth决定了树的高度)
  • 输入: I*U 的矩阵 => new-user problem
  • 输入: U*I 的矩阵 => new-item problem
  • CAL (Content-based Active Learning)
    • python content_based_active_learning.py dataset K (dataset是数据集的名字,K决定了选择TopK的用户进行query)
  • CBCF (Content-based Collaborative Filtering)

4. 当前问题

  1. 对Amazon数据集来说树的第一层预测效果最好,分析原因可能如下:

  2. 数据集过于稀疏,导致每一用户基本只有一个评分,第一层作为伪物品作矩阵分解时评分满,效果好,越往下效果越差。

  3. 点的划分过于不均匀,使得伪物品选择不优秀。
  4. 解决方法:
  5. 使用平均划分法划分每一个节点
  6. 使用相似度拟合评分作为MF的输入,而非平均评分

  7. 物品个数超过30万的Automotive集合上计算 item similarity 时出现 Memory Error

  8. 解决方法:选择评分个数大于5个的物品和用户

参考文献

  • 现代远程教育系统个性化推荐算法研究(电子科技大学·王娜)
  • 百色学院毕业设计管理系统的设计与实现(电子科技大学·农纳曼)
  • 基于Mongodb推荐系统的研究与应用(华中科技大学·和慧)
  • 个性化资讯推荐系统的设计与实现(山东大学·仵贇)
  • 基于协同过滤推荐算法的选课系统的设计与实现(首都经济贸易大学·艾岩)
  • 基于分布式的个性化推荐系统的设计与实现(华中科技大学·唐赛)
  • 基于学习平台日志挖掘的在线学习推荐系统实现(大连海事大学·李晶涛)
  • 基于协同过滤推荐算法的选课系统的设计与实现(首都经济贸易大学·艾岩)
  • 出版物作者推荐系统的研究与实现(北京印刷学院·张莉婧)
  • 基于协同过滤推荐算法的选课系统的设计与实现(首都经济贸易大学·艾岩)
  • 基于GWT和个性化算法的教学资源推荐系统的研究(沈阳师范大学·张业骏)
  • 基于协同过滤推荐算法的选课系统的设计与实现(首都经济贸易大学·艾岩)
  • 基于知识图谱个性化学习推荐系统的研究与实现(辽宁大学·孙嘉奇)
  • 基于数据挖掘的电视节目个性化推荐研究及实现(曲阜师范大学·徐晟杰)
  • 基于知识图谱个性化学习推荐系统的研究与实现(辽宁大学·孙嘉奇)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码海岸 ,原文地址:https://bishedaima.com/yuanma/35724.html

相关推荐

  • 基于Python的数据库实现

    基于Python的数据库实现 1,需求分析 1,1 概述 从底层做起,实现数据库的组织,存储,检索,更新和索引等功能, 1,2 基本功能 设计特定的数据结构
    2024年05月14日
    2 1 2
  • 中小型医院网站

    这是一个🔥🔥基于SpringBoot框架的中小型医院网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    3 1 1
  • 基于SpringBoot框架的宠物领养系统

    这是一份采用Java语言编写的🔥🔥SpringBoot框架宠物领养应用的源代码项目,开发中融入了SpringBoot和Vue技术,支持使用Idea或Eclipse作为开发工具
    2024年05月23日
    5 1 1
  • Java+SSH线上课程学习系统

    这是一个🔥🔥SSH线上课程学习系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 Java线上课程开发技术栈为SSH项目,可以作为毕业设计课程设计作业使用ssh框架
    2024年05月23日
    8 1 1
  • 基于python的信号集问题

    基于python的信号集问题 题目 借助计算机编程分别给出下图所示的两个信号集的功率效率(BER与Eb/N0的关系),并通过比较其功率效率解释编码负增益现象
    2024年05月14日
    1 1 1
  • 口红色号识别器之Python

    口红色号识别器 选题 程序名称: 口红色号识别器 选题: 基于图像处理
    2024年05月14日
    4 1 1
  • 基于SpringBoot框架的制造装备物联及生产管理ERP系统

    这是一套采用🔥🔥SpringBoot为核心的智能制造设备联网及生产管理ERP系统的源代码,主要编程语言为Java,并结合了SpringBoot和Vue技术进行构建,开发工具包括Idea或Eclipse
    2024年05月23日
    15 1 3
  • 基于Python实现简易C语言编译器

    参考文献 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰) 山西思软科技实训管理系统的设计与实现(大连理工大学·李勇兵) 基于C#的甜品店现金交易系统的设计与实现(电子科技大学·张晟) 基于Web系统的计算机编程语言书籍交流系统设计与开发(吉林大学·刘峰兵) 基于动易网的B/S结构学校网站设计与实现(吉林大学·於月红) 在线考试系统的设计与实现(山东大学·张莉) 基于ASP
    2024年05月14日
    2 1 1
  • 基于SpringBoot框架的星之语明星周边产品销售网站

    这是一套采用Java语言构建的🌟🌟SpringBoot为核心的星之语明星周边商品售卖网站源代码,该项目运用了SpringBoot和Vue框架,开发工具为Idea或Eclipse
    2024年05月23日
    4 1 1
  • 基于Java的寝室公共财产管理系统

    基于Java的寝室公共财产管理系统 摘 要 我们所学的《java面向对象》和我们以前所学的C++大同小异,整体上差不多却有各有各的特点,在学习了理论课程之后
    2024年05月14日
    1 1 1

发表回复

登录后才能评论