干货 :深入浅出之推荐系统原理应用介绍

写在正文之前

最近在做推荐系统,在项目组内做了一个分享。今天有些时间,就将逻辑梳理一遍,将ppt内容用文字沉淀下来,便于接下来对推荐系统的进一步研究。推荐系统确实是极度复杂,要走的路还很长。


A First Glance


640?wx_fmt=png


为什么需要推荐系统——信息过载


随着互联网行业的井喷式发展,获取信息的方式越来越多,人们从主动获取信息逐渐变成了被动接受信息,信息量也在以几何倍数式爆发增长。举一个例子,PC时代用google reader,常常有上千条未读博客更新;如今的微信公众号,也有大量的红点未阅读。垃圾信息越来越多,导致用户获取有价值信息的成本大大增加。为了解决这个问题,我个人就采取了比较极端的做法:直接忽略所有推送消息的入口。但在很多时候,有效信息的获取速度极其重要。


640?wx_fmt=jpeg  640?wx_fmt=jpeg


由于信息的爆炸式增长,对信息获取的有效性,针对性的需求也就自然出现了。推荐系统应运而生。


亚马逊的推荐系统


最早的推荐系统应该是亚马逊为了提升长尾货物的用户抵达率而发明的。已经有数据证明,长尾商品的销售额以及利润总和与热门商品是基本持平的。亚马逊网站上在线销售的商品何止百万,但首页能够展示的商品数量又极其有限,给用户推荐他们可能喜欢的商品就成了一件非常重要的事情。当然,商品搜索也是一块大蛋糕,亚马逊的商品搜索早已经开始侵蚀谷歌的核心业务了。


在亚马逊的商品展示页面,经常能够看见:浏览此商品的顾客也同时浏览。


640?wx_fmt=jpeg


这就是非常典型的推荐系统。八卦一下:”剁手族”的兴起,与推荐系统应该有一定关系吧,哈哈。


推荐系统与大数据


大数据与云计算,在当下非常热门。不管是业内同事还是其他行业的朋友,大数据都是一个常谈的话题。就像青少年时期热门的话题:“性”。大家都不太懂,但大家都想说上几句。业内对于大数据的使用其实还处于一个比较原始的探索阶段,前段时间听一家基因公司的CEO说,现在可以将人类的基因完全导出为数据,但这些数据毫无规律,能拿到这些数据,但根本不知道可以干什么。推荐系统也是利用用户数据来发现规律,相对来说开始得更早,运用上也比较成熟。


冷启动问题


推荐系统需要数据作为支撑。但亚马逊在刚刚开始做推荐的时候,是没有大量且有效的用户行为数据的。这时候就会面临着“冷启动”的问题。没有用户行为数据,就利用商品本身的内容数据。这就是推荐系统早期的做法。


基于内容的推荐:

  1. tag 给商品打上各种tag:运动商品类,快速消费品类,等等。粒度划分越细,推荐结果就越精确

  2. 商品名称,描述的关键字 通过从商品的文本描述信息中提取关键字,从而利用关键字的相似来作推荐

  3. 同商家的不同商品 用户购买了商店的一件商品,就推荐这个商店的其他热销商品

  4. 利用经验,人为地做一些关联 一个经典的例子就是商店在啤酒架旁边摆上纸尿布。那么,在网上购买啤酒的人,也可以推荐纸尿布?


由于内容的极度复杂性,这一块儿的规则可以无限拓展。基于内容的推荐与用户行为数据没有关系,在亚马逊早期是比较靠谱的策略。但正是由于内容的复杂性,也会出现很多错误的推荐。比如:小明在网上搜索过保时捷汽车模型。然后推荐系统根据关键字,给小明推荐了价值200万的保时捷911......


用户行为数据—到底在记录什么


在游戏里面,我们的人物角色是一堆复杂的数据,这叫做数据存储;这些数据以一定的结构组合起来,这叫做数据结构。同样地,在亚马逊眼里,我们就是一张张表格中一大堆纷繁复杂的数字。举一个栗子:


