产品策略公式中,如果加减乘除实在搞不定,那么你可以试着用一下对数。——前言
1.生活中的对数
作为一个数学渣,实在无力从对数的起源开始一番复杂的推导然后再得出结论。直接给出一个判断吧——需要用对数处理才能很好计算的数据,基本上都是符合长尾分布的数据。
长尾分布的特点是,少数的item集中了大量的份额,但是在数值上,尾部的item的数值下降非常缓慢,不会直接下降为零。这么说可能有点苍白,那么举几个例子好了。
人的收入,年收入1万~10万的人是大多数,年收入10万~100万的比较少,年收入大于1000万的更少,但是年收入大于1000万的人却占据了社会财富的大多数份额。
电商中,店铺销量最高的店铺占据了GMV的大多数,商品头部爆款占据了GMV的大多数。
知乎中,头部的大V占据了大多数的关注,高票答案占据了知乎大多数的赞同。
自然界,对于地震的衡量是使用对数的,地震等级每相差2级,能量增加1000倍。
人的感觉上的强度,大约和刺激强度的对数成正比。比如,我们感觉声音大了一倍,不是因为声源功率增加了一倍,而是声源功率增加了一个数量级。
2.一个几乎万能公式
其实在之前的文章中,不止一次出现过对数的使用。比如:
【Feed流设计】怎样用策略掌控用户视线 中,介绍了一个来自Reddit的核心排序算法,在兼顾了Feed流中头部都是热门数据的基础上,能够自动完成数据的更新。
【搜索Case分享】五分钟,教你优化知乎搜索中,最终给出的用户搜索排序算法,既保证了用户之间的关注关系得到了尊重,也保证了用户的搜索相关度得到了尊重,同时也保证了粉丝数和赞同数能起到作用。
这些例子其实都是下面这个几乎万能的公式的变形:
其中a代表根据需求需要调整的参数,M代表业务数据,M之所以要+1,一方面是历史的进程,另一方面也是为了保证 为正值。这个公式是为了平衡长尾分布的业务数据与有界的关键性数据之间的关系。
这个公式之所以说万能,是因为大部分产品数据都可以分为长尾分布的业务数据,或者有界的关键数据。比如搜索就是典型的例子,长尾的业务数据就是销量或者点击量,有界的关键性数据就是文本相关度。
3. 策略公式的应用
接下来就是举例子的时刻了。
场景一:假如淘宝店铺,年末要搞一个最佳店铺排行榜。
这个时候肯定是要用到GMV(销售额),也需要用到DSR(detail seller rating,就是宝贝描述,服务态度,发货速度这些)。上面我们已经讨论了,淘宝的销量是数量差别是非常大的。大店铺每月销售额10亿的数量级,小的精品店10万销售额也不错。如果单纯用销量去排列,很多精品店无法挖掘,如果单纯用DSR排列,则不考虑GMV,这无法体现大店铺的优势。
这个问题中,DSR是有界性关键指标,GMV为长尾分布的业务数据。那么排序公式可以是:
假如a取1:
一个GMV为1亿,DSR为4分内的店铺A分数为11。
一个GMV为1000万,DSR为3分的店铺B分数为10。
另一个GMV为100万,DSR为4.5分的店铺C分数为10.5。
A>C>B,比较起来就比较公平,一个店铺的命运当然要考虑自己的努力(DSR),但是也好考虑历史的进程(GMV)。
场景二:知乎要搞一个知乎最佳贡献者排行
这个时候既要考虑这一年收获了多少赞,也需要考虑这个人的答案质量,假如粗暴地认为答案质量度为(阅读+5*点赞+15*收藏)/曝光次数,如果只考虑质量度,笔耕不辍的人怎么办?如果只考虑收货赞的数量,那么一些长期抖机灵没营养的人可能会占便宜。
这个问题中,质量度是有界性关键指标,点赞数为长尾分布的业务数据。那么排序公式可以是:
假如a取1:
一个用户A答案质量度为5,赞同数为1万,则得分为9。
一个用户B答案质量度为3.5,赞同数为10万,则得分为8.5。
用户A排名大于B。
场景三:如何帮三毛找对象?
荷西问三毛:你想嫁个什么样的人?
三毛说:看的顺眼,千万富翁也嫁。看的不顺眼,亿万富翁也嫁。
荷西就说:那说来说去你还是想嫁个有钱的。
三毛看了荷西一眼说:也有例外的时候。
“那你要是嫁给我呢?”荷西问道,
三毛叹了口气说:要是你的话那只要够吃饭的钱就够了。
“那你吃的多吗?”荷西问道。
“不多不多,以后还可以少吃一点。”三毛小心的说道。
在这个例子中主观评分的是否顺眼为关键性指标(假设为1~5),财富值为重要的业务指标。那么排序公式为:
因为三毛非常看重是否match(顺眼),所以a我们假设为2,那么:
千万富翁A,顺眼指数为4,则得分15,
亿万富翁B,顺眼指数为2,则得分12,
荷西没钱,顺眼指数为5,则得分为10。
这个时候我们发现这个公式没有解决问题,荷西不是最高的。三毛会选择千万富翁。
hmmm,这就是为什么我说这个公式是一个几乎万能的公式,而不是万能的公式。因为总有些异常的case需要进一步处理。
如果算法改为:
if(name=“荷西”)
{
score=100;
}
else
{
;
}
这个问题就迎刃而解了。
4. 总结
确实是一个几乎万能的公式,但是M值怎么选取,X值怎么选取,参数怎么制定,就需要产品经理对业务有自己的思考了。业务理解力是前提,公式的灵活运用,都是在业务理解力的前提下才能发挥作用。
理解公式是一个层次,灵活运用公式是一个层次,而在灵活运用公式的同时,再加上对业务的思考,则又是另一个层次了。
本文在使用的案例的都是比较理想案例,在真实案例中,数据往往不能直接比较,而是设置不同的参数,那么有什么常见的阐述设置情形呢?又有什么常见的参数设置方法呢?欢迎关注专栏,收看下期。
0. 前言:
超级APP功能越来越全,非超级APP的DAU都在下降,当失去增长红利之后,精细化迭代和精细化运营将成为必然选择。产品的工作的重点也需要从前端和交互的修改,转移到策略的制定。而产品策略在实现层,最终是以算法公式的形式输出的。
一个成熟的策略系统,会涉及多种重要的因素。如何保证这些策略公式在复杂的运算中发挥自己应有的作用,如何保证不同的数值能在同一纬度计算,这就涉及很多参数调整的策略技巧。
1. 调整参数的目的
首先在调整参数的时候,前提是明确调整参数的目的。针对具体的目的,使用对应的工具,然后才能达成具体的目的。对调整参数的目的简单做了一些总结,具体如下:
2. 归一化处理
归一化处理,通过处理让不同因素在一个范围内进行比较。举个例子,如果要比较专栏的影响力,需要综合考虑阅读量、点赞量、发表文章量这三个因素,直接相加显然是不可行,因为阅读量数量是点赞数的至少10倍,而点赞数也是发表文章数的几十倍。要让不同因素在一个变化范围内,这个时候就需要对进行归一化处理。
最简单粗暴的归一化方式,就是直接除以数据中的最大值,那么所有值都在0~1之间,并保留原有的变化性质。即:
当然这样的处理方法也会有问题,比如受到极值影响比较大。而且如果大部分分值比极值低很大的数量级,则低分值将没有区分度,以阅读量为例,如果最大阅读量为十万+,而大部分专栏文章阅读量集中在500左右。这样直接除以极大值显然是不明智的。这个时候最好在处理前对数值进行调整。在之前的文章中提到的对数处理是个比较好用的方法.
这样既保证了所有的数值在0~1之间,同时极值对最终分值的决定性影响也没那么大。
3. 调整因素的影响力
调整影响力的比较通用的办法有两种,加数值,乘以数值。
加数值能解决冷启动遇到的新内容权重过低的问题,比如,如果知乎答案完全按照赞同排序,则新发布的知乎答案,一开始在下面,不利于被更多人看见,如果新发布的内容自带20个赞参与排序,则能解决这一问题。
乘以数值能解决数值重要性的问题,如果希望某一因素在总排序中占据更重要的位置,则可以用乘法处理,比如,还是知乎内容排序的例子,如果完全按照赞同排序,要提高文章的排序权重,可以直接乘以某个系数。
4. 信息论处理:热门降权、时间衰减降权、置信度提权
一个信息出现概率越小,信息量越大,如果一个信息越常见,包含的信息越小。这个在之前文章中提到的一个基础观点。在实际的策略公式中,从信息论的角度去考虑就能快速的理解策略,让最终结果更加符合预期。
热门降权以经典的图书推荐为例进行介绍。在图书推荐中买了的人还买了的策略中,有一个著名的哈利波特问题,因为哈利波特销量过高,几乎所有的图书都和它有关系。怎么处理呢?一个办法是用销量做流行度处理,降低流行度特别高的商品在排序中的得分。
时间衰减降权,顾名思义,让过去的信息权重更低,最近的信息权重更高。行为具有连续性,最新的行为包含了更大的信息量。在处理的时候也可以使用上面的数学形式,让更远的时间分数衰减更大。
置信度提权,是基于数据量越大信息越靠谱,在处理平均值,打分等的参数时候有比较好的应用。比如,在计算一个电影的排序的时候,在考虑多个因素中包含了电影观众打分,这儿时候应该是打分的人越多,电影打分的权重越高。
5.调整变化的曲线
一般而言未经加工的数值在策略中很难直接应用,比如:知乎点赞/阅读的比率。好的文章高一些,差的文章低一些。变化范围特别小。希望整体数值变化范围不变的情况下,怎么加大区分度?这个时候可以用一些曲线的性质。开方是个例子,0.25变为0.5,0.01变为0.1,而1处理后还是1。
同样的如果分值都集中在很高的情况下,为了加大区分度,也可以用开方的逆运算。0.8处理后变为0.64,0.5处理后变为0.25,1处理后还是1。
6. 设定变化的界限
防止一些极值产生对于计算的影响,设定变化界限也是常用的方法。比较暴力的做法是设定最大值,比如:当在阅读量计算中,阅读量数值大于10万,只取十万,防止大值的影响。
还有一些比较柔性的做法,比如用有界函数进行处理:
或者直接用之前文章中提到的对数也是不错的做法,会让大值影响减少。
7. 总结
本章讲的东西是一些通用的数值处理技巧,可能在脱离具体情形下,不是那么好理解,也比较枯燥。下一章主要会讨论一些关于公式和模型的思考方法。欢迎大家关注专栏,并收看下期。
0. 前言:
对于大多数人而言,产品策略模型是个黑箱。有的人觉得它无所不能,有的人觉得它华而不实。偏见的产生,大多是因为不了解。
之前的文章比较偏细节,这篇文章会从大的方面入手,说明我的产品策略模型的方法论,表达我对产品策略模型的理解。
1. 模型没有高下,只有是否合适
一个模型,大到一个系统,小到一个公式,都没有对错之分,只有能否满足产品预期。好的模型能够在有限的计算量内,达到产品情景的要求。而差的产品模型也许在纸面上很精确,但是无法满足产品情景的要求。模型就像是个工具,不能说锤子是错的,扫把是对的,只能说锤子在砸钉子的情形下是满足预期的,是好的工具。锤子在扫地的情形下是不满足预期的,是不好的工具。
“推荐系统一定要用协同过滤或者机器学习”,“搜索系统一定带语义分析模糊匹配”,“排序系统 一定要用edgerank”,这些都是先入为主地为算法划定的高下,缺没有考虑是否真正符合要求。
2. 信息量!信息量!信息量!
对模型做一下简化,可以更方便的理解信息量的重要性:把一个模型看做一个黑箱,只有输入和输出两端。输入的信息经过分析计算,然后输出最后的分析结果。在模型分析能力相同的情况下,输入的信息量越大,分析结果效果越好。这样能承载的信息量,成了一个模型的关键因素。当然,处理的信息越多不见得效果越好,但是随着模型的发展,能处理更多信息的模型最终一定结果很好。
3. 指标!指标!指标!
算法迭代需要目标值。比如对于AlphaGo 而言,目标是获胜。对于搜索而言,目标是是准确率、召回率,或者人工评估的nDCG值。(详细说明可以看之前的专栏做个够用的搜索,其实也很简单(一)搜索的原理),对于一个算法而言,一定是有一个目标值的,而这个目标值需要在算法模型迭代的过程中,可以随着模型的变化而变化,确定迭代方向的是否正确。
一个比较通用的方法是,对数据需要划出测试集,用来验证算法的效果。比如知乎推荐分析每个人数据预测出了用户为了会喜欢的内容,可以在第二天使用用户真实的行为数据和之前的预测进行对比,来确认效果。
有了指标的算法系统,除了本身迭代的好处,更多的是可以让不明白算法原理的人,能够在黑箱上看到一个表盘,知道每次迭代,算法有多大的提升。这对于项目管理和推进有很大的好处。
4. 置信区间和精度
算法结果够用就行,片面强调计算的准确性是没有必要的。比如要计算一个数据精度本身在+-1范围波动的值,而理论计算得到一个1.8的值本身就够用了,如果画费更大的力气计算出1.834,其实就是无效的。
算法也一样,要预测未来的销售或者需求变化这些本身波动比较大的数据,花大量的经历计算一个足够精确的值本身就没有太大意义,因为太精确就超过了值本身的置信区间。总结而言,精度一定要和置信区间匹配,否则就是浪费。
5. 多因素的涌现,失控的参数控制
好的算法,不会受到输入参数的扰动,而极大影响结果准确性;也不会因为数据中的极值,让结果面目全非。现实情况下,一些异常数据无法避免,参数扰动也无法避免。要考虑多个因素的系统,不能因为一个小问题引起所有结果的失效。其实和《失控》里讲的思想有点像,应该是多个因素组合后涌现出结果,这个结果不能依赖很多参数有一个非常精确的值才能起作用
一个想要完全精确控制算法参数起作用的模型,很有可能就是调整了一个bad case,又引起了一堆别的bad case。
6. 模型的边界,是人对业务的理解
模型是万能的么?当然不是。一个模型不可能把全部的信息作为入参。人能够有效的干预结果,并且根据业务经验调整算法模型非常关键。模型在淘汰掉很多简单机械工作的同时,对人的工作提出了更好的要求。
比如,淘宝在个性化推荐遍布全站之前,淘宝的页面需要大量的运营去填写补充布局,这部分工作目前已经完全被个性化推荐替代。而且效率更高。但是双十一怎么运营,什么营销测流,怎么更好的利用个性化推荐引擎,还是需要产品运营去思考。
同时,在个性化推荐的结果中,也夹杂了大量人工的智慧。大量人工的标注和边界策略保证了个性化推荐引擎的有效性。人对业务的理解让模型能够发挥更大的作用,也正是人对业务的理解形成的外围策略,构成了模型的边界。
7.总结
产品策略模型的构建,本身是一个复杂且需要在实践中不断打磨进步的过程。很多时候一番计算得到的参数,不如二分法试出来的参数好。很多看似没有严格数学证明和依据的简单策略,却能起到好的作用。
产品策略模型不是一块儿难以理解的黑箱子,但也不是短期内能通过几篇文章就能快速了解的。既不是万能的,也绝非华而不实。重要的是先想明白产品遇到了什么样的情境,需要使用产品策略模型来解决什么问题。
如果还有什么需要再最后强调的,那么就是产品策略模型一定不是完美的,永远有问题,永远有进步的空间,永远需要去思考和完善。
“若有完美,必有谎言。”这也是产品经理工作最有趣的部分。
深受启发,对算法同学也很有帮助(绝不是说我是个只会搞策略的算法 狗头