推荐系统

基于Web日志挖掘的个性化推荐系统(附源码)

寵の児 提交于 2019-12-16 17:22:33
个性化推荐系统 实现该系统主要是使用的编程语言主要是R,然后配合css在样式上进行一定优化,使用shiny开发的一款web程序,主要实现的核心功能是基于spark的ALS算法的课程个性化推荐系统。首页界面如下图所示: 该系统中的所有课程名称,课程图片以及课程链接均从百度传课爬取进行汇总得到的,因此点击每个图片均可以跳转至该课程在百度传课的页面。 该系统中实现的主要功能有: 首页推荐。 课程搜索。 课程分类。 个性化推荐。 热点分析。 首页推荐 当一个新用户或未登录的用户进入到该学习平台时,系统无法得知用户的具体信息,因此对用户的兴趣爱好还一无所知,所以无法使用常规的推荐算法进行推荐。一般在这个时候,只是向用户推荐那些普遍反映比较好的物品之前。面对这种情况,该项目通过Web日志分析,提取浏览次数较多的课程在首页进行推荐。 首页推荐是从预处理好的数据中提取用户访问的课程ID,然后统计这些课程ID出现的次数,根据出现的次数以降续进行排序,向用户推荐最热门,也是访问次数最多的课程。 课程搜索 搜索功能可以帮助用户快速查找到所有与搜索关键字相关的课程,这些课程名称数据是使用R语言从Web日志中提取出来的,因此可以搜索出所有存在于Web日志中的课程。该搜索引擎是基于正则表达式来完成。通过grepl函数在课程数据中的课程名中进行正则表达式匹配,可以搜索到所有包含关键字的课程,并获取其序列号

推荐引擎分类介绍

[亡魂溺海] 提交于 2019-12-16 15:12:15
搜索引擎是当前快速查找目标信息的最好途径。在用户对自己需求很明确时,用搜索引擎可以方便地通过关键字快速找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求,因为在很多情况下,用户其实并不明确自己的需要, 或者他们的需求很难用简单的关键字来表述,又或者他们需要更加符合他们个人口味和喜好的结果,因此出现了推荐系统,与搜索引擎对应,大家也习惯称它为推荐引擎。 根据不同的标准,可以对推荐引擎进行如下分类: 1、根据是否为不同的用户推荐不同的数据,可以将推荐引擎分为基于大众行为的推荐引擎和个性化推荐引擎 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出具有某个特征的物品。比如网站的热门推荐与商品降价推荐就是属于这种该方式。 个性化推荐引擎,顾名思义,就是针对对不同的用户,根据他们的口味和喜好给出精确的推荐,这时,系统需要了解需推荐物品和用户的个性化属性,比如基于用户协同过滤的推荐就是通过找到与目标用户具有相同喜好的用户所喜好的物品,来形成推荐结果。 这是一个最基本的推荐引擎分类,其实大部分人们讨论的推荐引擎都是将个性化的推荐引擎,因为从根本上说,只有个性化的推荐引擎才是更加智能的信息发现过程。 2、根据推荐引擎的数据源。 因为大部分推荐引擎的工作原理还是基于物品或者用户的相似集进行推荐

化繁为简:推荐算法三视角

。_饼干妹妹 提交于 2019-12-15 05:02:21
关于推荐系统,如果在忘掉所有的公式和代码,忘记所有的语言描述,脑海里就剩下几张图景,会是什么?一张二维表格,一个拓扑图,一条时间线。这三幅图景,是我看待推荐算法的三种视角。 视角一:矩阵视角 在脑中想象一个二维的表格,每一行代表一个用户,每一列代表一个物品,表格里的每一个点代表用户对物品的操作,这个操作可以是评分,点击,点赞。其中,有些格子记录了行为,有些格子是空的。到这里,我们就建立了基本的矩阵视角,推荐问题转化成了如何补上那些空格子。 用户对物品的评分等于相似用户对该物品评分的加权平均值,这就是user-base的协同过滤了。换一个方向,用户对物品的评分等于该用户对其他物品的评分按物品相似加权平均值,这就是item-base的协同过滤。度量用户之间的相似度,把矩阵的一行——对物品的评分向量作为该用户的表示向量,那么用户之间可以计算向量的距离,可以选择任何距离公式,如余弦距离,皮尔森距离。对于物品之间的相似度,换一个方向即可。 对于任何两个物品,可以计算它们的评分差值。具体来说,两个物品有一批共同的历史评分用户,也就是矩阵里两列有交集的行,每一行可以计算一个差值,将差值平均起来,作为两个物品的距离。和上面的距离不同的,这个差值可以想象成物理中的位移,带着符号的。推荐时,某用户对于某个物品的评分,等于某用户对其他物品评分加上这个位移,再进行平均得到的平均评分。和上面的item

