Press "Enter" to skip to content

用机器学习分析完YouTube网红视频后我发现了播放量暴涨的秘密

在视频成为重要媒介,vlog、视频博主也成为一种职业的当下,如何提高自己视频的播放量,是广大内容生产者最头秃的问题之一。网络上当然有许多内容制作、热点跟踪、剪辑技巧的分享,但你可能不知道,机器学习也可以在其中发挥大作用。

Sydney 拥有美国国家运动医学会(NASM)的私人教练证,同时也是一位跳高运动员。她的账号注册于 2016 年 5 月 17 日,累计播放量 27,031,566,目前拥有 21 万粉丝,每天都稳定更新,很有研究意义。请注意,以下研究都将通过 Python 实现。

is _ { } _区域,识别视频是否包含特定身体部位; is_ { } _健身,确定健身类型; title_contains_{},查看标题是否包含其他关键词。

df_videos 有 8 个特征来描述每个视频细节,包括:标题、多久前发布的、视频长度、播放量、地址、卡路里、发布具体日期、发布至今的天数。

作者发现length(视频长度)和 calories特征是相关的。这个发现很直观,因为健身的时间越长,消耗的卡路里就越多。

使用其中一个特征作为目标,其余特征作为自变量,来训练预测模型。

最后,他们创建了三种不同类型的虚拟特征(dummy features):

Sydney Cummings  的标题都有一定套路,比如最近一个标题是《30 分钟手臂和强壮臀肌锻炼!燃烧 310 卡路里!》,通常涵盖时间、身体部位、消耗的卡路里以及其他关于锻炼的描述性词汇。观众点击这段视频之前,就会知道几个信息:

num_same_area,过去 30 天内发布的针对同一区域的视频(包括当前视频)数量。例如,特征= 6,说明除了当前视频针对上半身时,过去 30 天中还有 5 个上身健身视频。 num_same_workout ,该特征类似 num_same_area,只是统计的是健身类型。例如,特征= 3,说明除了当前视频 HIIT 健身,在过去 30 天内还有 2 个 HIIT 健身视频。 last_same_area,距离上一个针对同一块身体部位视频过去的天数。例如,该特征= 10,说明针对腹肌的上一个视频,发布在 10 天前。 last_same_workout,同 last_same_area,只是针对健身类型。 num_unique_areas,过去 30 天内锻炼了几块不同的身体部位。 num _ unique _workouts,过去30天发布的不同健身类型视频的数量。

因此,作者创建了特征views_quartile,以它作为目标。

由于前一步的工作,现在有 3 个关键词列表和精简的标题,可以匹配它们来对视频进行分类。

对于每个目标,他们打印出K折验证分数(平均分)和最重要的5个自变量。

步骤 5:构建决策树

在这一步中,他们根据标题中的关键词对视频进行分类。

其实有很多不同的方法来抓取 YouTube 数据。由于这只是个一次性项目,所以作者选择了一个只需要手工操作,不依赖额外工具的简单方法。

基于高频词列表,作者创建了 3 个关键字列表,可用于接下来环节对视频进行分类。

num_same_area特征,统计的是在过去30天内发布的针对于同一部位视频(包括当前视频)的数量。area_ful代表全身锻炼,这是Sydney视频中最常见的类型。因此,当num_same_area很大时,那么这些视频就是针对全身的锻炼。

