reading notes -- Amazon.com Recommendations: Item-to-Item Collaborative Filtering

中英译本及下载:http://blog.sina.com.cn/s/blog_586631940100pduh.html

以下是摘要笔记:

 算法应当结合用户的习惯,用户特点的分类

观影习惯是比较单一 还是比较分散

这是不同的

一、推荐的宗旨:推荐应该要帮助顾客找到和发现新的、相关的、有趣的商品。

Recommendations should help a customer find and discover new, relevant, and interesting items.

二、解决推荐问题有三个通常的途径:传统的协同过滤,聚类模型,以及基于搜索的方法。

推荐算法
大多数推荐算法,都始于先找出一个顾客集合,他们买过和评级过的商品,与当前用户买过和评级过的商品有重叠。算法把来自这些相似顾客的商品聚集起来,排除该用户已经购买过或评级过的商品,并向该用户推荐其余的商品。

这些算法有两个最常见的版本:协同过滤聚类模型。其他算法——包括基于搜索的方法以及我们自己的商品到商品协同过滤——都集中于寻找相似的商品,而不是相似的顾客。针对用户所购买和评级的每一件商品,算法试图找到相似的产品,然后聚集这些相似的商品,并给予推荐。 

1.传统的协同过滤

利用协同过滤来产生推荐,很耗计算,如果降维,则会影响品质。

2.聚类模型

算法的目标是,把该用户分配到含有最相似顾客的细分人群里,然后,算法再利用该细分顾客人群的购买和评级,来生成推荐。

较之协同过滤,聚类模型有更好的在线可扩展性和性能、复杂和昂贵的聚类计算会离线运行。然而,推荐品质却是低的

3.基于搜索的方法
基于搜索或内容的方法,将推荐问题视为相关商品的搜索,如果该用户只有少数购买或评级,基于搜索的推荐算法在计算量和性能上都不错。然而,对于有数千次购买的用户,要以针对所有商品的查询为基础也不太可行,若使用子集则又降低了品质。

三、电子商务推荐算法的环境挑战:
• 大型零售商有海量的数据,以千万计的顾客,以及数以百万计的登记在册的不同商品。
• 许多应用要求结果实时返回,在半秒之内,还要产生高质量的推荐。
• 新顾客很典型,他们的信息很有限,只能以少量购买或产品评级为基础。
• 较老的顾客信息丰沛,以大量的购买和评级为基础。
• 顾客数据不稳定:每一次交互都可提供有价值的顾客数据,算法必须立即对新的信息作出响应。

 

商品到商品的协同过滤

 

把推荐作为一种定向营销工具。(每有一个用户,就有一个用户的个性化商店)

它如何工作

协同过滤的变种,将商品分类,而不是用户

对于非常大的数据集,一个可扩展的推荐算法必须离线运行最昂贵的计算。而现有方法达不到这样的要求:
• 传统的协同过滤只做很少或不做离线计算,其在线计算量取决于顾客和登记在册商品的数量。在大数据集的情况下,这样的算法不可行,除非使用维度降低、抽样或区隔——所有这些都降低了推荐的品质。
• 聚类模型能离线运行大量的计算,但推荐品质相对较差。出于改进,可以增加人群细分的数量,但这会使在线的用户-细分人群的分类变得昂贵。
• 基于搜索的模型离线建立起关键词、范畴、作者索引,但不能提供符合兴趣、定向内容的推荐。对于购买和评级很多的顾客来说,这些算法的扩展性不佳。
商品到商品协同过滤的可扩展性和性能的关键是,它离线建立耗时巨大的相似商品表格。该算法的在线部分——针对当前用户的购买和评级来寻找相似的商品——计算量独立于商品目录的规模或顾客的总数;仅仅取决于该用户买过或评级过多少个商品。因此,甚至是对于超大数据集,算法也很快速。由于该算法能推荐高度关联的相似商品,推荐的品质就很出色10。与传统的协同过滤不同,该算法在用户数据有限的情况下也能运行良好,在少至2到3件商品的基础上,产生高品质的推荐。

 连接:

http://blog.sina.com.cn/s/blog_586631940100pduh.html

http://www.xysay.com/amazon-item-to-item-collaborative-filtering-207.html

转载于:https://www.cnblogs.com/lance-/p/3935327.html

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

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

相关文章

Leetcode刷题(3)整数反转

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1题目 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反…

Git之diff和status

我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: 现在,运行git status命令看看结果 git status命令可以让我们时刻查看工…

移动端H5终端适配方案

