程序员视角科普生活知识

hello 大家好

我是浩说

自从抖音火了短视频的时代就来了

我们渐渐也养成了一种习惯

不管什么时候,觉得无聊了就打开各种短视频app划~划~划

一天不划都感觉哪里不对劲

而且你们有没有感觉,短视频app给你推送的都是你爱看的

它好像比你对象都懂你,这扯不扯了

于是你是越划越爱看,越爱看就越划

结果一看时间后半夜了,又是晚睡的一天

今天咱们就来研究研究:

短视频app如何"投你所好"?

短视频app如何"投你所好"?

对于app来说这个问题有两种解法:

1、寻找和你爱好相似的用户并将相似用户喜欢的视频推给你

2、根据你曾经喜欢过的视频寻找相似的视频推给你

其实两种解法在思路上有相通的地方,就是我加粗的文字:找相似

下面我们逐一分析一下这两种解法。

01 | 寻找相似用户

app判定相似用户的依据是:

你与其它用户在喜欢的视频上有一定数量(阈值)的交集,比如你和我都喜欢了相同的十个视频,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