推荐系统学习笔记(一)

第1章      概述

 

1.1   简介

 

推荐系统主要针对缺乏个人经验和能力的人,他们无法评估大量可供选择的物品【有些人则不受推荐系统的影响?】

 

个性化推荐与非个性化推荐

 

推荐系统被证明是一种解决信息过载问题的有效工具,通过为用户指引该用户不熟悉的新物品来解决信息过载现象。用户可能接受也可能不接受推荐,可能马上或过段时间提供显式或隐式的反馈,所有这些行为和反馈可以存储在推荐数据库,且可用于在下一次用户与系统相互作用时产生新的推荐【基于用户反馈的推荐方法?】

 

1.2   推荐系统的功能

 

1.3   数据和知识资源

 

1.4   推荐技术

 

六种推荐方法

(1)    基于内容(content-based): 系统为用户推荐他们过去的兴趣类似的物品

(2)    协同过滤(collaborative filtering): 将相似用户过去喜欢的物品推荐给用户

推荐系统中最流行最广泛的实现技术,隐语义模型(LFM)

(3)    基于人口统计学的(demographic): 基于人口统计信息的推荐,例如地域、年龄等

在营销文献中相当流行,推荐系统方面一直很少研究

(4)    基于知识(knowledge-based): 基于特定的领域和知识推荐物品

最好配备自动学习组件

(5)    基于社区(community-based): 该推荐方法依赖用户朋友的偏好

研究处于起始阶段,性能定论还很混乱,在针对用争议的物品或者冷启动情况下,性能优于传统推荐方法

(6)    混合推荐系统(hybrid recommender system): 综合上述方法,取长补短

 

1.5   应用与评价

 

1.6   推荐系统与人机交互

 

推荐算法的有效性不能仅根据预测结果的准确性(即用标准且流行的IR指标,如MAE、精准度或NDCG)来衡量。作者提出评价推荐系统要以用户为中心,包括推荐列表的相似度、推荐系统有意外新发现的能力、以及推荐系统中用户需求和期望的重要性。

 

1.6.1 信任、解释和说服力

推荐解释在推荐系统中的七大作用:

透明度:说明系统是如何工作的

可反馈性:允许用户告诉系统有错误

信任:增加用户对系统的信心

说服力:说服用户去尝试或购买

高效性:帮助用户快速抉择

满意度:增加用户舒适度或乐趣

 

1.6.2 会话系统

1.6.3 可视化

 

1.7   推荐系统是个交叉学科领域

                  

1.8 出现的问题和挑战

 

挑战:

大的真是数据集背景下的算法扩展性

主动推荐系统

推荐系统中的用户隐私保护

推荐给目标用户的物品多样性

在建立推荐列表的过程中整合用户的长期和短期偏好

通用的用户模型和交叉领域推荐系统能够在不同的系统和应用领域调配用户数据

在开放式网络中运行的分布式推荐系统

最优化推荐序列的推荐系统

移动上下文的推荐系统


本文为学习笔记,参考资料为:

《推荐系统  技术、评估及高效算法  Recommender System handbook》 Francesco Ricci Lior Rokach  机械工业出版社

欢迎交流与分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据集: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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值