1.JS的根据不同屏幕宽度动态设置html的font-size,使用rem布局。 a.手淘方案 flexiblerem(参考https://github.com/amfe/article/issues/17) 引入flexible.js,不需要在html结构中加入viewport标签。 flexible.js会在元素上增加一…

WWW超文本源码浏览器

Linux下的C程序&#xff1a;读取远程服务器上的网页源码。 /*功能&#xff1a;WWW超文本源码浏览器 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <sys/socket.h> #include <netinet/in.h&g…

TCP为何采用三次握手来建立连接,若采用二次握手可以吗

1. TCP简介 TCP&#xff08;Transmission Control Protocol 传输控制协议&#xff09;是一种面向连接&#xff08;连接导向&#xff09;的、可靠的、基于IP的传输层协议&#xff0c;采用三次握手确认建立一个连接。 TCP为了保证报文传输的可靠[1]&#xff0c;就给每个包一个序号…

在asp.net中备份还原SQL Server数据库

在web中&#xff0c;安全性主要体现在两个方面&#xff1a;一个是程序安全性&#xff0c;即防止网页在插入恶意代码&#xff1b;另一个是数据库安全性&#xff0c;这个我们可以经常备份数据库来实现。在文中&#xff0c;我将演示如果在网页中备份和恢复数据库。其实备份和恢复数…

Leetcode刷题(4)罗马数字转整数

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&a…

深入理解移动前端开发之viewport

在移动设备上进行网页的重构或开发&#xff0c;首先得搞明白的就是移动设备上的viewport了&#xff0c;只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用&#xff0c;才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。 一、viewport的概念 通…

Git之版本回退

像这样&#xff0c;你不断对文件进行修改&#xff0c;然后不断提交修改到版本库里&#xff0c;就好比玩RPG游戏时&#xff0c;每通过一关就会自动把游戏状态存盘&#xff0c;如果某一关没过去&#xff0c;你还可以选择读取前一关的状态。有些时候&#xff0c;在打Boss之前&…

整型数组的循环右移

/*实现整型数组的循环右移cycleMoveR1&#xff1a;临时空间比较大&#xff0c;但是时间复杂度为O(1)cycleMoveR2&#xff1a;临时空间比较小&#xff0c;时间复杂度为O(n)*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h&…

Leetcode刷题(5)最长公共前缀

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&…

Internal Server Error - http code 500

Eror Example 1 :转载于:https://www.cnblogs.com/shuman/p/3938096.html

面包与童话

面包主导童话? 或许吧&#xff01; 油吧 我会吃上面包的 至于童话 随便吧 与我无关 心也会慢慢慢慢的平静下来的 转载于:https://www.cnblogs.com/fairy-tale/articles/1272636.html

Git之工作区和暂存区

工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#xff0c;比如我的learngit文件夹就是一个工作区 版本库&#xff08;Repository&#xff09; 工作区有一个隐藏目录.git&#xff0c;这个不算工作区&#xff0c;而是Git的版本库 Git的版本库…

vue移动端html5页面根据屏幕适配的四种解决方法

最近做了两个关于h5页面对接公众号的项目&#xff0c;不得不提打开微信浏览器内置地图导航的功能确实有点恶心。下次想起来了的话&#xff0c;进行总结分享一下如何处理。在vue移动端h5页面当中&#xff0c;其中适配是经常会遇到的问题&#xff0c;这块主要有死个方法可以适用。…

数据报套接字服务端和客户端

这里练习用数据报套接字来通讯。 listener.c // 数据报套接字服务器(listener.c)&#xff1a;在指定端口监听&#xff0c;收到数据报后关闭连接#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.…

javascript学习系列(12):数组中的join方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说j…

NIO机制总结

Selector selector Selector.open();普通的IO流的读取&#xff0c;写入都是一个字节一个字节或一个字符一个字符的循环进行&#xff0c;在这个过程中&#xff0c;程序是阻塞的&#xff0c;inputStream虽然既可以一个字节一个字节的读 inputSream.read()&#xff0c;也可以批量…

Git之管理修改

现在&#xff0c;假定你已经完全掌握了暂存区的概念。下面&#xff0c;我们要讨论的就是&#xff0c;为什么Git比其他版本控制系统设计得优秀&#xff0c;因为Git跟踪并管理的是修改&#xff0c;而非文件 你会问&#xff0c;什么是修改&#xff1f;比如你新增了一行&#xff0…

双绞线施工质量的检测方法

综合布线工程的施工与结束的过程中&#xff0c;往往需要对布线工程的质量进行必要的检测&#xff0c;其中双绞线的施工质量首当其冲&#xff0c;笔者根据多年的设计施工经验&#xff0c;归纳出一套比较实用的检测程序&#xff0c;描述出来与各位同行共享。测试前的检查不可少 检…