小明早上9点打开了亚马逊,先是浏览了首页,点击了几个热销的西装链接,然后在搜索栏输入了nike篮球鞋,在浏览了8双球鞋后,看了一些购买者的评价,最终选定了air jordan的最新款。


这就是一条典型的用户行为数据。亚马逊会将这条行为拆分成设定好的数据块,再以一定的数据结构,存储到亚马逊的用户行为数据仓库中。每天都有大量的用户在产生这样的行为数据,数据量越多,可以做的事情也就越强大。


user-item 用户偏好矩阵


收集数据是为了分析用户的偏好,形成用户偏好矩阵。比如在网购过程中,用户发生了查看,购买,分享商品的行为。这些行为是多样的,所以需要一定的加权算法来计算出用户对某一商品的偏好程度,形成user-item用户偏好矩阵。


640?wx_fmt=jpeg


数据清理


当我们开始有意识地记录用户行为数据后,得到的用户数据会逐渐地爆发式增长。就像录音时存在的噪音一样,获取的用户数据同样存在着大量的垃圾信息。因此,拿到数据的第一步,就是对数据做清理。其中最核心的工作,就是减噪和归一化:


减噪:用户行为数据是在用户的使用过程中产生的,其中包含了大量的噪音和用户误操作。比如因为网络中断,用户在短时间内产生了大量点击的操作。通过一些策略以及数据挖掘算法,来去除数据中的噪音。


归一化:清理数据的目的是为了通过对不同行为进行加权,形成合理的用户偏好矩阵。用户会产生多种行为,不同行为的取值范围差距可能会非常大。比如:点击次数可能远远大于购买次数,直接套用加权算法,可能会使得点击次数对结果的影响程度过大。于是就需要归一算法来保证不同行为的取值范围大概一致。最简单的归一算法就是将各类数据来除以此类数据中的最大值,以此来保证所有数据的取值范围都在[0,1]区间内。


降维算法——SVD奇异值分解


通过记录用户行为数据,我们得到了一个巨大的用户偏好矩阵。随着物品数量的增多,这个矩阵的列数在不断增长,但对单个用户来说,有过行为数据的物品数量是相当有限的,这就造成了这个巨大的用户偏好矩阵实际上相当稀疏,有效的数据其实很少。SVD算法就是为了解决这个问题发明的。


640?wx_fmt=png


将大量的物品提取特征,抽象成了3大类:蔬菜,水果,休闲服。这样就将稀疏的矩阵缩小,极大的减少了计算量。但这个例子仅仅是为了说明SVD奇异值分解的原理。真正的计算实施中,不会有人为的提取特征的过程,而是完全通过数学方法进行抽象降维的。通过对矩阵相乘不断的拟合,参数调整,将原来巨大的稀疏的矩阵,分解为不同的矩阵,使其相乘可以得到原来的矩阵。这样既可以减少计算量,又可以填充上述矩阵中空值的部分。


协同过滤算法


我一直在强调用户行为数据,目的就是为介绍协同过滤算法做铺垫。协同过滤,Collaborative Filtering,简称CF,广泛应用于如今的推荐系统中。通过协同过滤算法,可以算出两个相似度:user-user相似度矩阵; item-item相似度矩阵。


640?wx_fmt=png


为什么叫做协同过滤?是因为这两个相似度矩阵是通过对方来计算出来的。举个栗子:100个用户同时购买了两种物品A和B,得出在item-item相似度矩阵中A和B的相似度为0.8; 1000个物品同时被用户C和用户D购买,得出在user-user相似度矩阵中C和D的相似度是0.9. user-user, item-item的相似度都是通过用户行为数据来计算出来的。


计算相似度的具体算法,大概有几种:欧几里得距离,皮尔逊相关系数,Cosine相似度,Tanimoto系数。具体的算法,有兴趣的同学可以google.


用户画像

用户画像关联阅读:经典 : 系统性阐述用户画像数据建模方法。


提到大数据,不能不说用户画像。经常看到有公司这样宣传:“掌握了千万用户的行为数据,描绘出了极其有价值的用户画像,可以为每个app提供精准的用户数据,助力app推广。” 这样的营销广告经不起半点推敲。用户对每个种类的app的行为都不同,得到的行为数据彼此之间差别很大,比如用户在电商网站上的行为数据,对音乐类app基本没有什么价值。推荐系统的难点,其中很大一部分就在于用户画像的积累过程极其艰难。简言之,就是用户画像与业务本身密切相关。


