爆款题目为什么会吸引点击量?

爆款题目为什么会吸引点击量?

原作者:himono(日)

译者:数据仓鼠

译者说:相信大家都有在B站等地传过投稿,拟题目的时候是否很随意呢?这位日本小哥通过数据分析告诉你,想要点击量,拟题需谨慎!

写在前面

这篇文章的目的

自己开始学习数据科学(data science)是因为它看起来蛮好玩的样子。提到Pandas之类的程序包,和SVM模型之类的,关于身边实例的介绍少之又少。喂别再提“菖蒲花的分类”那个老掉牙的例子了!

 

本文以“如何增加VOVALOID初投稿作品的播放次数的分析”为例,带你体验一下数据分析的全过程和步骤。如果其中对你有何启发的话那就再好不过啦!^_^

本文的构成

大致按以下顺序进行分析,参考了计量经济学实证分析文献的提纲,加入了编代码的技术。[i]

  • 题目设定

  • 假说设定

  • 用API取得数据

  • 数据分析

  • 评价分析的妥当性

  •  

    本文所用到的手法

    本文主要目的是带领读者体验一下数据分析的过程,如果你对在分析中涉及到以下小专题感兴趣的话,也顺带看一下。

    *用Python如何执行niconico动画snapshot 检索API

    *用pandas中的groupby,进行条件分组

    *Mann-Whitney的U检定(2组中位数的比较)

    *“伪关系(spurious relationship)”的排除方法

     

    阅读本文需要具备的知识

    *numpy,pandas,matplotlib等library相关知识

    *统计学基础知识

     1、题目设定

    你作为一个VOCALOID新手,刚完成了一个作品投放到了视频网站上,想着怎么样增加一些播放数。作品的质量已经不能改变了,那么怎么在作品命名和简介上花些功夫呢。

     2、假说设定

    一般VOCALOID乐曲的最初投稿一定会加上“VOCALOID处女作”的标签,但是在有标签分类的基础上还在题目中加“初投稿”字眼的人是少数。(例如《初音ミク原创~题目~初投稿》这种形式)

     

    看到在题目中加入“初投稿“的字眼的人会有些什么样的想法呢。

    “哦,这是个新人,听听看什么画风的”,“这个人没什么投稿,听了也没啥用”观众的可能会有这两种反应。如果观众哪怕抱有一点前者想法的,那在题目中加上一些技巧的字眼,收看的人数就会变多了。

    本文做一个假设“已经标有”VOCALOID处女作”字样的作品,再此基础上投稿题目中加入“第一次投稿”等字眼,会让播放数增加。”

     3、用API来获得数据

    用于此分析中必要的数据有:

    *带有“VOCALOID处女作”标签的作品

    *播放数+题目

    * + 投稿时间(在后半段使用)

    另外利用的数据范围是过去4年的(2013-2016年被投放的作品)

    让我们从niconico动画网站的snapshot 检索API从取得作品的情报。

    官网的指南如下http://site.nicovideo.jp/search-api-docs/snapshot.html

     

    列出几个要点

    *把检索条件定义出来,用urllib library 编码出来,编码会看起来很简单。

    *导入requests library getrequest 送信。requestsライブラリでgetリクエストを送る,所反应的响应转换成json形式来用。

    *因为一次能取得的作品数最大为100,所以要用offset和循环语句(loop)

    *offset用1601以上会出现报错,因为要用4年的样本,所以要按年份分开统计,以免超过1061个。[ii]

              "_limit": 100,

             "_context": "apiguide"

           } )

           self.url_ = url_body + url_query

           return self

     

       def get_json(self):

           response = requests.get(self.url_)

           self.json_ = response.json()

           return self.json_

     

     

    """ 取得数据 """

    data = []

    nicoApi = NiconicoApi("VOCALOID処女作")

     

    for year in range(2013, 2017):

       offset = 0

       nicoApi.gen_url(year=year, offset=offset)

       json = nicoApi.get_json()

     

       while json["data"]:

           data += json["data"]

           offset += 100

           nicoApi.gen_url(year=year, offset=offset)

           json = nicoApi.get_json()

           time.sleep(1)

     

     

    """ DataFrame的变换 """

    df = pd.DataFrame.from_dict(data)

    df.shape  # => (4579, 3)

    样本数为4579[iii]。因为有4年的数据,看来平均每年能有1000多人的VOCALOID新人出现。

    4、数据分析

    排名与播放数的可视化

    在进入真正的分析步骤之前,要大体掌握一下入手数据的概貌。

    首先把播放次数放在纵轴,排名放在横轴画出来。这里因为可以预测到人气作品和无名作品之间会有一个大的差异性,所以纵轴我们取log。

    爆款题目为什么会吸引点击量?

    结果:

    爆款题目为什么会吸引点击量?

                           

    *3/4的作品都有100~1000的播放数。

    *纵轴即使取了log也是偏的,(哈无情的阶级差别#)

    *基本确认了偏态分布和异常值的存在,可以灵活应用在以后的分析中。

     

    用“题目中是否含有‘初投稿’字眼”来进行DataFrame分组

    为了进行分析,要把投稿题目中含有“初投稿”字样和没有的样本分开。所以要用到pandas里面的groupby。

    groupby中()填入列名的情况比较多。填入函数也可以的。通过填入一个已经定义好的函数的话,利用任意条件进行分组会变得简单化。

     

    这次想根据“题目中是否含有‘初投稿’字眼”来进行分组,所以要先定义函数。还要加上和“初投稿”字眼的同义词“处女作”等加入分析。

     

    定义函数如下:

    爆款题目为什么会吸引点击量?

    把定义好的函数放入groupby()中,这么做的话,这个函数就适用于df1中index中的各要素,根据返回值来进行分组,类似于filter命令的作用。

    爆款题目为什么会吸引点击量?

    描述统计量

    分组之后,进行详细的分析。

    算出每组的平均值,中位数,包含关键字的是处置组,不含的为对照组。

    每组包含:

    *样本数

    *平均值

    *中位数

    *标准差

    一次性求出描述统计量,用agg命令比较方便。

    爆款题目为什么会吸引点击量?

    结果:

    4579个样本中,包含关键字“初投稿”的作品有109件,加上含有“处女作”的一共有144件。

    不管从平均值还是中位数看,可以发现处置组比对照组的播放次数更多。也就是说在题目中加上“初投稿”等关键字,会更加引人注目。

    爆款题目为什么会吸引点击量?

    看图来比较

    为了使分析更加简单化,要把样本分为两个组。处置组和对照组。

     

    爆款题目为什么会吸引点击量?

    结果

    爆款题目为什么会吸引点击量?

    那么让我们用画图来看一下2组的差异

    *播放数的log为横轴,样本数(编码规范化之后)为纵轴,画出柱状图。

    *plt.hist中设置成不同的颜色以及透明度,以便比较。

     

    爆款题目为什么会吸引点击量?

    结果:

    爆款题目为什么会吸引点击量?

    看图也能看出处置组和对照组的差异。

     

    Mann-Whitney的U检定[iv]

    好了,到现在为止我们的确出现了所期望的结果(包含“初投稿”字样的题目会使播放量增加),那么前一节中“处置组和对照组播放量有差异”在统计学上是否有意义呢(是否只是碰巧),让我们来检证一下。

    前面已经提到了,播放数是呈偏态分布的,比起平均值,我们更应该关注中值,在这里我们不是直接比较两组中值,而是用Mann-Whitney的U检定。

    Mann-Whitney的U检定的原假设是“两组间的分布形状相同”[v][vi]。如果否定了这个原假设,那么说明处置组和对照组的播放数差异并非偶然。

    U检定是在scipy的stats模块中,检定命令如下:

    爆款题目为什么会吸引点击量?

     

    p值是0.0014,说明2组的分布是不同的,并且并非偶然!太棒了!

    5、检讨分析的妥当性

    在这个分析中必须要注意的问题,‘伪相关’问题,也可以说“相关≠因果”,本例中可以明确的是“题目总带有“初投稿”字样的作品和播放次数之间是有相关关系的”.接下来要讨论的是这个相关属不属于因果关系。

     

    遗漏变量导致偏差

    比如说,冰激凌的销量和洪水事故之间是有某种相关性的。但是如果下结论说“越吃冰激凌越有可能遭遇洪水事故”,这也未免太无厘头了。

    真的的原因是“季节”。忘记导入季节因素就造成上面这种“伪相关”命题。计量经济学中,这叫做“遗漏变量导致的偏差”。(上面例子中。遗漏变量=季节)

     

    我们回到VOCALOID的音乐作品中,如果分析中存在遗漏变量,那会是什么原因导致的呢?

    我能想到的是“投稿时间”这个遗漏变量,假定会发生下列情况:

    *VOCALOID进入衰退期,播放数从2013到2016逐年减少。

    *在VOCALOID投放作品是加上“初投稿”字眼已经不再流行,最近很少看到这样做的人了。

     

    如果发生上述状况,那么“投稿时间越早->播放数越多”,“投稿时间越早->题目中包含”初投稿“字样的越多”这两个情况出现来重叠,就会产生“伪相关”。

     

    让我们来检证一下上面的“伪相关”。

    重新做两列“投稿年”和“处置组or对照组”以它们为基准把样本做分组。

    爆款题目为什么会吸引点击量?

    结果:即使以“投稿年份”进行分组之后,除了2013年,处置组和对照组的播放数的差异依然存在。

     

    爆款题目为什么会吸引点击量?

    重回归分析

    确定了“投稿年份”并不是遗漏变量,下面我们用重回归分析做更加严密的分析。

    播放数假定为如下式子:

    log(播放数i) = β0 +β1 * 处置组dummy_i + β2 * 时间趋势变量i+ 誤差i

     

    各变量解释如下:

    *log(播放数i):为了减少异常值带来的影响,对播放量取了log

    *处置组dummyi:样本i属于处置组=1,属于对照组=0

    *时间趋势(time trend)变量i:最新作品和这个作品i的投稿时间之差(单位:日)

     

    接下来,说一下重回归分析的好处。

    利用重回归分析,我们可以推算出“在时间趋势固定的情况下,处置组和对照组播放量之间到底有多大的差异(β1)。同时,也可以排除掉时间趋势带来的”伪相关”。

    说到缺点的话,推定β1的时候用了播放量的平均值,会受到一部分异常值带来的影响。

    下面我们实际运行一下

    爆款题目为什么会吸引点击量?

    结果:

    爆款题目为什么会吸引点击量?

    *从处置组dummy(变量title)的系数β1的p值看,即使做了重回归结果也是有意义的。

    *时间趋势变量(投稿时间)似乎不对播放量造成影响。

    *推定出β1=0.3582。这个值的意义就是“处置组比对照组播放量高出36%”。

    “投稿时间”并不会导致遗漏变量的偏差出现,可以说分析结果具有稳健性。很好!

    到这里“分析结果的妥当性评价”已经完成,如果您认为还有什么好的方法和意见,请一定要留言!

     

    写在最后

    文章好长啊,感谢你能读到最后!

    另外我根据这个分析,自己做个一个作品投到了niconico动画上,加上了“初投稿”字样,然后,目前播放量还没过200……要注意统计上的意义和个别事例不能画等号哟!

     

    文章到此就要结束了。

    非常高兴与你们分享这个例子,如果你能从中学到东西那更再好不过了!



    [i]本文的分析包括了“首先设定假说,再用数据检证”这个常见的分析流程。与数据挖掘关系不大

    [ii] Offset的使用方法:比如说把播放量按顺序sort,offset=30就是指定排名30以后的数据。

    [iii]2017年6月30日

    [iv]Mann, H. B., & Whitney, D. R. (1947). On a test ofwhether one of 2 random variables is stochastically larger than the other.Annals of Mathematical Statistics, 18, 50‐60. 

    [v]在做Mann-Whitney的u检定之前要假定2组数据是具有方差齐次性的。

    End.

    原文链接:http://qiita.com/himono/items/bd42e005009bafb7201f#fn1

    数据特工介绍

    后台回复“特工”加入我们

    爆款题目为什么会吸引点击量?

    爆款题目为什么会吸引点击量?