推荐系统常用数据集

☆樱花仙子☆ 提交于 2019-12-12 10:48:49
Book · 1. Book Crossing BookCrossing(BX)数据集由Cai-Nicolas花了的4周(2004年8月/ 9月)从Book-Crossing社区中爬取得到的。 · 下载链接: http://www2.informatik.uni-freiburg.de/~cziegler/BX 电子商务 · 2. Amazon 该数据集包括自1996年5月至2014年7月,来自亚马逊上的1.428亿产品的评论和metadata。 · 下载链接: http://jmcauley.ucsd.edu/data/amazon/ · 3. Retailrocket推荐系统数据集 该数据集由三个文件组成:一个行为数据集(events.csv),一个属性数据集(item_properties.сsv)和一个类目树数据集(category_tree.сsv)。该数据来自现实世界的电子商务网站。 · 下载链接: https://www.kaggle.com/retailrocket/ecommerce-dataset 音乐 · 4. Amazon Music 该数字音乐数据集包含来自亚马逊的评论和元数据 · 下载链接: http://jmcauley.ucsd.edu/data/amazon/ · 5. Yahoo Music 该数据集是一个快照

协同过滤算法

ε祈祈猫儿з 提交于 2019-12-11 23:19:20
推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结。 1. 推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种: 基于内容的推荐 这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。 协调过滤推荐 本文后面要专门讲的内容。协调过滤是推荐算法中目前最主流的种类,花样繁多,在工业界已经有了很多广泛的应用。它的优点是不需要太多特定领域的知识,可以通过基于统计的机器学习算法来得到较好的推荐效果。最大的优点是工程上容易实现,可以方便应用到产品中。目前绝大多数实际应用的推荐算法都是协同过滤推荐算法。 混合推荐 这个类似我们机器学习中的集成学习,博才众长,通过多个推荐算法的结合,得到一个更好的推荐算法,起到三个臭皮匠顶一个诸葛亮的作用。比如通过建立多个推荐算法的模型,最后用投票法决定最终的推荐结果。混合推荐理论上不会比单一任何一种推荐算法差,但是使用混合推荐

十大开源推荐系统简介 [转自oschina]

不羁的心 提交于 2019-12-11 20:06:50
最近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature、LibMF、LibFM等,也有重 量级的适用于工业系统的 Mahout、Oryx、EasyRecd等。PS:这里的top 10仅代表oschina观点。 1. SVDFeature 上海交通大学 Apex实验室 【C++】 项目主页:http://svdfeature.apexlab.org/wiki/Main_Page 项目简介:一个feature-based协同过滤和排序工具,由上海交大Apex实验室开发,代码质量较高。在KDD Cup 2012中获得第一名,KDD Cup 2011中获得第三名,相关论文 发表在2012的JMLR中,这足以说明它的高大上。SVDFeature 包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用 相对较少的内存实现较大规模的单机版矩阵分解运算。另外含有Logistic regression的model,可以很方便的用来进行ensemble。 2. LibMF 台湾国立大学 【C++】 项目主页:http://www.csie.ntu.edu.tw/~cjlin/libmf/ 项目内容:作者Chih-Jen

Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation(知识图谱)

