zoukankan      html  css  js  c++  java
  • 试着说说推荐算法

    本文主要是尽量通俗易懂的讲清楚推荐算法是个什么东西,不追求深入、全面和绝对的精确!轻喷

    首先申明一下,推荐算法是个很大的话题,实际工程中也是很多策略交织在一起,所以本文主要是尽量通俗易懂的讲清楚推荐算法是个什么东西,不追求深入、全面和绝对的精确!轻喷

    以下内容分三部分:算法的核心;算法有多大用;实际工程中算法怎么工作的

    1. 算法的核心是什么

    推荐算法的核心是基于历史信息寻找被推荐的东西(可能是人、物、信息)与用户的一种关联性,进而去预测你下一步可能喜欢什么,本质上还是基于统计学的一种推测(谷歌的深度学习除外)。

    这里有两个关键点:历史信息;关联性

    历史信息也就是大家所说的标准化数据

    关联性也就是大家常说的算法,他做的事情就是猜测你可能会喜欢怎样的东西.要搞清楚这个问题,还是得回到人在不同的场景中会喜欢怎样的东西,这个在不同的场景中差别比较大。举两个例子说明一下

    对于微信朋友圈:用户最关心的是我跟发布者的亲密度,其次是内容的质量和内容的发布时间,这也就是Facebook智能信息流的雏形,根据跟发布者的亲密度,内容的质量和内容的新鲜程度的一个混排算法。

    对于美团外卖:用户最关心的是这家餐厅好不好吃,价格贵不贵,有没有优惠,配送时间长不长。至于我认不认识这家餐厅的老板,这家餐厅开业时间就不是重点,所以算法就可能是完全不一样的思路。

    不管Facebook信息流还是美团外卖,核心还是得去理解用户在你的产品中到底喜欢怎样的东西,这个是基础,算法只是工具。

    2. 算法真的有那么大效果吗

    这几年今日头条的成功,包括业内各种AI、人工智能的吹,让我们以为算法无所不能,实际上算法真的有这么神奇吗?

    答案是没有。。。

    今日头条的成功我认为主要还是靠对流量的理解,战略和公司的运营、算法、数据化思维形成的执行力。算法在里面只是一环

    举一个淘宝的例子,去淘宝的人从需求的强弱程度来看分三种:明确知道我要买啥的,知道我要买啥品类但具体买啥不知道,就是来逛的。

    第一类算法没有增长点,我就要买个苹果的iphoneX,你再怎么推荐我也是买个苹果X

    第二类算法的增长点一般,我要买个蓝牙耳机,算法处理的好能提高成单率,客单价,利润,但也是有限的,因为用户进来之前已经有了一些基本的预算之类的预设。

    第三类是比较大的增量空间,因为第三类属于激发性需求。就像你去商场听导购一顿忽悠,买了本身不需要的东西。但是第三类的成单量本身的占比并没有那么大。

    所以综合下来,算法实际的效果也就是在完全没有算法的基础上有1.1,1.2,1.3倍这样的效果,这是由用户的需求总量决定的。

    当然我不是说算法没用,因为在同等成本结构的基础上,你的转化率哪怕比竞争对手高5%,那也是巨大的效率碾压。我只是想说算法没有大家吹得那么厉害,并不能直接决定一家公司的成败,算法只是一个辅助。

    3. 水果店案例说明算法在实际工程中的工作过程

    在实际的商品类的推荐系统中,主要分三大块:收集数据和整理(商品画像、用户画像);算法推荐;上线实验及回收结果。

    收集数据及整理

    假设小明开了一个有3家分店的大型水果连锁店,收集数据阶段主要包括:

    商品属性信息:小明将店内的每一个水果以及水果的信息都记下来,甜的还是酸的,品质S还是A,有没有损坏,性寒还是热,单价贵不贵,有没有优惠等等。这是商品的基本属性信息。

    商品反馈信息:销量咋样,停留率咋样,停留转化率咋样,用户的评价反馈咋样。这个是基本的反馈信息。

    人的基本属性:什么人,什么小区,穿着打扮咋样,年龄多大,哪里人

    人的行为信息:这次买了啥,下次买了啥,看了啥,咨询过啥,买完之后反馈咋样。

    数据阶段收集是一方面,最关键的是收集的数据是结构化的,是在用户的购买决策中是有效的,比如说用户中途出去抽了一根烟这种信息就没啥用。。。

    算法推荐

    算法阶段关键的还是搞清楚用户在不同的场景中会喜欢怎样的水果。

    我个人喜欢把商品推荐主干算法分为4个部分:质量评估,个性化,场景化,人工干预

    质量评估:有些标准是存在绝对的好与坏的,水果是不是好的,性价比高不高,销量好不好,优惠力度大不大,用户反馈好不好这些是存在绝对的好与坏的,我相信没人想买个烂苹果。

    个性化:有些东西是存在个体差异的,甜的还是酸的,进口的还是国产的,水果的品种是樱桃还是芒果,性凉还是热的,品质分级是S还是A(跟前面的烂没烂两个概念)。

    举个例子:一个金融白领可能喜欢的是甜的车厘子,进口的,品质S级的,优惠不敏感,客单价高;而小区的家庭主妇喜欢的可能是杨梅,品质还过得去的国产的就行,很在乎优惠,客单价适中的。那对于前一种用户就可以推一些客单价高的,毛利高的进口产品,相应的也可以少设置优惠;对于后一种就应该推一些性价比高的,有折扣的清仓的商品。

    场景化:不同的时间和地点会一定程度上影响用户的消费决策,比如夏天大家喜欢吃西瓜,在医院边上香蕉好卖,中午的时候不带皮可以直接吃的东西好卖因为大部分下午还要上班,晚上则需要处理的也卖的还可以。这个就是不同的场景带来的影响

    人工干预:算法本身是不带意志的,但是很多时候人会强加一些意志上去,比如说最近年底冲业绩了,需要强推高毛利的商品了;比如这个樱桃是合作方的,需要强推;比如有些东西快过期了,需要强推。这个时候就需要人工去做一些干预

    算法最后做的就是把里面每一个环节打上一个分,最后再把这些因素去加总得到一个最后的结果呈现在用户面前。但是这个分怎么打?这个就涉及到算法的价值观

    所谓算法的价值观,就是你希望算法最终的结果是怎样的,我是希望销量最大化还是销售额最大化还是利润最大化。不同的目标带来不同的结果。因为算法只是为目标最大化负责的。

    算法在处理每一项得分的时候也挺简单,简单说就是,如果我的目标是销量最大化,那有两个特征:优惠力度,评价,如果随着优惠力度的提高购买转化率急剧提升,那么我认为优惠力度这个特征权重就高,如果随着评价的提升购买转化率提升较慢,那么我认为评价这个特征的权重就一般。

    这个过程并不复杂,算法的优势在于他能记录更丰富的信息(工程中特征数量可能达到百万级),处理海量的数据。这是算法比人有优势的地方

    这个大概能支撑起一个算法的框架,实际的应用中会在一个主干算法的基础上去迭代很多小的策略。

    下面举几个具体的细分迭代策略:

    比如说买了芒果的用户很大比例都买了樱桃,那相应的会把买芒果的用户列表中的樱桃相应的往前提。这个就是大家常说的购物篮算法

    比如说同样是国贸摩根大厦的用户更喜欢进口水果,那对于一个摩根大厦的用户他列表中的进口水果,高客单价水果需要往前提。这个类似协同过滤,通过找到跟你类似的人,再去看他们喜欢啥。

    比如说你第一次买了榴莲之后打了差评,以后就需要降低榴莲及相关水果的权重。这个就是负反馈。

    比如说你的列表中连续出现了3种葡萄,那这时候大概率是应该把他们打散一下,尽量一页别出太多葡萄。这就是打散

    比如当你在浏览的过程中点击了樱桃,那根据购物篮原来喜欢买樱桃的人也喜欢买芒果,那下一页加载的时候需要动态的增加芒果的权重 — 这个是实时反馈

    实验及回收效果

    个人认为快速的实验迭代和效果回收是算法高效率的关键,也是互联网的核心。修路造桥错了就是错了,而互联网产品这版效果不好下一版还能优化。算法是将这种快速迭代推向了顶峰,同时几十个实验在线上AB测试,不需要发版,好不好马上就能看出来。

    AB测试的过程有点类似如果我有5家水果店,我要验证新引进的樱桃设置怎样的价格能收益最大化,我可以5家店同时设置5种价格,卖一周看看结果。

    实验主要分两个部分:实验及效果回收

    实验就是在其它东西都一样的情况下,留出一个不一样的东西,然后观察最后的结果,这样比较好确定最后的结果差异就是由这个不一样的东西带来的。

    效果回收主要是看数据和人去看实际推荐的结果,看数据需要覆盖多一些的指标,因为很可能销量好了毛利降了,或者毛利好了当天剩余率升高了。

    人工去看结果主要是一个二次确定的过程,比如在头条里面各种数据都很好,但是推出来的内容很低俗,或者这种数据好人看完之后凭经验知道这不是长久之计,比如周围就一家水果店你恶性提价。。

    End.

    作者:S-CRAT

    本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除

  • 相关阅读:
    面试:div水平垂直居中方案--img自适应
    面试:call、apply、bind原理以及自己手写简易模式
    面试之:判断js类型的方式总结
    git的项目完整操作
    vue3.x版本新建项目相关知识和注意事项
    面试常问平时项目中【Date】的常用操作方法总结
    面试常问平时项目中【Math】的常用操作方法总结
    面试常问平时项目中数组【Array】的常用操作方法总结
    面试常问平时用的对象【Object】的创建方式和常用的对象方法总结
    优化无限列表性能vue-virtual-scroll-list【测试90w条数据】
  • 原文地址:https://www.cnblogs.com/purple5252/p/15263098.html
Copyright © 2011-2022 走看看