搭建推荐系统快速入门,只需五步!

搭建推荐系统快速入门,只需五步!

“人类面临的问题并非信息泛滥,而是信息过滤失效。”


为什么我们需要推荐系统?

随着科技的进步、时代的发展,人类面临的主要问题已经从信息资源匮乏转变成信息资源泛滥。信息从未像现在这般触手可及。但伴随而生的问题是,我们很容易就被淹没在信息的汪洋大海里。因此,我们需要某种工具来帮助过滤冗余信息。

一位研究互联网对社会和经济影响的美国作家Clay Shirky (克莱·舍基)曾说过一句话:“人类面临的问题并非信息泛滥,而是信息过滤失效。”推荐系统正是通过创建信息过滤器,为人类提供帮助。推荐系统的作用不可估量,Netflix甚至举办了一场名为Netflix Prize的活动。该公司事先公布了一个包含部分用户信息及用户对某些电影评分信息的数据集,要求参赛者根据该数据集搭建一个推荐系统,预测其他用户对这些电影的评分,比赛获胜者能拿到100万美元的奖金。最终结果公布后,获胜者的算法要比Netflix自家的算法精准10%。

那么推荐算法的魅力究竟是什么呢?于用户而言,推荐系统犹如“智能”过滤器,帮助他们快速找到心仪之物。于企业而言,推荐系统以内容为驱动,为企业创收。

亚马逊、Spotify(目前全球最大的流行音乐服务商)、Instagram(在线图片及视频分享的社交软件)和Netflix等公司都利用推荐系统帮助用户了解自家网站上的种种产品——书籍、电影、电子产品等。推荐系统通过分析个体用户的行为,向用户推荐对他们可能有用的产品,从而创造用户价值。这篇文章以Klipfolio公司(加拿大一家软件生产公司)Hack Day(专属于程序员和软件开发者等互联网工作者的比赛)当天的工作为例,教你如何通过简单五步,就能快速上手搭建推荐系统。

当前的主流推荐系统有哪些?

目前有两种主流的推荐算法能帮助用户有效过滤信息。

第一种是基于物品的协同过滤算法。这种算法首先分析物品的内容属性,然后向用户推荐与他们之前购买的商品相似的物品。如果用户标记电影A为“喜欢”,推荐系统还会向他推荐具有相同属性的其他电影。这些属性可能包含:电影制片人、主演、电影类型、时长、公映日期等。

第二种是基于用户的协同过滤算法,这同第一种算法的推荐原理不同。这种算法首先筛选出具有相同兴趣爱好的用户集,然后向目标用户推荐该用户集喜欢的、且他没有使用过的商品。这种算法的推荐原理基于如下假设:具有相似用户行为的用户一般也有相似的兴趣爱好。


如何快速入门搭建推荐系统?

Klipfolio公司在向用户推荐商品时,使用的是基于用户的协同过滤系统。新手小白在初学搭建推荐系统时,只需要照着这五步走:

一、 收集整理用户和产品的信息

这一步至关重要。我们要了解我们的目标用户以及目标用户正在使用的产品。本文我们将讨论Klipfolio 公司的产品Klip(一款计算机数据管理插件)。这款产品实现了数据可视化,将用户连接到产品上的数据作为驱动。

首先我们需要了解Klip和 Klip的用户属性之间的联系。生产数据库中存放着能够连接用户与用户所使用的产品的数据表。通过基础查询,我们可以抽取这些信息,将其转换为标准(规范)形式并加载到内存表中。与生产数据库相比,通过内存表查询信息更加迅速、便捷。

这一过程通常被简称为ETL(数据仓库技术,即抽取-转换-加载)。

信息收集至关重要,将信息整理成标准表单同样重要。有了标准表单,我们很容易就能对客户及其使用的产品与其他客户及其他产品进行比较。

在该场景下,我们用数据表中的N维行向量来表示每位用户。N 维列向量则与每一个可能出现的插件对应。如果某一用户使用了所在列的插件, 那么会被标记为“已使用”,反之则是“未使用”。这两种结果分别用数值1和0来标记。上述样本数据表示为如下形式:

数据经转换后,下一步便是讨论如何向目标用户推荐Klip插件了。在此我们假设目标用户为用户A。

一、 比较目标用户和其他用户

有了上述标准表单,我们要做的下一步就是添加新功能,比较用户A 和其他用户。该功能能够筛选出与用户A高度相似的用户集以及这些用户使用过的Klip插件。

我们可以利用常规的机器学习库(如Python的 scikit-learn)以及邻近算法,分析转换后的数据并计算出用户集。该算法使用了线性代数中最常见的距离度量(如欧几里得),计算一组向量(如上述图表)与单个查询向量(如代表用户A 使用过的Klip的向量)之间的相似性。