LR逻辑回归


基于用户偏好矩阵,发展出了很多机器学习算法,在这里再介绍一下LR的思想。具体的逻辑回归,又分为线性和非线性的。其他的机器学习算法还有:K均值聚类算法,Canopy聚类算法,等等。有兴趣的同学可以看看July的文章。链接在最后的阅读原文。


LR逻辑回归分为三个步骤:

  1. 提取特征值

  2. 通过用户偏好矩阵,不断拟合计算,得到每个特征值的权重

  3. 预测新用户对物品的喜好程度


举个栗子:

小明相亲了上千次,我们收集了大量的行为数据,以下数据仅仅是冰山一角。


640?wx_fmt=png


通过大量的拟合计算得出,特征值“个性开朗程度”的权重为30%,“颜值”的权重为70%。哎,对这个看脸的世界已经绝望了,写完这篇文章,就去订前往韩国的机票吧。


然后,通过拟合出的权重,来预测小明对第一千零一次相亲对象的喜爱程度。


640?wx_fmt=png


这就是LR逻辑回归的原理。具体的数学算法,有兴趣的同学可以google之。


如何利用推荐系统赚钱


还是以亚马逊为例。小明是个篮球迷,每个月都会买好几双篮球鞋。通过几个月的购买记录,亚马逊已经知道小明的偏好,准备给小明推荐篮球鞋。但篮球鞋品牌这么多,推荐哪一个呢?笑着说:哪个品牌给我钱多,就推荐哪个品牌。这就是最简单的流量生意了。这些都叫做:商业规则。


但在加入商业规则之前,需要让用户感知到推荐的准确率。如果一开始就强推某些置顶的VIP资源,会极大地损害用户体验,让用户觉得推荐完全没有准确性。这样的后果对于推荐系统的持续性发展是毁灭性的。


过滤规则


协同过滤只是单纯地依赖用户行为数据,在真正的推荐系统中,还需要考虑到很多业务方面的因素。以音乐类app为例。周杰伦出了一张新专辑A,大部分年轻人都会去点击收听,这样会导致其他每一张专辑相似专辑中都会出现专辑A。这个时候,再给用户推荐这样的热门专辑就没有意义了。所以,过滤掉热门的物品,是推荐系统的常见做法之一。这样的规则还有很多,视不同的业务场景而定。


推荐的多样性


与推荐的准确性有些相悖的,是推荐的多样性。比如说推荐音乐,如果完全按照用户行为数据进行推荐,就会使得推荐结果的候选集永远只在一个比较小的范围内:听小清新音乐的人,永远也不会被推荐摇滚乐。这是一个很复杂的问题。在保证推荐结果准确的前提下,按照一定的策略,去逐渐拓宽推荐结果的范围,给予推荐结果一定的多样性,这样才不会腻嘛。


持续改进


推荐系统具有高度复杂性,需要持续地进行改进。可能在同一时间内,需要上线不同的推荐算法,做A/B test。根据用户对推荐结果的行为数据,不断对算法进行优化,改进。要走的路还很长:路漫漫其修远兮,吾将上下而求索。

(END)


转自微信公众号:互联网与作曲家;作者:neil;

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。

关联阅读

原创系列文章:

1:从0开始搭建自己的数据运营指标体系(概括篇)

2 :从0开始搭建自己的数据运营指标体系(定位篇)

3 :从0开始搭建自己的数据运营体系(业务理解篇)

4 :数据指标的构建流程与逻辑

5 :系列 :从数据指标到数据运营指标体系

6:   实战 :为自己的公号搭建一个数据运营指标体系

数据运营 关联文章阅读:  

运营入门,从0到1搭建数据分析知识体系    

推荐 :数据分析师与运营协作的9个好习惯

干货 :手把手教你搭建数据化用户运营体系

推荐 :最用心的运营数据指标解读

干货 : 如何构建数据运营指标体系

