程序员视角科普生活知识
hello 大家好
我是浩说
自从抖音火了短视频的时代就来了
我们渐渐也养成了一种习惯
不管什么时候,觉得无聊了就打开各种短视频app划~划~划
一天不划都感觉哪里不对劲
而且你们有没有感觉,短视频app给你推送的都是你爱看的
它好像比你对象都懂你,这扯不扯了
于是你是越划越爱看,越爱看就越划
结果一看时间后半夜了,又是晚睡的一天
今天咱们就来研究研究:
短视频app如何"投你所好"?
对于app来说这个问题有两种解法:
1、寻找和你爱好相似的用户并将相似用户喜欢的视频推给你
2、根据你曾经喜欢过的视频寻找相似的视频推给你
其实两种解法在思路上有相通的地方,就是我加粗的文字:找相似
下面我们逐一分析一下这两种解法。
01 | 寻找相似用户
app判定相似用户的依据是:
你与其它用户在喜欢的视频上有一定数量(阈值)的交集,比如你和我都喜欢了相同的十个视频,app就会判定我与你存在相似性。
当然,这个交集的数量(阈值)不一定是十个,我这里只是举个例子。
判定依据我们了解了,那么新的问题是:
app又是如何判定你是否喜欢某个视频呢?
想要确定是否喜欢,app需要对你做行为分析,以此来确定你是否喜欢某个视频,或者说对视频的喜欢程度。
行为分析
所谓"行为分析",即指你在观看视频的时候对视频产生的一些行为,比如下图所示抖音中的红心、收藏、转发、评论
以上的行为叫做显式行为。
还有一种行为叫做隐式行为,比如你在视频上停留的时长:立刻划走、看了五秒划走、看了一半、看完了,这些行为都会影响app判断你对视频的喜欢程度。
通过上述的行为分析,app会生成一个你对该视频喜爱度的评分,我们用一个表格来模拟一下:
行为 | 红心 | 收藏 | 转发 | 评论 | 停留时长 |
---|---|---|---|---|---|
分数 | 1 | 1 | 1 | 1 | 立刻划走:0 看了五秒:0.2看了一半:0.5看完了:1 |
分数越高就说明你对该视频越喜欢。
所以看到这里你要不要也为本文点赞收藏转发一下呢,也不枉我码了好几天的字啦!
感谢支持哦,我会感动到哭!
看到这里相似用户分析还没有结束,我们虽然了解了判定依据和行为分析,但抖音日活跃用户过亿,一定会出现相似用户过多的情况。
所以我们还需要将相似用户通过公式分别计算与你的相似度,并选取相似度最高的几个相似用户,将他们喜爱度高且你没看过的视频推给你。
计算相似度
接下来我同样用表格来模拟几个用户数据,看一下如何计算相似度:
中间的数字表示通过行为分析得出的喜爱度评分
视频-1 | 视频-2 | 视频-3 | 视频-4 | 视频-5 | |
---|---|---|---|---|---|
你 | 5 | 2 | 0 | 1 | 4 |
用户-2 | 4 | 0 | 1 | 2 | 4 |
用户-3 | 4 | 1 | 1 | 2 | 5 |
用户-4 | 5 | 3 | 2 | 1 | 5 |
对于计算相似度,比较流行的有以下几种计算公式:
1. 欧几里得距离
2. 曼哈顿距离
3. 切比雪夫距离
4. 夹角余弦
5. 杰卡德相似系数
这里我选择了最好理解的第一种解法"欧几里得距离"来计算相似度
"欧几里得距离"的思路是将相似度问题转换成距离问题来求解,
我们知道在一维空间中我们求两点距离x1、x2:
x2 - x1
二维空间求两点距离(x1、y1)、(x2、y2):
√(x2 -x1)² (y2 -y1)²
三维空间求两点距离(x1、y1、z1)、(x2、y2、z2):
√(x2 -x1)² (y2 -y1)² (z2 -z1)²
以此类推那么多维空间求两点距离
(x1、y1、z1......、n1)、(x2、y2、z2......、n2):
√(x2 -x1)² (y2 -y1)² (z2 -z1)² ...... (n2 -n1)²
于是我们将每个用户比作一个点,每个视频比作一个维度,应用欧几里得距离公式也就是这样:
用户-2 -> 你:
√(4 -5)² (0 -2)² (1 -0)² (2 -1)² (4 -4)² = √7
用户-3 -> 你:
√(4 -5)² (1 -2)² (1 -0)² (2 -1)² (5 -4)² = √5
用户-4 -> 你:
√(5 -5)² (3 -2)² (2 -0)² (1 -1)² (5 -4)² = √6
距离越小就表示相似度越高,从结果来看,也就是用户-3与你相似度最高,
所以我们取用户-3下你没有看过的视频,按照喜爱度评分由高到低推给你即可!
02 | 寻找相似视频
对于我们人来说,想判断两个视频是否相似非常简单,对比着看一遍就可以了,但这对于app来说是非常困难的。
所以app判定相似视频并非从视频入手,而是换了一种思路:
通过用户的视角来判断,如果喜欢视频-1和喜欢视频-2的用户群体是差不多的,那么就可以判定这两个视频相似。
按照刚才的思路我依然用表格来模拟几个视频的数据:
中间的数字同样表示通过行为分析得出的喜爱度评分
用户-1 | 用户-2 | 用户-3 | |
---|---|---|---|
视频 | 4 | 2 | 4 |
视频-2 | 3 | 2 | 5 |
视频-3 | 4 | 4 | 3 |
视频-4 | 2 | 1 | 2 |
视频-5 | 5 | 4 | 5 |
看到这个表格你是否有点眼熟呢,这不就是"01 | 寻找相似用户"那个表格,把用户和视频换了个位置嘛!
所以我们依然使用欧几里得公式计算相似度即可,只不过这次视频比作点,而用户比作一个维度:
视频-2 -> 视频:
√(3 -4)² (2 -2)² (5 -4)² = √2
视频-3 -> 视频:
√(4 -4)² (4 -2)² (5 -4)² = √5
视频-4 -> 视频:
√(2 -4)² (1 -2)² (2 -4)² = √9
视频-5 -> 视频:
√(5 -4)² (4 -2)² (5 -4)² = √6
在实际情况中,上表的相似视频会很多,所以我们根据欧几里得公式的结果,选取距离小的前几个视频推给你即可!
以上就是短视频app的视频推送逻辑,其实上面的思路不只被应用于短视频app,
像音乐app的音乐推荐、购物app里的猜你喜欢、相似物品........
这些应用的逻辑和今天的内容都大同小异,是不是看完了感觉也没有那么复杂,
以后在闲聊的时候你就可以吹吹牛逼了,或者转发分享到朋友圈让更多的人知道吧!
程序员视角科普生活知识,我是浩说,我们下期见!
END