有了上述模型,只要我们输入一个具有相同N维属性的查询向量,便能从原始数据集中得到一个与用户A高度相似的用户集。假设用户A 分别使用过“谷歌分析-受众指标”插件与“谷歌分析-竞选漏斗”插件。

上述标准表单中的查询向量与下图类似,可以用作输入以接收用户列表(以其在表中的行号表示)。数值0,1,2分别对应原始数据库中的三位用户Lianne, Luke 和 Alex。

一、 添加新功能,筛选与用户A历史使用产品类似但未被该用户使用的产品

我们已经识别出Lianne, Luke和 Alex三位用户与目标用户的相似度最高,下一步便是计算这三位用户的向量,从而筛选与其他用户历史使用商品类似而用户A未使用的Klip。

运用基础集合论,我们可以得到目标用户A曾使用的Klip集和其他相似用户曾使用的Klip集。如:

在示例数据库中显示如下:

这些产品便是算法向目标用户推荐的产品。这种推荐逻辑源于这一事实:目标用户A曾使用过其他相似用户使用过的某一产品, 那么他可能会对他们曾使用的其他产品也有兴趣。

二、 排序与推荐

如果想让目标用户A对新产品感兴趣,那么便要把与用户A相似的用户集曾使用过的产品排在前列,从而提高推荐的准确度。

我们可以将推荐给目标用户A的产品进行排序,从而扩充推荐系统。使用同一产品的相似用户越多,该产品的排序越靠前。背后的推荐逻辑源于:如果与目标用户A相似的众多用户使用该产品,那么目标用户A也有可能使用该产品。

到了这一步,系统便向用户A 推荐在推荐列表中排序靠前的产品。

三、 评估与测试

不要期望推荐系统一次就能生成正确的产品推荐结果。我们要从上述第一步开始,对用户及用户使用的产品不断进行测试,从而提高推荐系统的准确度。

具体来说,我们需要从目标用户中选出一小部分用户作为测试用户,与其余目标用户进行比较。在测试的过程中,首先剔除测试用户曾经使用的一些产品数据,然后重复上述步骤2-5,最后检验系统推荐的产品与之前剔除的产品是否一致。如果推荐系统再次向测试用户推荐了之前被剔除的产品,那么可以说该推荐系统的准确性较高。

示例数据库中一个典型的场景如下图所示:

在这个场景中,我们将在包含用户Lianne, Alex 和Jeremy的数据集的基础上,为用户Luke 和Ali查询推荐结果。如果该推荐系统向测试用户Luke和Ali重新推荐的产品与之前被剔除的产品对应,那么该推荐系统的有效性较高。

小结

概括来说,搭建基于用户的协同过滤推荐系统分五步走:

1. 收集整理系统中每一位用户的产品使用情况,并以标准形式存储收集到的数据,便于后续对不同用户的产品使用情况进行比较。

2. 对比目标用户与与其他用户目前的产品使用情况。运用最近邻算法,计算代表每一用户产品使用情况的向量,从而得出与目标用户相似度最高的推荐模型。

3. 收集与目标用户相似度最高的用户集使用的所有产品,建立产品集;剔除该产品集中用户A正在使用的产品,将该产品集中剩余产品作为推荐产品候选集。

4. 计算推荐产品候选集中不同候选产品出现的频次,并据此排序。产品出现频次越高,排序越靠前。

5. 交叉验证推荐系统。将原始数据随机分为两组,一组做为训练集,一组做为测试集,利用训练集训练分类器,然后利用测试集验证模型,记录最后的分类准确率。

知道了这五步,就找到了快速上手搭建推荐系统的门路。我们要做的下一步便是改进推荐系统,优化网页信息过滤的用户体验,提高该产品的用户留存。

深圳SEO优化公司垦利企业网站设计公司昌吉关键词按天计费多少钱潍坊营销网站哪家好郑州外贸网站设计报价贺州企业网站制作价格临汾网站设计哪家好百色建网站多少钱六安网络推广推荐铁岭SEO按效果付费报价盐田网站设计模板新乡seo网站优化价格飞来峡百度竞价包年推广哪家好德宏企业网站改版公司宝鸡外贸网站设计贵阳百姓网标王多少钱大丰英文网站建设多少钱厦门网站搜索优化价格廊坊建设网站推荐洛阳百姓网标王报价蚌埠网站搜索优化价格松原网站建设报价上饶网站开发哪家好株洲设计网站推荐丽水外贸网站设计价格诸城如何制作网站推荐林芝百度网站优化排名公司信阳关键词按天收费公司安顺网站设计价格南京品牌网站设计公司飞来峡网站推广工具推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化