从零开始,构建数据化运营体系

干货 :解读产品、运营和数据三个基友关系

干货 :从0到1搭建数据运营体系

数据分析、数据产品 关联文章阅读:

干货 :数据分析团队的搭建和思考

数据分析师必需具备的10种分析思维。

如何构建大数据层级体系,看这一文章就够了

干货 : 聚焦于用户行为分析的数据产品

如何构建大数据层级体系,看这一文章就够了

80%的运营注定了打杂?因为你没有搭建出一套有效的用户运营体系

从底层到应用,那些数据人的必备技能

读懂用户运营体系:用户分层和分群

做运营必须掌握的数据分析思维,你还敢说不会做数据分析

商务合作|约稿 请加qq:365242293  


更多相关知识请回复:“ 月光宝盒 ”;

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

640?wx_fmt=png

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)...

requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推。 二.<dd>标签的结构(含有电影相关信息) 三、源代码 import requests import re import …

爬虫之抓取猫眼电影排行

一 需求 我们要提取出猫眼电影TOP100的电影名称、时间、评分、图片等信息&#xff0c;提取的站点URL为http://maoyan.com/board/4&#xff0c;提取的结果会以文件形式保存下来。 二 技术手段 利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容。 三 抓取分析 我们…

2019-01-18-Python爬取猫眼电影排行榜

title: Python爬取猫眼电影排行榜 date: 2019-01-18 20:44:16 tags: pythonlxmlrequestsjson categories: python Python爬取猫眼电影排行榜 requests 获取 htmllxml 解析 htmlxpath 定位元素json 存文件 自己写的 import requests from lxml import html import json # 存…

网络爬虫学习(十二)