╄→尐↘猪︶ㄣ 提交于 2019-12-10 21:35:31
知识图谱(Knowledge Graph,KG)可以理解成一个知识库,用来存储实体与实体之间的关系。知识图谱可以为机器学习算法提供更多的信息,帮助模型更好地完成任务。 在推荐算法中融入电影的知识图谱,能够将没有任何历史数据的新电影精准地推荐给目标用户。 实例描述 现有一个电影评分数据集和一个电影相关的知识图谱。电影评分数据集里包含用户、电影及评分;电影相关的知识图谱中包含电影的类型、导演等属性。 要求:从知识图谱中找出电影间的潜在特征,并借助该特征及电影评分数据集,实现基于电影的推荐系统。 本实例使用了一个多任务学习的端到端框架MKR。该框架能够将两个不同任务的低层特征抽取出来,并融合在一起实现联合训练,从而达到最优的结果。有关MKR的更多介绍可以参考以下链接: https://arxiv.org/pdf/1901.08907.pdf 一、准备数据集 在1901.08907.pdf的相关代码链接中有3个数据集:图书数据集、电影数据集和音乐数据集。本例使用电影数据集,具体链接如下: https://github.com/hwwang55/MKR/tree/master/data/movie 该数据集中一共有3个文件。 item_index2entity_id.txt:电影的ID与序号。具体内容如图1所示,第1列是电影ID,第2列是序号。 kg.txt:电影的知识图谱

LeetCode(1268):搜索推荐系统 Search Suggestions System(Java)

有些话、适合烂在心里 提交于 2019-12-10 03:55:47
2019.12.9 LeetCode 从零单刷个人笔记整理(持续更新) github: https://github.com/ChopinXBP/LeetCode-Babel 这是参加的第二场周赛。 本题很直接可以想到前缀树+DFS的思路,不过要注意一点神坑:测试用例的字典中可能包含重复的单词。应对这点,只需要在字典树结点中加上条件count用于统计相同单词的出现次数即可。 也可以不直接建树,先将字典单词排序,每次遍历前缀符合的单词,保留集合以供下一轮遍历。多次重复遍历即可得出结果。 传送门:搜索推荐系统 Given an array of strings products and a string searchWord. We want to design a system that suggests at most three product names from products after each character of searchWord is typed. Suggested products should have common prefix with the searchWord. If there are more than three products with a common prefix return the three

[推荐系统]大综合

别等时光非礼了梦想. 提交于 2019-12-09 22:52:20
文章目录 文献阅读目的 推荐系统算法 推荐系统 场景、用户行为数据、矩阵分解、推荐算法分类 推荐系统评测 文献阅读目的 推荐系统算法 推荐系统 场景、用户行为数据、矩阵分解、推荐算法分类 推荐系统评测 来源: CSDN 作者: 少年初心 链接: https://blog.csdn.net/weixin_45918732/article/details/103465856

不懂推荐算法也能设计推荐系统

时光总嘲笑我的痴心妄想 提交于 2019-12-07 09:28:01
本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系统了吗?其实,产品人员可以从产品侧挖掘自己的长处。 下面,以商业化应用推荐为例,讨论如何在不熟悉推荐算法的前提下设计推荐系统。 01 解决什么问题 收入: 推荐用户感兴趣的应用,提高收入。 改善用户体验: 对于用户不感兴趣的应用,少推荐,减少整体的广告显示,提升用户体验(毕竟,多数情况下,商业化与体验是矛盾的)。 02 设定目标 这是比较难的。需要了解当前的推荐策略 与 优化后的策略,才能制定出来。要么你熟悉推荐算法,要么知晓行业数据。建议是:如果没有明确的依据,不要拍脑袋。 03 有什么数据 用户画像,是一个谈到烂的话题。但小体量的公司很难把用户画像落地,因为需求是简单的:根据用户画像,用户的喜欢做……但在实际执行中,很难建立一个数据模型处理万千的数据并应用到推荐场景当中。 下面讨论数据情况,有哪些维度的数据,直接决定数据模型。 1. 基础数据 无论贵公司是以APK还是SDK的方式