关于电商售后系统系统中,用户推荐列表是实时计算的吗

Spark大型项目实战:电商用户行为分析大数据平台 下载_spark吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,010贴子:
Spark大型项目实战:电商用户行为分析大数据平台 下载收藏
链接: 密码:erlf
卧室装修,推荐这些床,舒适透气,还有折扣!
一、大数据集群搭建第1讲-课程介绍第2讲-课程环境搭建:CentOS 6.4集群搭建第3讲-课程环境搭建:hadoop-2.5.0-cdh5.3.6集群搭建第4讲-课程环境搭建:hive-0.13.1-cdh5.3.6安装第5讲-课程环境搭建:zookeeper-3.4.5-cdh5.3.6集群搭建第6讲-课程环境搭建:kafka_2.9.2-0.8.1集群搭建第7讲-课程环境搭建:flume-ng-1.5.0-cdh5.3.6安装第8讲-课程环境搭建:离线日志采集流程介绍第9讲-课程环境搭建:实时数据采集流程介绍第10讲-课程环境搭建:Spark 1.5.1客户端安装以及基于YARN的提交模式二、用户访问session分析: 第11讲-用户访问session分析:模块介绍第12讲-用户访问session分析:基础数据结构以及大数据平台架构介绍第13讲-用户访问session分析:需求分析第14讲-用户访问session分析:技术方案设计第15讲-用户访问session分析:数据表设计第16讲-用户访问session分析:Eclipse工程搭建以及工具类说明第17讲-用户访问session分析:开发配置管理组件第18讲-用户访问session分析:JDBC原理介绍以及增删改查示范第19讲-用户访问session分析:数据库连接池原理第20讲-用户访问session分析:单例设计模式第21讲-用户访问session分析:内部类以及匿名内部类第22讲-用户访问session分析:开发JDBC辅助组件(上)第23讲-用户访问session分析:开发JDBC辅助组件(下)第24讲-用户访问session分析:JavaBean概念讲解第25讲-用户访问session分析:DAO模式讲解以及TaskDAO开发第26讲-用户访问session分析:工厂模式讲解以及DAOFactory开发第27讲-用户访问session分析:JSON数据格式讲解以及fastjson介绍第28讲-用户访问session分析:Spark上下文构建以及模拟数据生成第29讲-用户访问session分析:按session粒度进行数据聚合第30讲-用户访问session分析:按筛选参数对session粒度聚合数据进行过滤第31讲-用户访问session分析:session聚合统计之自定义Accumulator第32讲-用户访问session分析:session聚合统计之重构实现思路与重构session聚合第33讲-用户访问session分析:session聚合统计之重构过滤进行统计第34讲-用户访问session分析:session聚合统计之计算统计结果并写入MySQL第35讲-用户访问session分析:session聚合统计之本地测试第36讲-用户访问session分析:session聚合统计之使用Scala实现自定义Accumulator第37讲-用户访问session分析:session随机抽取之实现思路分析第38讲-用户访问session分析:session随机抽取之计算每天每小时session数量第39讲-用户访问session分析:session随机抽取之按时间比例随机抽取算法实现第40讲-用户访问session分析:session随机抽取之根据随机索引进行抽取第41讲-用户访问session分析:session随机抽取之获取抽取session的明细数据第42讲-用户访问session分析:session随机抽取之本地测试第43讲-用户访问session分析:top10热门品类之需求回顾以及实现思路分析第44讲-用户访问session分析:top10热门品类之获取session访问过的所有品类第45讲-用户访问session分析:top10热门品类之计算各品类点击、下单和支付的次数第46讲-用户访问session分析:top10热门品类之join品类与点击下单支付次数第47讲-用户访问session分析:top10热门品类之自定义二次排序key第48讲-用户访问session分析:top10热门品类之进行二次排序第49讲-用户访问session分析:top10热门品类之获取top10品类并写入MySQL第50讲-用户访问session分析:top10热门品类之本地测试第51讲-用户访问session分析:top10热门品类之使用Scala实现二次排序第52讲-用户访问session分析:top10活跃session之开发准备以及top10品类RDD生成第53讲-用户访问session分析:top10活跃session之计算top10品类被各sessoin点击的次数第54讲-用户访问session分析:top10活跃session之分组取TopN算法获取top10活跃session第55讲-用户访问session分析:top10活跃session之本地测试以及阶段总结三、企业级性能调优、troubleshooting经验与数据倾斜解决方案:第56讲-用户访问session分析:性能调优之在实际项目中分配更多资源第57讲-用户访问session分析:性能调优之在实际项目中调节并行度第58讲-用户访问session分析:性能调优之在实际项目中重构RDD架构以及RDD持久化第59讲-用户访问session分析:性能调优之在实际项目中广播大变量第60讲-用户访问session分析:性能调优之在实际项目中使用Kryo序列化第61讲-用户访问session分析:性能调优之在实际项目中使用fastutil优化数据格式第62讲-用户访问session分析:性能调优之在实际项目中调节数据本地化等待时长第63讲-用户访问session分析:JVM调优之原理概述以及降低cache操作的内存占比第64讲-用户访问session分析:JVM调优之调节executor堆外内存与连接等待时长第65讲-用户访问session分析:Shuffle调优之原理概述第66讲-用户访问session分析:Shuffle调优之合并map端输出文件第67讲-用户访问session分析:Shuffle调优之调节map端内存缓冲与reduce端内存占比第68讲-用户访问session分析:Shuffle调优之HashShuffleManager与SortShuffleManager第69讲-用户访问session分析:算子调优之MapPartitions提升Map类操作性能第70讲-用户访问session分析:算子调优之filter过后使用coalesce减少分区数量第71讲-用户访问session分析:算子调优之使用foreachPartition优化写数据库性能第72讲-用户访问session分析:算子调优之使用repartition解决Spark SQL低并行度的性能问题第73讲-用户访问session分析:算子调优之reduceByKey本地聚合介绍第74讲-用户访问session分析:troubleshooting之控制shuffle reduce端缓冲大小以避免OOM第75讲-用户访问session分析:troubleshooting之解决JVM GC导致的shuffle文件拉取失败第76讲-用户访问session分析:troubleshooting之解决YARN队列资源不足导致的application直接失败第77讲-用户访问session分析:troubleshooting之解决各种序列化导致的报错第78讲-用户访问session分析:troubleshooting之解决算子函数返回NULL导致的问题第79讲-用户访问session分析:troubleshooting之解决yarn-client模式导致的网卡流量激增问题第80讲-用户访问session分析:troubleshooting之解决yarn-cluster模式的JVM栈内存溢出问题第81讲-用户访问session分析:troubleshooting之错误的持久化方式以及checkpoint的使用第82讲-用户访问session分析:数据倾斜解决方案之原理以及现象分析第83讲-用户访问session分析:数据倾斜解决方案之聚合源数据以及过滤导致倾斜的key第84讲-用户访问session分析:数据倾斜解决方案之提高shuffle操作reduce并行度第85讲-用户访问session分析:数据倾斜解决方案之使用随机key实现双重聚合第86讲-用户访问session分析:数据倾斜解决方案之将reduce join转换为map join第87讲-用户访问session分析:数据倾斜解决方案之sample采样倾斜key单独进行join第88讲-用户访问session分析:数据倾斜解决方案之使用随机数以及扩容表进行join四、页面单跳转化率统计:第89讲-页面单跳转化率:模块介绍第90讲-页面单跳转化率:需求分析、技术方案设计、数据表设计第91讲-页面单跳转化率:编写基础代码第92讲-页面单跳转化率:页面切片生成以及页面流匹配算法实现第93讲-页面单跳转化率:计算页面流起始页面的pv第94讲-页面单跳转化率:计算页面切片的转化率第95讲-页面单跳转化率:将页面切片转化率写入MySQL第96讲-页面单跳转化率:本地测试第97讲-页面单跳转化率:生产环境测试第98讲-用户访问session分析:生产环境测试五、各区域热门商品统计:第99讲-各区域热门商品统计:模块介绍第100讲-各区域热门商品统计:需求分析、技术方案设计以及数据设计第101讲-各区域热门商品统计:查询用户指定日期范围内的点击行为数据第102讲-各区域热门商品统计:异构数据源之从MySQL中查询城市数据第103讲-各区域热门商品统计:关联城市信息以及RDD转换为DataFrame后注册临时表第104讲-各区域热门商品统计:开发自定义UDAF聚合函数之group_concat_distinct()第105讲-各区域热门商品统计:查询各区域各商品的点击次数并拼接城市列表第106讲-各区域热门商品统计:关联商品信息并使用自定义get_json_object函数和内置if函数标记经营类型第106讲-各区域热门商品统计:使用开窗函数统计各区域的top3热门商品第107讲-各区域热门商品统计:使用内置case when函数给各个区域打上级别标记第108讲-各区域热门商品统计:将结果数据写入MySQL中第109讲-各区域热门商品统计:Spark SQL数据倾斜解决方案第110讲-各区域热门商品统计:生产环境测试六、广告点击流量实时统计:第111讲-广告点击流量实时统计:需求分析、技术方案设计以及数据设计第112讲-广告点击流量实时统计:为动态黑名单实时计算每天各用户对各广告的点击次数第113讲-广告点击流量实时统计:使用高性能方式将实时计算结果写入MySQL中第114讲-广告点击流量实时统计:过滤出每个batch中的黑名单用户以生成动态黑名单第115讲-广告点击流量实时统计:基于动态黑名单进行点击行为过滤第116讲-广告点击流量实时统计:计算每天各省各城市各广告的点击量第117讲-广告点击流量实时统计:计算每天各省的top3热门广告第118讲-广告点击流量实时统计:计算每天各广告最近1小时滑动窗口内的点击趋势第119讲-广告点击流量实时统计:实现实时计算程序的HA高可用性第120讲-广告点击流量实时统计:对实时计算程序进行性能调优第121讲-广告点击流量实时统计:生产环境测试第122讲-课程总结:都学到了什么?新升级增加课程大纲:第123讲-(赠送)Spark 2.0-新特性介绍第124讲-(赠送)Spark 2.0-新特性介绍-易用性:标准化SQL支持以及更合理的API第125讲-(赠送)Spark 2.0-新特性介绍-高性能:让Spark作为编译器来运行第126讲-(赠送)Spark 2.0-新特性介绍-智能化:Structured Streaming介绍第127讲-(赠送)Spark 2.0-新特性介绍-Spark 1.x的Volcano Iterator Model技术缺陷分析第128讲-(赠送)Spark 2.0-新特性介绍-whole-stage code generation技术和vectorization技术第129讲-(赠送)Spark 2.0-Spark 2.x与1.x对比以及分析、学习建议以及使用建议第130讲-(赠送)Spark 2.0-课程环境搭建:虚拟机、CentOS、Hadoop、Spark等第131讲-(赠送)Spark 2.0-开发环境搭建:Eclipse+Maven+Scala+Spark第132讲-基于Spark 2.0的用户活跃度分析:模块介绍以及交互式用户行为分析系统的解释第133讲-基于Spark 2.0的用户活跃度分析:统计指定时间内访问次数最多的10个用户第134讲-基于Spark 2.0的用户活跃度分析:统计指定时间内购买金额最多的10个用户第135讲-基于Spark 2.0的用户活跃度分析:统计最近一个周期相比上一个周期访问次数增长最多的10个用户第136讲-基于Spark 2.0的用户活跃度分析:统计最近一个周期相比上一个周期购买金额增长最多的10个用户第137讲-基于Spark 2.0的用户活跃度分析:统计指定注册时间范围内头7天访问次数最高的10个用户第138讲-基于Spark 2.0的用户活跃度分析:统计指定注册时间范围内头7天购买金额最高的10个用户
链接失效了,求共享
共享了也没法看,需要播放码
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。实时推荐系统的3种方式 - 简书
实时推荐系统的3种方式
推荐系统介绍
自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。1998年,林登和他的同事申请了“item-to-item”协同过滤技术的专利,经过多年的实践,亚马逊宣称销售的推荐占比可以占到整个销售GMV(Gross Merchandise Volume,即年度成交总额)的30%以上。随后Netflix举办的推荐算法优化竞赛,吸引了数万个团队参与角逐,期间有上百种的算法进行融合尝试,加快了推荐系统的发展,其中SVD(Sigular Value Decomposition,即奇异值分解,一种正交矩阵分解法)和Gavin Potter跨界的引入心理学的方法进行建模,在诸多算法中脱颖而出。其中,矩阵分解的核心是将一个非常稀疏的用户评分矩阵R分解为两个矩阵:User特性的矩阵P和Item特性的矩阵Q,用P和Q相乘的结果R'来拟合原来的评分矩阵R,使得矩阵R'在R的非零元素那些位置上的值尽量接近R中的元素,通过定义R和R'之间的距离,把矩阵分解转化成梯度下降等求解的局部最优解问题。Netflix最新的实时推荐系统如图9-5所示。
图9-5 NetFlix的实时推荐系统系统架构图(来源:)与此同时,Pandora、LinkedIn、Hulu、Last.fm等一些网站在个性化推荐领域都展开了不同程度的尝试,使得推荐系统在垂直领域有了不少突破性进展,但是在全品类的电商、综合的广告营销上,进展还是缓慢,仍然有很多的工作需要探索。特别是在全品类的电商中,单个模型在母婴品类的效果还比较好,但在其他品类就可能很差,很多时候需要根据品类、推荐栏位、场景等不同,设计不同的模型。同时由于用户、SKU不停地增加,需要定期对数据进行重新分析,对模型进行更新,但是定期对模型进行更新,无法保证推荐的实时性,一段时间后,由于模型训练也要相当时间,可能传统的批处理的Hadoop的方法,无法再缩短更新频率,最终推荐效果会因为实时性问题达到一个瓶颈。推荐算法主要有基于人口统计学的推荐、基于内容的推荐、基于协同过滤的推荐等,而协同过滤算法又有基于邻域的方法(又称基于记忆的方法)、隐语义模型、基于图的随机游走算法等。基于内容的推荐解决了商品的冷启动问题,但是解决不了用户的冷启动问题,并且存在过拟合问题(往往在训练集上有比较好的表现,但在实际预测中效果大打折扣),对领域知识要求也比较高,通用性和移植性比较差,换一个产品形态,往往需要重新构建一套,对于多媒体文件信息特征提取难度又比较大,往往只能通过人工标准信息。基于邻域的协同过滤算法,虽然也有冷启动问题和数据稀疏性等问题,但是没有领域知识要求,算法通用性好,增加推荐的新颖性,并且对行为丰富的商品,推荐准确度较高。基于模型的协同过滤算法在一定程度上解决了基于邻域的推荐算法面临的一些问题,在RMSE(Root Mean Squared Error,即均方根误差)等推荐评价指标上更优,但是通常算法复杂,计算开销大,所以目前基于邻域的协同过滤算法仍然是最为流行的推荐算法。基于邻域的协同过滤主要分为User CF和Item CF,根据以下条件不同,各自又有不同的使用场景。计算量大小不同。基于邻域的协同过滤的时间复杂度为
, 其中n为用户数,m为产品数,应用SVD等降维方法可以降低算法复杂度,但是分解矩阵又会花费一定的时间。数据稀疏性倾斜度不同。例如,User CF主要基于用户对共同项目的评分,如果用户远远多于物品,没有足够评分将导致两个用户很少有共同评分的项目,找最近邻用户非常的不准确,虽然通过基于BP神经网络、朴素贝叶斯分类、基于内容的预测等方法可以填充矩阵,但是都会不同程度地带来的计算时间。对于用户数量远远大于产品,并且产品相对稳定的电商系统,计算产品相似度计算量小,适用Item CF,否则用户量大,并且如果用户购买频繁,计算用户相似度计算量很大,极端情况下,100个用户对应2个产品,一个要计算C1002次相似度,一个只要计算C22,即一次相似度;反之,对于更新频繁,物品数量海量的新闻、博客、微博等系统,User CF效果更好。当然,虽然SVD在分解矩阵上花费了一定时间,同时降维也会导致用户-项目矩阵中的信息丢失,但是用户-项目矩阵降维后, 运算复杂度大大降低,同时矩阵稀疏性问题得到了较好地解决,作为Netflix比赛中最终提升效果较好的两个方法之一,被众多网站采用。用户-项目矩阵中的信息丢失问题可以通过选取合适的保留维数k在一定程度上得到缓解。在一个电商系统中,有商品、类目、品牌、团购、闪购、搜索、店铺、广告、促销活动、抵用券等诸多实体;有首页的大轮播、猜你喜欢栏位,详情页的看了还看、看了还买、推荐品牌等栏位,购物车页面的买了还买、凑单免邮等栏位。如何在不同的栏位融入不同的推荐算法给用户推荐相应的实体,构建出属于电商自己的场景引擎,实现全站精准化,让网站的GMV或者利润达到最高,是每一个电商需要思考的问题。在实际中,很多推荐算法不一定要求实时,实时推荐在哪些场景下能带给栏位更高的GMV转化率,也是需要一定时间摸索和试错的。目前基于用户画像的推荐,主要用在基于内容的推荐,从最近的RecSys大会(ACM Recommender Systems)上来看,不少公司和研究者也在尝试基于用户画像做Context-Aware的推荐(情境感知,又称上下文感知)。利用用户的画像,结合时间、天气等上下文信息,给用户做一些更加精准化的推荐是一个不错的方向。9.2.2 实时推荐系统的方法目前的商用推荐系统,当用户数和商品数达到一定数目时,推荐算法都面临严重的可扩展性问题,推荐的实效性变得非常差,如何在算法和架构上提高推荐速度是很多公司不得不思考的问题。目前,在算法上主要通过引入聚类技术和改进实时协同过滤算法提高推荐速度;在架构上,目前实时推荐主要有基于Spark、Kiji框架和Storm的流式计算3种方法。1.聚类技术和实时协同过滤算法在算法上,一般采用EM(Expectation-Maximization)、K-means、吉布斯(Gibbs Sampling)、模糊聚类等聚类技术提高推荐速度。因为使用聚类技术可以大大缩小用户或项目的最近邻居搜索范围,从而提高推荐的实时性,如表9-1所示。
除此之外,实时协同过滤算法本身一直是人们研究的热点,早在2003年,Edward F. Harrington就第一次提出了基于感知器的实时协同过滤算法,但是这种方法需要所有用户的偏好,实用性较差;2010年,杨强等提出了实时进化的协同过滤算法,给予新得分更高的权重来增量更新User和Item的相似度;2011年,UC Berkeley的Jacob Abernethy等人提出了OCF-SGD算法,我们知道传统的矩阵分解把用户评分矩阵R分解成多个矩阵,比如R≈P*Q,该方法提出当新来一个User到Item的得分,把更新R矩阵的问题转换成更新P和Q矩阵,从而达到实时协同过滤;近几年的RecSys大会上,实时协同过滤也是讨论的热点,OCF-SGD算法每次只考虑一个用户,忽略了用户之间的关系,Jialei Wang等人提出了基于多任务学习的实时协同过滤算法,把每一个用户当做一个任务,定义一个表示各个任务间相似性和交互程度的矩阵A,当新来一个User到Item的得分,通过矩阵A来更新其他用户的得分。2.基于Spark的方式在架构上,第一种是使用Spark把模型计算放在内存中,加快模型计算速度,Hadoop中作业的中间输出结果是放到硬盘的HDFS中,而Spark是直接保存在内存中,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的模型计算,如表9-2所示。
(来源:)3.基于Kiji框架的方式第二种是使用Kiji,它是一个用来构建大数据应用和实时推荐系统的开源框架,本质上是对HBase上层的一个封装,用Avro来承载对象化的数据,使得用户能更容易地用HBase管理结构化的数据,使得用户姓名、地址等基础信息和点击、购买等动态信息都能存储到一行,在传统数据库中,往往需要建立多张表,在计算的时候要关联多张表,影响实时性。Kiji与HBase的映射关系如表9-3所示。
Kiji提供了一个KijiScoring模块,它可以定义数据的过期策略,如综合产品点击次数和上次的点击时间,设置数据的过期策略把数据刷新到KijiScoring服务器中,并且根据自己定义的规则,决定是否需要重新计算得分。如用户有上千万浏览记录,一次的行为不会影响多少总体得分,不需要重新计算,但如果用户仅有几次浏览记录,一次的行为,可能就要重新训练模型。Kiji也提供了一个Kiji模型库,使得改进的模型部署到生产环境时不用停掉应用程序,让开发者可以轻松更新其底层的模型。4.基于Storm的方式最后一种基于 Storm 的实时推荐系统。在实时推荐上,算法本身不能设计的太复杂,并且很多网站的数据库是TB、PB级别,实时读写大表比较耗时。可以把算法分成离线部分和实时部分,利用Hadoop离线任务尽量把查询数据库比较多的、可以预先计算的模型先训练好,或者把计算的中间数据先计算好,比如,线性分类器的参数、聚类算法的群集位置或者协同过滤中条目的相似性矩阵,然后把少量更新的计算留给Storm实时计算,一般是具体的评分阶段。基于Storm的实时推荐系统基于本章前面的学习,我们可以设计图9-6所示的实时推荐系统。
图9-6 实时推荐系统(图片来源PRANAB GHOSH,Big Data Cloud meetup。版权归原书作者所有)用HBase或HDFS存储历史的浏览、购买行为信息,用Hadoop基于User CF的协同过滤,先把用户的相似度离线生成好,用户到商品的矩阵往往比较大,运算比较耗时,把耗时的运行先离线计算好,实时调用离线的结果进行轻量级的计算有助于提高产品的实时性。我们来简单回顾一下协同过滤算法(如图9-7所示):首先程序获取用户和产品的历史偏好,得到用户到产品的偏好矩阵,利用Jaccard相似系数(Jaccard coefficient)、向量空间余弦相似度(Cosine similarity)、皮尔逊相关系数(Pearson correlation coefficient)等相似度计算方法,得到相邻的用户(User CF)或相似商品(Item CF)。在User CF中,基于用户历史偏好的相似度得到邻居用户,将邻居用户偏好的产品推荐给该用户;在Item CF中,基于用户对物品的偏好向量得到相似产品,然后把这款产品推荐给喜欢相似产品的其他用户。
图9-7 协同过滤算法过程
然后通过Kafka或者Redis队列,保存前端的最新浏览等事件流,在Storm的Topology中实时读取里面的信息,同时获取缓存中用户topN个邻居用户,把邻居用户喜欢的商品存到缓存中,前端从缓存中取出商品,根据一定的策略,组装成推荐商品列表。当然除了相似性矩阵,其他模型大体实现也相似,比如实际的全品类电商中不同的品类和栏位,往往要求不同的推荐算法,如母婴产品,如图9-8所示,如果结合商品之间的序列模式和母婴年龄段的序列模式,效果会比较好,可以把模型通过Hadoop预先生成好,然后通过Storm实时计算来预测用户会买哪些产品。
图9-8 序列模式在母婴类目推荐中的应用
本文摘自,点击阅读原文可以购买。
程序员书屋公众号:programmer-book
程序员书屋QQ群:K―means算法在电子商务推荐系统中的应用
K―means算法在电子商务推荐系统中的应用
  中图分类号:F49 文献标识码:A 文章编号:(1-03
  电子商务是在Internet开放的网络环境下,以在线形式实现用户、合作伙伴、供应商以及员工进行交互的商业运营模式。电子商务的涌现标志着商贸活动正从传统方式向电子信息化方向变革。今天,Internet为电子商务带来了飞速增长,同时电子商务平台的竞争也日益激烈,如何为用户提供更好的服务获取更多的商品点击率是各电商平台竞争的焦点。
  1 协作型过滤技术
  当前主流的推荐系统都是采用被称为协作型过滤的技术,该算法基于一个假设,即为用户找到他感兴趣的内容的方法是首先找到与其兴趣相似的用户,然后将这些用户感兴趣的内容推荐给目标用户。其通用做法是对海量用户进行搜索,并从中找出与目标用户相似度最高的部分用户。算法会对所有用户进行考查,并进行组合构造出一个经过排名的推荐列表。
  协作型过滤分为:基于用户的协作型过滤和基于物品的协作型过滤。
  1.1 基于物品的协作型过滤
  将用户对物品的喜好,当作是物品的一个属性来看待,也就是说,有多少用户喜欢某物品,那么可以将该物品看作有多少个维度的属性,具体偏好就是维度的属性值。然后通过相似度算法,来计算物品间的相似度。当大部分用户购买的商品很少的时候,基于物品的协作过滤效果比较好。
  1.2 基于用户的协作型过滤
  将用户购买的物品看作是这个用户的不同维度的属性,很显然,大部分用户买了多件物品的数据,采用这种方法效果比较好。
  2 相似度度量
  协作型过滤系统需要通过相似度计算来获取用户间/物品间的相似度,通用的相似度评价体系有:欧几里得距离和皮尔逊相关度。
  2.1 欧几里得距离
  欧几里得距离(Euclidean
distance)也称欧式距离,它是一个通常采用的距离定义,它是在n维空间中两个点之间的真实距离。
  在二维和三维空间中的欧式距离的就是两点之间的距离,二维空间的公式:
  2.2 皮尔逊相关系数
  皮尔逊相关系数是一种度量两个变量间相关程度的方法。它是一个介于1和-1之间的值,其中,1表示变量完全正相关,0表示无关,-1表示完全负相关。该系数是判断两组数据与某一直线拟合程度的一种度量,在数据不规范的时候,该系数会倾向于给出更好的结果。
  3 聚类算法在推荐系统中的应用
  协作型过滤技术在推荐系统中的应用已经非常成熟且取得了很好的效果,但是随着移动互联网的发展,数据量的逐步增大,通过搜索全部用户寻找与目标用户相似度排名较高的用户会极大的影响推荐系统的效率,特别是一些实时性要求较高的系统中,效率问题会更加凸显。
  因此在大数据环境下,一种通过离线聚类在线搜索的方式,提高推荐系统效率的方法可以有效提升系统效率而不损失推荐效果;首先在收集到大量用户数据后,预先对后台用户数据进行聚类,然后通过人工方式对各个类别进行标注,当有用户需要推荐时,仅仅对用户当前关注商品的类别已及相邻类别中的数据进行搜索,这样可以大大减少搜索的范围提升系统效率。
  3.1 K-means算法
  K-means是发现给定数据集在k个簇的算法。簇个数k是用户给定的,每个簇通过其质心(centroid),即簇中所有点的中心来描述。
  K-means算法的工作流程如下:首先,随机确定k个初始点作为质心。其次,将数据集中的每个点分配到一个簇中。即为每个点找距离其最近的质心,并将其分配给质心所对应的簇中。最后,每个簇的质心更新为该簇所有点的平均值。
  3.2 二分K-means算法
  为了克服K-means算法收敛于局部最小值的问题,于是二分K-means算法被提出了。该算法首先将所有点作为一个簇,然后将该簇一分为二,然后选择其中的一个簇继续进行划分,具体选择哪个簇可以由其划分是否可以最大程度上降低误差的值为标准。不断重复基于误差的划分过程,直到得到用户所指定的数目为止。
  二分K-means源码如下:
  4 总结
  本文主要介绍了电子商务领域最重要的推荐系统之一,协作型过滤技术的算法及主流的相似度计算方法,并以此为基础介绍了K-means算法在推荐系统中的应用。
  K-means算法及其改进算法的引入可以在不损失推荐效果的前提条件下,有效的提高系统的效率,获得更好的用户体验。
文章来源:.cn/转大同公安交警网
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 电商售后客服系统 的文章

 

随机推荐