首先,标记化视频的标题。此过程使用分隔符(如空格(” “)将标题文本字符串拆分为不同的标记(单词)。这样,计算机程序就可以更好地理解文本。

但请注意!播放量呈偏态分布。播放量中值是27,641次,而最高的视频达到130万。这种不平衡会给模型的解释性带来问题。

研究得分和每个目标特征的重要自变量。

这个视频针对的是身体哪个部位? 这个视频的目的是增肌还是减肥? 或者还有什么其他关键词?

最后同样重要的是,作者创建了一个特征:calories_per_min(每分钟卡路里数)看看卡路里的燃烧速度。毕竟,观众都想要一些明确的(可量化的)锻炼目标。

因此,作者使用了一种更复杂的方法——k折交叉验证( K-fold cross-validation)来达到目的。

你可能还记得,这个研究的目标是增加YouTube的播放量。是不是说明,我们可以直接拿播放量作为目标呢?

需要说明的是,博主偶尔会发布与健身无关的视频,播放数差距很大,所以作者未将这些列入分析。另外他们也过滤掉了前 30 天的视频,因为它们缺乏足够的历史数据。

通过这种方式,作者使用预测模型来找到播放量最高的25%的视频的特征组合。

接下来,作者遍历每个特征,并使用其他特征拟合一个模型来预测它,他们用了一个简单的梯度提升模型(Gradient Boosting Model ,GBM)和K折验证,并且根据目标特征是数字的还是分类的,应用不同的模型和分数(模型预测能力评估指标)。

他们将视频分为两类——高播放视频(“high”)和低播放视频(“low”)。“high”占总播放量的75%,也就是播放数35578及以上的视频,剩下的都归到“low”。

为k折交叉验证准备这些特征。

步骤 2:用 NLP 对视频进行分类

当然整个过程中也难免存在一些被错误分类的视频,作者也在转向时间特征前进行了手动修复,这里不再赘述。

在此过程中,他们转换分类特征(categorical features):area和workout_type。这种转换确保每个类别级别至少有K个值。

准备好了一切工作,我们根据目标views_quartile建立一个决策树模型啦!

此外,他们注意到数据有重叠,因为博主曾经多次上传同一个视频,在接下来的分析中将会忽略这部分不大的样本。

length和 calories之间存在正相关,但这种强度还不足以将它们直接归到一块。因为40-45分钟的视频消耗的热量与30-35分钟、50-55分钟,甚至与60多分钟的视频,都有重叠部分。因此,两个特征都保留。

同时,作者也识别出了相似的关键字,如“总共”和“完全”、“核心”和“腹肌”,将它们归在一组。

这种关系不难理解。 

为了回答这个问题,他们还创建了一些基于时间序列的特征:

除了关键词,作者还需要标记和提取标题词干。这些过程可为进一步匹配关键字和标题列表做准备。

经过头脑风暴,他们选择了两种特征——基于关键词和基于时间。

有了上述基于关键词的特征,作者已经发现受欢迎视频的类型。但这是否意味着博主应该一直发相同类型的视频?

作者使用了自然语言工具包(NLTK),Python 中一个常用的开源 NLP 库,来处理标题。

假设博主只在周一发布力量训练,而且她的视频在周一的播放量总是更高。那么分析播放量时,应该归因它们发布在周一,还是因为它们是力量训练呢?为了获得真实的答案,作者必须确保特征之间没有强共线性。

将数据导入到 Python 中是在最后一节中完成的,以下是数据集 df_videos,一共有 837 个视频。

成对相关( pairwise correlations)是常用的方法,但当出现多个特征(多于一对)时,可能会同时存在共线性。

这些特征有助于确定视频中应包含的身体部位或锻炼类型的最佳数量。

什么是多重共线性检验,维基百科的解释是,多重共线性(也称共线性)是一种现象,其中多元回归模型中的一个预测变量可以以相当高的准确度从其他预测变量中线性预测。多重共线性不会降低模型整体的预测能力或可靠性,至少在样本数据集中是如此;它只影响单个预测因子的计算。

例如,一个健身视频可以同时做“腹肌”和“腿”,或者同时做“有氧”和“力量”。该视频的特征区域为“腹肌+腿”,健身类型为“有氧+力量”。

此外,作者发现num_same_area和area_full,两个特征也是相关的,这个发现有点令人惊讶,接下来开始解密。

接下来请看下面特征工程的具体过程。

YouTube 标题的标记和词干

这些特征将帮助了解观众是喜欢相同的还是不同类型的视频。

body_keywords(正文—关键词)——这标识了视频针对的身体部位,如“完整”身体、“腹肌”、“腿”。 workout_type_keywords(健身—类型关键字)——区分锻炼类型,如“有氧”、“伸展”、“力量”。 其他关键字——这包括常用但难以归类的关键词,如“训练营”、“精疲力竭”、“纤体”(toning)。

在形成这些关键字列表后,作者还提取了词干。这是为了确保计算机能够识别近义词。例如,ABS 是 Abdominal Exercise(腹部锻炼)的简写,单词“abs”和“ab”有相同的词干“ab”。

作者选择了对于YouTube视频播放量至关重要的特征,同时还添加了三个由随机数组成的特征:rand0,rand1, rand2。当比较特征之间的关系时,它们充当anchor。如果一个特征与这些随机特征相比不太重要或不太相似时,那么它就不是目标特征的重要自变量。

30 分钟——我将在 30 分钟内完成整个训练; 锻炼手臂和臀肌——我将致力于手臂和臀肌,专注于力量; 燃烧 310 卡路里——我会燃烧相当多的卡路里。

按照 body_keywords 和 workout_type_keywords 分类,一个视频中有许多关键词。所以在匹配之前,作者还创建了 2 个特征:area 区域和 workout_type 健身类型。这些特征将一个视频的所有身体部位和锻炼类型连接成一个字符串。

作者试图研究每个目标特征及其与自变量的关系。当然本文不会列举整个过程,将举两个例子。

根据判断,选择一组关键特征来测试共线性。

掌握以上关键信息是预先的准备,接下来还有六个步骤:观察数据、用自然语言处理技术对视频进行分类、选择特征、创建目标、构建决策树、阅读决策树。接下来就和雷锋网一起看看作者究竟是怎么一步一步展开研究的。

这些标题中有 538 个不同的单词,以下列出了使用频率最高的标记/单词。可以发现,频繁使用的就是那几个词,这也再次证明博主确实喜欢起标准格式的视频标题。

接下来就是有趣的部分了,他们将从这个数据中集中提取特征,并研究是哪些因素影响着播放量。

Comments are closed.