## 主动学习推荐系统
### 0. 概述
- 数据集:[Amazon商品数据集](http://jmcauley.ucsd.edu/data/amazon/)
- 编程环境:Python, Matlab, Markdown
### 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数据集来说树的第一层预测效果最好,分析原因可能如下:
- 数据集过于稀疏,导致每一用户基本只有一个评分,第一层作为伪物品作矩阵分解时评分满,效果好,越往下效果越差。
- 点的划分过于不均匀,使得伪物品选择不优秀。
- 解决方法:
- 使用平均划分法划分每一个节点
- 使用相似度拟合评分作为MF的输入,而非平均评分
2. 物品个数超过30万的Automotive集合上计算*item similarity*时出现*Memory Error*
- 解决方法:选择评分个数大于5个的物品和用户
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
【毕业设计】主动学习推荐系统的实现.zip (27个子文件)
【CSDN:小正太浩二】下载说明.txt 1KB
Dissertation-master
Baselines
Content-based Active Learning
MatrixFactorization.py 2KB
content_based_active_learning.py 3KB
read_write.py 259B
Factorized Decision Tree
MatrixFactorization.py 1KB
FactorizedDecisionTree.py 10KB
factorized_decision_tree.py 6KB
read_write.py 259B
Step2-Model
MatrixFactorization.py 2KB
build_tree.py 1KB
read_write.py 259B
DecisionTree.py 11KB
Step1-Preprocessing
read2df.py 286B
user_clustering.py 933B
buildtree_preparation.py 4KB
similarity_parameters.py 3KB
user_information.py 3KB
item_similarity.py 3KB
k_medoids.py 1KB
Commands.txt 1KB
read_write.py 259B
user_similarity.py 2KB
item_information.py 1022B
my_fitnlm.m 356B
LDA.py 2KB
script.py 3KB
README.md 4KB
共 27 条
- 1
资源评论
小正太浩二
- 粉丝: 192
- 资源: 5905
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- LM324_datasheet.pdf
- 全新Storm+Core+API管理系统源码
- 基于RP2040的电子沙漏,使用RP2040游戏机开发板,灯板是74HC595驱动的8*8LED矩阵
- 基于SSM和VUE的商店POS积分管理系统(免费提供全套java开源项目源码+论文)
- 基于SpringBoot的“在线动漫信息平台”的设计与实现.rar
- NPP xml tools
- 基于python开发的树莓派RP2040的游戏机
- 基于SNMP网络设备MIB信息采集系统(免费提供全套java开源项目源码+论文)
- 基于SSM和VUE的五子棋游戏的设计(免费提供全套java开源项目源码+论文)
- qiun-data-charts
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功