之前(https://blog.csdn.net/weixin_44526949/article/details/86738980)学习了Selenium模块的使用&#xff0c;这个模块&#xff0c;我们知道是用来驱动浏览器来完成一些操作&#xff0c;比如元素的交互&#xff0c;页面的跳转等等。那么从这篇之后&#xff0c;会进行一些实际…

大数据与分析正在重新定义5个行业:医学、零售、建筑、银行、交通

0 1 医学 医疗行业依靠专用设备来跟踪生命体征、协助医生诊断。医疗行业同样也使用大数据和分析工具以多种方式改善健康状况。 可穿戴式追踪器向医生传递信息并告诉他们患者是否服用药物&#xff0c;或者他们是否遵循治疗或疾病管理计划。随着时间的推移&#xff0c;收集的汇编…

正则表达式实战

title: 爬虫系列之正则表达式实战 date: 2019-04-15 23:14:30 tags: 正则表达式 categories: 爬虫 toc: true 前言 我们前面已经详细的了解过了正则表达式的具体功能和用法&#xff0c;今天我们就在实战过程中使用正则表达式。我们的目标网站是&#xff1a;http://maoyan.com/b…

使用正则表达式爬虫抓取猫眼电影排行Top100

目标站点分析 分析网址 首页 https://maoyan.com/点击榜单 https://maoyan.com/board点击Top100 https://maoyan.com/board/4目标站点为 https://maoyan.com/board/4https://maoyan.com 为首页/board 为榜单标签/4 就是下面第五个按钮Top100这是第一页 第二页 https://mao…

新手如何发布第一个Python项目开源包?这里有一份详细指南

选自 medium&#xff1b;作者&#xff1a;Gabriel Lerner、Nathan Toubiana 机器之心编译&#xff1b;参与&#xff1a;陈韵莹、张倩 好不容易码了个 python 项目&#xff0c;是不是很兴奋&#xff1f;那么怎么把这个项目发出去让大家看到呢&#xff1f;本文作者写了一份在 Git…

Requests+正则表达式爬取猫眼电影(TOP100榜)

猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名、图片、名称、主要演员、上映时间与评分提取出来并保存到文件或者数据库,本人也是巩固知识进行练习,整理笔记方便阅读 获取单个网页 # 获取单个…

推荐 :深入浅出之个性化推荐系统实践

大数据在网易内部的应用丰富多彩&#xff0c;在《让机器读懂用户--大数据中的用户画像》一文中&#xff0c;网易工程师对用户画像进行了较为系统的介绍&#xff0c;并提到用户画像的一个重要作用在于个性化推荐。但企业怎样才能正确认识和利用推荐系统来拓展业务&#xff1f; 本…

7个Python特殊技巧,助力你的数据分析工作之路

选自TowardsDataScience 作者&#xff1a; Perter Nistrup 机器之心编译 参与&#xff1a; 魔王 如何提升数据分析能力&#xff1f;Peter Nistrup 根据自身经验列出了 7 个有用工具。 本文列举了一些提升或加速日常数据分析工作的技巧&#xff0c;包括&#xff1a; 1. Pandas…

推荐 :一文带你了解协同过滤的前世今生

导读 协同过滤&#xff1a;在推荐领域中&#xff0c;让人耳熟能详、影响最大、应用最广泛的模型莫过于协同过滤。2003年&#xff0c;Amazon发表的论文[1]让协同过滤成为今后很长时间的研究热点和业界主流的推荐模型。 什么是协同过滤 协同过滤是基于用户行为设计的推荐算法&…

【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

在本篇博文当中&#xff0c;将会教会大家如何使用高性能爬虫&#xff0c;快速爬取并解析页面当中的信息。一般情况下&#xff0c;如果我们请求网页的次数太多&#xff0c;每次都要发出一次请求&#xff0c;进行串行执行的话&#xff0c;那么请求将会占用我们大量的时间&#xf…

爬虫之静态页面抓取

静态网页抓取 在网络爬虫中&#xff0c;静态网页的数据比较容易获取&#xff0c;因为其所有数据都呈现在网页的HTML代码中 在静态网页抓取中&#xff0c;Python中的Requests库能够容易实现这个需求 通过requests发起Http请求 import requests url"http://www.santostan…

京东常用的API接口

今天分享的是京东平台API&#xff0c;关键字搜索接口。 点击测试​​​​​​​ 万邦京东按关键字搜索商品 API 返回值说明&#xff1a; { "items": { "keyword": "游戏", "page": 1, "real_total…

请问,你了解推荐系统吗

你知道吗 推荐系统&#xff1a;解决问题&#xff1a;系统环节&#xff1a;召回路径&#xff1a;推荐架构&#xff1a;通用技术架构&#xff1a;实现推荐&#xff1a;基于内容的推荐系统【Content-Based Recommendations】余弦相似度&#xff1a;示例计算&#xff1a;余弦相似度…

一条挨踢老狗的 2017 年终总结

2018年是中国的狗年&#xff0c;狗常常象征着忠诚&#xff0c;有忠贞不渝的意义&#xff0c;有时也代表财富。一条常年战斗在挨踢界&#xff0c;对挨踢事业忠贞不渝的老狗今天来回顾2017、展望2018。 作为一条对挨踢事业忠贞不渝的老狗&#xff0c;理所当然是热爱这个工作的&a…

Java面对对象三大特性之封装】

目录 1.封装2. 访问权限2.1 public权限2.2private权限2.3 默认权限 3.包的定义4. static成员5.静态成员初始化6.对象的打印 1.封装 封装&#xff1a;就是将数据和操作数据的方法进行结合&#xff0c;隐藏对象的属性和方法&#xff0c;仅对外实现一些接口和对象进行交互 其实就是…

Storm入门之第6章一个实际的例子

本文翻译自《Getting Started With Storm》译者&#xff1a;吴京润 编辑&#xff1a;郭蕾 方腾飞 本章要阐述一个典型的网络分析解决方案&#xff0c;而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是&#xff0c;基于Storm的方案会实时输出结果。 我们的这个…

20222817 2022-2023-2《网络攻防实践》第十一次作业

目录 1.实践内容 2.实践过程 3 学习中遇到的问题及解决 4 实践总结 1.实践内容 1.Web浏览器渗透攻击实验 任务&#xff1a;使用攻击机和Windows靶机进行浏览器渗透攻击实验&#xff0c;体验网页木马构造及实施浏览器攻击的实际过程。 2.取证分析实践—网页木马攻击场景分析…