数据分析实战|人人都是产品经理网站(下篇):作者视角
本篇是《数据分析实战|人人都是产品经理网站》系列的最后一个问题,将从作者关心的角度出发,通过详细的数据比对,分析一篇文章发表后是否能够变成爆款。
一、最后一个问题
本篇将解决《数据分析实战|人人都是产品经理网站》系列的最后一个问题,将从作者关心的角度来分析,一篇文章发表后是否能够变成爆款。
这是由之前的读者变成作者后获得的一些新体会。以前是读者的时候只有看客心态,网络上的文章繁多,随便看看就好。只有那些特别好的可能会转发,可能会收藏,但看完后网页一关就还是与我无关了。
现在作为一名业余的内容创作者,每篇文章从构思准备到下笔完成可能要花半个月以上时间,期间会想象准备什么样的内容能够得到用户喜欢,反复的思考和推敲总结,酝酿写下来的文字否能将思想得到准确传递。
最后当稿子提交审核的时候,将会有更多的牵挂。每天都会上客户端看一看,今天新增了多少阅读和收藏,是不是有读者给我留言了,有没有上热门文章等等。
虽然会有一些困扰,但这种乐趣是和平时做产品、发布产品的心情是一样的。如何让自己的心血能够得到多一点点的回报将是每个作者的心愿,而其中最直接和最具体的表现则是文章的阅读量。
本篇为了能够更快的得出结论,这里再把本篇的问题和目标确定一下:
作为一名作者,投稿的文章是否会在人人都是产品经理网站(以下简称人人网)上成为爆款?
二、观察和分析
1. 从阅读量到爆款
其实作者关心的问题最初是有如下几个选择的:
- 如何提高文章的阅读量?
- 投稿文章的阅读量是多少?
- 文章是否会成为爆款?
第一种,讨论提高文章的阅读量。你需要将一篇文章用两种不同的写法、在同一个平台、同一个时间分别投稿,也就是AB Test才能得到的结果。做产品可以这样测试,但写文章度不现实。而且讨论起来将会是个相当复杂的过程,甚至可以开一个辅导班。
第二种,讨论文章的阅读是多少是一个回归问题,但对比于第三种来说意义略小,比如预测了一篇文章的阅读量为10000,请问它在人人网上是多还是少?看过上篇的同学可以回答,10000阅读量的文章在人人网上连文章的均值都不到。
第三种,有了以上简单分析,根据前篇的数据分析,将阅读量最多的10%文章定义为爆款即可。这也建立了从阅读量到爆款之间的联系,即设定阅读量在足够多的情况下会成为爆款。
2. 影响阅读量的主要因素
这里根据我多年的互联网经验,在各种内容平台上,有以下几个因素会直接影响到一篇文章(内容)的阅读量,当前排名不分先后:
- 文章出现的频率(位置)。出现的位置越多则频率越高,举个极端点的例子:如果大家进入到人人网站的时候,有个弹窗要求大家必须访问某篇文章后,才能继续浏览网站内容,请问这篇文章的阅读量是否会爆增?虽然现实情况下一般不会发生,但文章出现频率是可以受平台控制的。无论是运营的置顶、新文章的首页推荐、搜索结果的返回顺序等等,都会直接影响到文章的阅读量。
- 文章的质量。优质的文章本身并不能直接吸用户来提高阅读量,但质量将直接影响文章的二次传播。比如微信中的爆款文章并不是因为大家都关注了发布者的公众号,而是因为爆款文章它的内容受到读者的认可,被传播得到处都是,让吃瓜群众不得不看。
- 文章对用户的匹配程度。仅从点击量来说,文章的介绍信息将直接影响用户是否点击查看,介绍信息包括但不限于标题,图片,描述,文章来源等等。更进一步的说,随着用户数量的增加,每种类型的文章都有固定的观看比例,比如求聘文章的标题10个人中就有8个人会点击查看,而数据分析的文章可能10个人就只有4个,这就是匹配度的不同导致的点击量不同。
- 文章的发布时长。互联网的长尾访问特性,内容发布得越早则次数越多,毕竟这是一个累加不可逆的过程。
3. 在人人网上的实际情况
刚刚讨论的是普遍情况,这里我们需要结合目标网站自身的实际情况做进一步分析。在人人上投稿几次之后,综合长时间在人人网的学习和观察,大约一篇文章的阅读量走势会如下图所示(其中色块的划分代表各因素在不同阶段的影响力大小):
4. 心智模型的建立
现实世界非常复杂,影响一篇的文章阅读量的因素,我们还可以有很多的猜想。但我们不是全知全能的神,对任何事物的认知总是有限的。
心智模型则是将这些认知串联起来,以便我们在做判断的时候可以的时候得出结论。越是经验、学识丰富,就会离真相越近,相对的,则会显得愚昧无知。而鬼这样一个凭空出现的事物,则是几千年以来,人类对未知事物感到恐惧所产生的一个集合。
本章节花大篇幅描写的就是这样一个心智模型的构建过程。
回到本文梳理之前的经验与思路,可以建立一篇文章到是否能够爆款的脉络:
- 爆款≈阅读量>90%文章爆款≈阅读量>90%文章
- 阅读量≈匹配度+频率+内容质量+发布时长+……
这是我目前能够想到的有关因素。也许还不是很精准,甚至有可能错误,但数据分析就是一个不断的假设、验证、得出结论,再修正、再重复的过程。
这样,我们的心智模型和对这个世界的认知才会越来越完善,得出结论和应对新事物时会更得心应手。
但如果大家要是觉得还有什么关键影响因素的也可以在评论中留下自己的看法。
三、机器学习
机器学习是一种数据分析技术,让计算机执行人和动物与生俱来的活动:从经验中学习。
机器学习算法使用计算方法直接从数据中“学习”信息,而不依赖于预定方程模型。当可用于学习的样本数量增加时,这些算法可自适应提高性能。
当你遇到涉及大量数据和许多变量的复杂任务或问题,但没有现成的处理公式或方程式时,可以考虑使用机器学习。
回到本文的讨论,文章是否会成为爆款,这是一个比较典型的,分类监督学习,而最近正好也在研究XGBoost算法,可以拿来练手。所以本章节将会按照应用机器学习的开发步骤展开:
第1步,数据收集。获取对建立算法和数据模型有关的数据;
第2步,特征选择。一般原始数据都会有大量的无关项,而筛选的标准则是有助于构建之前建立的心智模型;
第3步,特征工程。指的是将原始数据转换为特征矢量,比如字符串转成数值、残缺数据的补全等;
第4步,训练算法。选择一部分数据,使用合适的机器学习算法推导出特征之间的权重;
第5步,测试算法。之前没有用于训练的数据当做测试数据,代入到推导出来的算法中,计算也推导结果,由推导结果和实际结果进行对比,可以得到我们关系式预测的正确率。当正确率满足要求可以进入到第6步,如果不满足要求则需要进入到第7步;
第6步,修正算法。一般初次结果的正确率都不会太好,可以经过各种优化,包括我们对前面心智模型的都可能会要做修改,修正后需要重新从第1步开始;
第7步,使用算法。如果验证的结果可以满足要求,则可以对新发表的文章进行预测。
1. 数据收集
虽然我们有4万多条原始数据,但不是所有的数据都有效的。而且为了能够促进我们得到最后的算法模型,也要做一些适当的取舍。这里我做了两个处理:
- 文章需要发表30天以上;
- 仅选择阅读量最高的10%和最低的10%;
文章发表30天以上,是为了保证数据选择的公平性。我们的目标是将人人网上所有文章的阅读量前10%设定为爆款,那么对发表时间较短的文章肯定是不公平的,而且新发表的文章阅读量会在短时间之内急剧增长。这一点我们之前也讨论过了,具体的变化就如下图所示:
不难发现文章的平均阅读量大约在发布20天之后的才开始趋于平稳,随后还会有小幅度的上升。我们这里录入的数据都是所有的时间段的文章,所以为了公平和保险起见,只选择文章发表30天以上的文章。
而下图标识出了按以千为单位的阅读量分布,为了展示方便已将大于3万阅读量的做了归并处理。可以发现从最低的几千阅读量到最高的几万阅读量之间并没有一条比较明显界限。特别是从10千
开始到30千
这一段。
而我们将要处理的问题则是一个分类问题,需要分类的结果有比较明显的特征,或者说要区分的对象差别越大越好。比如做图像识别时,识别照片是猫是狗的难度,就要比区分是飞机是狗的难度大很多。所以我们这里为了减轻训练难度,只取阅读最高的10%和最低的10%,即保留了文章数量,也保证了两者之间有足够的区分度。
2. 特征选择
再把前文中的原始数据属性搬出来,用于与前文分析的影响点击的认知模型关联起来,如下表所示:
需要注意原始数据中是有图片链接的,出于两个理由没有入选分析:
- 人人都是产品经理上的读者和运营对比于其它网站,在图片选择上会比较理性与克制,并没有采用擦边球的图片来吸引读者,而我也只会根据标题和内容来进行选择阅读;
- 图片内容的识别成本还是比较高的,自己分析则需要前期做大量的图片训练,第三方服务则会有相当多的限制且贵;
所以原始数据中,可以使用的有以下几个属性:
- 发布日期(date)
- 文章类型(category)
- 作者身份(authorRole)
- 标题(title)
- 阅读量(view)
3. 特征工程
有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。
即使我们上面经过筛选,我们发现无论是日期,类型,身份,还是标题都是字符串数据,而阅读量量本身还需要转化成是否是爆款。所以本文做了如下处理:
Y值(预测结果):
- 爆款文章的阅读量设置为1,非爆款设置为0。
X值(预测变量):
- 发布日期:转为文章发布的年份数量,比如2018年发表记为0年,2014年发表记为4年;
- 文章类型、作者身份都是几类固定的字符串,可以将各种分类转化为相应的特征属性来使用;
- 标题的处理则相对复杂得多,这里借助第三方的开放接口做了如下分析处理:
- 情感分析,使用腾讯文智判断标题是正面、负面还是中性情感,(0,0.3]=负面,(0.3,0.7]=中性,(0.7,1]=正面。
- 词性特征,使用腾讯AI开放平台的基础文本分析的词性接口,现代汉语的词可以分为两类14种词性(词类),但在网络内容发展如此复杂的今天,相应的分类已经远超过这些,所以特别选择第三方服务来解决。
- 语义依存分析。语义依存分析目标是跨越句子表层句法结构的束缚,直接获取深层的语义信息。语义依存分析不受句法结构的影响,将具有直接语义关联的语言单元直接连接依存弧并标记上相应的语义关系。本篇使用的是哈工大LTP云API解析出特征。
经过几天的数据调整和解析,终于将所有的特征数据化了。接下来则是准备开始训练啦~
4. 训练算法&测试算法
XGBoost训练算法
XGBoost的全称是eXtreme Gradient Boosting。作为一个非常有效的机器学习方法,Boosting Tree是数据挖掘和机器学习中最常用的算法之一。
因为它效果好,对于输入要求不敏感,自动进行特征选择,模型可解释性较好。往往是从统计学家到数据科学家必备的工具之一,它同时也是kaggle比赛冠军选手最常用的工具。
在我们前面做了大量的准备工作后,真正调用算法来训练的代码其实是很少的。作为产品经理,我觉得大家还是应该都懂一些技术或者会一门编程语言,很多问题在网上搜索一下相关的教程都可以自己解决,而不用在遇到问题的时候等开发来解决。这里推荐学习Python3,上手难度低,适用于任何平台,编译速度也足够快等优点。
所以在文章本身这一块儿就不详细展开写了,如果需要查看本次整个数据分析的代码,点击查看,部分内容已经添加注释。
测试算法
训练好的模型在使用之前需要测试,来决定接下来的步骤是修正算法还是使用算法。根据配置xgboost参数,对一篇文章进行分析时会返回两个概率,爆款的概率P1,不会成为爆款的概率P2。
所以在验证的时候分别做了两种验证:
第一种, 当P1(爆款)& P2(非爆款)的概率时,预测这篇文章为爆款。但这里会有个问题是当P(会火)=0.51,P(不火)=0.49时,是一个很模糊的结果;
第二种, 当P1(爆款) & 0.8时,预测这篇文章为爆款。
以上两种同样对1771条测试数据进行测试时,分别有97.91%和94.64%的正确率,对于我来说,这个结果已经足够满足本文的分析目的。所以就不再进一步的优化了。
本文如此之高的预测正确率也是经过多次的模型修正和数据修整之后所得,记得第一次训练的结果正确率为5%,第二次修正后结果为1%。这个过程也不算是本文的重点就不再赘述。
5. 使用算法
如果是继续使用算法,我们可以拿新写的文章标题来做预测。而如果是写文章做分析,我们则可以分析相应的特征重要性,给出的投稿建议。
返回的数据模型中,有128个有效特征,不好做可视化展示,所以当前分析只截取前20的重要特征,如下图所示:
排名前20中,大量的特征都是跟标题直接相关的词性特征和语义依存特征。
词性特征好好查看,我们根据之前的的分类结果,把爆款文章的标题按词频统计,这样在未来取标题的时候可以做个参考,适当的添加一些点缀,比如:需求、报告、总结、管理等。
本次分析结果中的语义依存特征相当的朴实,排名靠前的都是用来丰富标题内容,增加标题阅读性的特征。
对比于常见的营销号标题党则是两个方向,标题党会有更丰富的主观情感特征,比如:果然,果真,横竖,究竟,势必,早晚,终归,终究,终于;有表示反常的:反,偏,倒,岂,竟,不料,倒是,反倒,反而,竟然,居然,难道等。
不难发现,前二十中,仅有r_平台运营
和c_业界动态
与标题没有直接关系,那是不是只有标题最重要呢?上图只是为了大家观看方便做的节选,从下图就可以看到各组的特征前三:
从上图中可以做出如下分析:
- 4年前发布的文章能够以微弱的优势跑过5年前发布的文章,说明也不是发布的越久越有优势,而是文章有可能随着时间被埋没,另一个解释是4年前是网站流量的顶峰导致;
- 业界动态对比其它的文章更容易爆款,这倒也不难理解,毕竟从受众角度来说是最广的,而且容易追热点;
- 平台运营对比于其它角色的用户更容易出现爆款,除了一定的“特权”,更主要的是他们的文章是以转载为主,转载的内容是其它平台上的优质内容,自然更有吸引力。但比较意外的是专栏作家的身份对于文章爆款的加成作用并不如普通用户;
- 最后则是标题的情感平淡最好,典型的负面语气则就是疑问、质问、消极观点,还有不文明用语。
四、投稿建议
作为产品经理,每个同学都可以尝试着写篇文章投稿,这也算是你的一个个人独立的小产品了。
- 认真考虑文章内容类型,从最高的业界动态(448)、产品经理(233)、产品运营(223),到最低的区块链(24)、营销推广(18)、新零售(6),虽然对比其它因素影响不算大,但组内得分的差距更印证了前中篇读者关注点的数据分析;
- 无论文章的内容如何,取一个好的标题是相当重要的事情。可以看到如果不算文章分类是内容的话,当前的这些因素就能够占到一篇文章是否爆款的九成因素以上(94%的预测正确率);
- 文章标题必须有明确的主题和关键字,关键字最好是名词;其次标题的内容尽量丰富,能够体现文章内容,提高标题的阅读性;
- 标题党在人人网的优势不明显;
- 专栏作家的身份对于投稿没有加成作用,还是靠自己。
虽然本篇最后应该没有给出一个让人惊喜和意外的答案,但我想怎么通过数据分析来寻找一个答案的过程应该是说清楚了。
五、全篇总结
《数据分析实战|人人都是产品经理网站》三篇就到止为止了。简单回顾一下:
- 上篇从网站运营的角度来分析,各种文章对网站的收益,各种作者给网站带来的价值;
- 中篇讨论了以读者的视角来看人人网上的高价值文章和作者有哪些可以推荐,推荐的算法;
- 下篇则是以投稿人的视角来挖掘如何提升一篇文章的阅读量。
优化
最后这里再补充几个本篇中没有处理好的点,避免误人子弟。希望大家能在工作中更加严谨一些。
- 文章的热度可以按时期、阶段、类型进一步分组处理;
- 部分特征的选择和数据处理会比较主观判断,仅凭经验和观察得出,而不是相应的计算;
- 标题内容可以处理得更细致,包括一些热门词汇专有名词的提取;
- 有些代码还写得不够规范,而且在写作过程中也出过多次的Bug和数据使用错误,需要注意;
- 最后的计算模型返回来实际上有128个特征,可以把一些得分过低的特征去掉后再计算。
相关阅读
作者:核桃壳,微信walnutshell911
本文由 @ 核桃壳 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自网络
这网站的阅读量应该有掺水吧,只是订阅量和打赏我可以确定是机器人。。。所
呃,打赏真有钱入帐,虽然很少。而且我也打赏过别人。阅读量反正我拿几台手机点一下就是一下,只是近期确实有过数据混乱的情况存在过。
仔细观察粉丝订阅量,名字头像一看就是爬虫啊。。。。
其实这个还好啦,本文主要是在讨论数据分析的思考过程。毕竟是别人的数据。当然确实像你说的这个数据真实性问题我倒是一开始没考虑过。
本系列的相关代码可以在http://walnut-shell.com/ipython-notebook/ 中找到