正确的提示信息

扫码打开虎嗅APP

从思考到创造
打开APP
搜索历史
删除
完成
全部删除
热搜词
2021-09-23 23:05

模仿者最容易打造出下一个爆款APP?

本文来自微信公众号:集智俱乐部(ID:swarma_org),作者:晏丽,审校:周德雨、薛霄,编辑:邓一雪,原文标题《如何打造下一个爆款APP?——计算实验告诉你答案》,题图来自视觉中


随着机械还原论在社会系统预测中的失败,社会学家开始寻找能更好的解释甚至预测社会系统现象的方法。而传统的针对社会系统的研究方法主要依靠数据统计和宏观分析,难以清晰识别各种影响因素与宏观演化现象之间的联系。所以,越来越多的社会学家将目光转向了计算实验方法。


现如今,计算实验已经成为分析社会复杂系统的一种新方法,有助于研究者探索各种环境下社会系统演化的所有可能性。


如何打造下一个爆款?


随着应用商店里的应用种类越来越多,应用之间的竞争也越来越激烈。如何让开发者的App从众多的App中脱颖而出?什么样的策略才能打造爆款App?开发者们应该创新、制作许多类似的应用程序、优化自己的应用程序、还是只是复制别人的应用程序?


自从2016年抖音App上线爆火以来,几年内各类短视频软件如同雨后春笋一样冒出来:快手、西瓜短视频、皮皮虾、微视、看点视频、秒懂视频等等。尤其是与抖音相似的App快手,从上线至2020年,抖音的活跃用户为37842万,快手的则有27679万,二者难分伯仲。


截止2020年短视频种类(左)与各种短视频的用户规模(右)| 图片来源:Mob研究院:2020中国短视频行业洞察报告


除了短视频,电商平台的发展似乎也印证了这一假说。淘宝上线后,京东、拼多多、闲鱼、得物等等App也接连成为爆款。短视频与电商的发展似乎为软件开发者揭示了一条成功之路——模仿爆款软件!而想要知道模仿爆款软件策略是否有效,光靠成功学可不够,还需要做实验。


这种实验在真实世界没办法做。不过我们可以借助计算机来模拟一个“真实”的应用商店进行计算实验:研究者对整个App生态系统建模,测试使用不同开发策略的应用的最终欢迎度。


什么是计算实验?


计算实验方法可以理解为:把一个真实的复杂社会系统,通过一定的建模方法抽象成一个计算模型,依据这个计算模型可以在计算机中构建出相应的“人工社会实验室”;然后根据实际需要,可以在这个人工社会中进行各种实验,尤其是现实中很难实现的“压力实验”或者“极端实验”。


在该论文中,研究者提出了应用生态系统的第一个人工生命模型——AppEco 模型( App Ecosystem)来探究这一问题,该模型是一种基于主体的人工生命模型(Artificial Life agent-based model)。AppEco 为开发者、用户以及App建模,并模拟应用商店的环境。


在 AppEco 中,App的开发者构建应用并将应用上传到应用商店,用户再浏览应用商店并下载应用程序。研究者用 AppEco 来模拟苹果的 iOS 应用生态系统,并通过不同的实验来观察什么样的开发策略能帮助开发者获得更多的应用下载量。


如何建模?——主体建模


在一个应用生态系统中,App、开发者和用户之间的关系错综复杂,他们的共同演化使得整个App生态系统也变得极为复杂。同时,App的功能也五花八门,用户的需求也多种多样,所以针对应用生态系统建模十分困难。


怎样对App建模?怎样对用户建模?如何体现出用户对App的喜爱程度?这都是十分重要的问题。可以说,建模思想的高妙与否能直接决定该模型的成功与否。



AppEco中开发者、App与用户之间的交互


1. 对开发者建模


研究者通过调研,选择了五种开发者最常使用的策略:


  • S0:创新策略:每次都随机构建软件(比如上一次构建游戏类App,下一次构建教育类App)


  • S1:汲取策略:每次都做一个自己最新应用的变体(也就是说开发者一直做同类型的软件)


  • S2:乐观策略:每次都做一个自己最好的应用程序的变体


  • S3:模仿策略:在Top应用中复制一个应用


  • S4:灵活策略:开发人员从策略S0-S3之一开始。然后,每个开发者有0.99的概率从Top App中随机选择一个应用,并模仿该应用开发者的策略。开发者有0.01的概率随机选择其他策略。


2. 对App建模


App的功能五花八门,怎样对App建模也是这个的关键之一。研究者将App的功能抽象成一个10×10的功能网格,则对于一个App来说,若他的功能网络F中的一个单元格被填充,这就表示该App具有某种特定的功能。这样做的好处是便于比较App之间的特性,相似的特征可以表示为网格上彼此靠近的单元。



App功能网格F的单元格填充取决于App开发者使用的策略:


  • F中的单元格是随机被填充的,这样网格中的每个单元格都有P1的概率被填充。


  • 如果这是开发者的第一个App,F中的单元格可能会像第一种策略一样被填充;若不是,开发者会随机突变地复制其上一个App的功能。


  • 如果这是开发者的第一个App,F中的单元格可能会像第一种策略一样被填充;若不是,开发者会随机突变复制当日最高下载量的最好App的功能。选择复制哪个应用程序发生在开发人员开始构建应用程序时。如果该开发者的应用程序没有下载,该开发者只复制他最近的应用程序。


  • 从Top应用中随机选择一个应用,并随机变异复制其功能。当开发人员开始构建应用程序时,会选择复制应用程序。复制过程中发生突变的概率为0.5。


备注:突变指的是通过随机选择F中的一个已填充的单元格,并将其随机“移动”到F中的一个空单元格中。


3. 对用户建模


每一个用户都有自己的偏好,这些偏好决定了用户喜欢的应用功能。用户的偏好也可以被抽象为一个10×10的偏好网格P。P中的单元格是概率填充的,这样网格中的每个单元格都有概率P2被填充。如果P中的一个单元格被填充,则用户需要该单元格所表示的功能。


如果App的功能网格F在相同位置填充了一个单元格,则意味着该App提供了用户所需的功能。例如,在下图中,App1的所有的四种功能都匹配用户的需求,但是App2中只有两种功能匹配用户的需求。


App功能与用户偏好相匹配


如何建模?——环境建模与社会运行规则建模


1. 环境建模


应用商店是用来存储与访问应用的环境,其主要功能是供用户浏览与下载App。为了能让用户找到并下载符合其需要的App,应用商店提供了三种供用户浏览App的方法:


  • Top App Chart (最热App)


  • New App Chart (最新App)


  • Keyword Search(App关键词搜索)


在 AppEco 中,关键字搜索被抽象为对随机数量的应用程序的随机搜索。之所以这样做,是因为关键字可能与用户想要的功能不匹配,因此匹配的关键字并不意味着App具有用户想要的功能。


2. 社会运行规则建模


  • 系统运行模式


初始化生态系统—开发者构建和上传App—将App上传至应用商店—用户浏览和下载应用程序—用户与开发者数量增加。循环N个时间步(timesteps)



AppEco算法

  • 用户的变化趋势


受生态学的启发,研究者使用通常用于模拟自然系统中人口增长的 sigmoid 增长函数来模拟用户和开发者的人口增长。下图中蓝色曲线为iOS的实际数据,红色曲线为 sigmoid 增长函数模拟的曲线。可以看到,两个曲线基本吻合。


iOS用户、开发人员、应用程序与下载的实际数量与模拟数量


实验设置与实验评价指标


1. 评价指标:


为了方便分析实验结果,研究者设置了一些实验结果的评价指标:


  • AvgDI:当前策略下开发者收到的平均下载总数除以当前策略下开发者构建的所有app的总数


  • Top20TotDl:当前策略下下载总数排名前20的开发者占当前策略下总开发者的比例


  • Top20AvgDl:当前策略下平均下载量排名前20的开发者占当前策略下总开发者的比例


  • ZeroDI:当前策略下没有任何app被下载的开发者比例


  • FeatCV(特征变异系数):用于衡量用户所需功能的应用覆盖范围。该指标越低意味着App越能均匀覆盖F的功能,即能更好的满足所有用户的需求。


2. 实验设置:


  • 实验1(E1)的实验设置:在每次运行过程中,生态系统中的开发者以相同的比例随机使用App开发者的策略S0、S1、S2,以便直接比较相对表现。实验运行时长为三年(对应现实世界),实验结果取一百次重复实验的平均值。


  • 实验2(E2)的实验设置:假设开发者都适应开发者策略中的灵活策略S4,即开发人员从开发者策略中的S0-S3之一开始。然后,每个开发者有0.99的概率从Top App中随机选择一个应用,并模仿该应用开发者的策略。开发者有0.01的概率随机选择其他策略。同时,实验运行时长为三年(对应现实世界),实验结果取一百次重复实验的平均值。


实验1:采用模仿策略的开发者最容易打造爆款


实验问题


为了了解每种策略相对于其他策略的表现,研究者提出了以下研究问题:


  1. 哪种开发人员策略能使单个开发者最成功?


  2. 哪种策略可以使得App更有多样性?


  3. 哪种开发人员策略能够使开发者在开发更多App时变得更加成功?


实验结果


Q1:哪种开发人员策略能使单个开发者最成功?


A1:从下表可以看出,开发者策略S3最成功,它的的AvgDl、Top20TotDl以及T op20AvgDl都是最高的,ZeroDl是最低的。同时,尽管创新者策略S0在AvgDl和Top20TotDl中表现最差,但与策略S1和S2相比,它的零下载量(ZeroDl)更少。也就是说,模仿策略最能帮助开发者打造爆款!



Q2:哪种策略可以使得App更有多样性?


A2:使用策略S0的开发者构建的App是最多样的。同时策略S3的FeatCV最高,这表明该策略只部分覆盖了用户的偏好。



Q3:哪种开发人员策略能够使开发者在开发更多App时变得更加成功?


A3:分析表明,随着开发者变得越来越有经验,采取策略S2的开发者会变得越来越成功。虽然策略S3在下载量方面表现明显更好,但是采取该策略的开发者本质是在抄袭,而不是改进自己的作品。策略S2的开发者基于他们最成功的应用不断更新进化,这是一种进化策略。从下图可以看出,随着开发者的经验越来越丰富,策略S2的曲线展现出一条经典的进化曲线。此外,在所有四种策略中,策略S2还提供了用户所需的最多功能。



实验2:创新使得市场更有活力


实验问题

为了研究使用每种策略的开发人员数量随着时间的推移的变化情况,研究者提出了以下研究问题:


  1. 当策略竞争时,开发人员经常选择哪种策略?


  2. 当策略竞争时,多样性是否更好?


  3. 包含竞争策略的应用生态系统能够长期改善其性能吗?


实验结果


  1. 从下表可以看出,策略S3是最少被选择的策略,尽管它似乎是来自实验1的最佳策略。当开发者有选择时,很快就会放弃模仿策略,转而采用其他策略。其中,策略S0是最受欢迎的选择,其次是策略S2,然后是策略S1。一个生态系统要支持大比例的模仿者(使用策略S3)是极其困难的。结果反映了现实世界中的应用商店——模仿开发者经常出现,并利用其他人的成功,但尽管如此,他们的策略仍占少数。



2. 由下图的实验结果可以看出,E1的FeatCV大于E2,这表明在E2中,应用程序均匀地覆盖了用户的偏好空间。在E1中用户可能会发现应用商店没有任何符合他们某些偏好的应用。



3. 从下图可以看出,随着开发者的经验变得丰富,E2中的开发者比E1的开发者表现更好。这表明不完全局限于一种开发策略的开发人员在开发更多的App时的集体表现会更好。



没有一种策略可以保证谁是赢家


AppEco是一个复杂的人工生态系统,开发者、用户和App不断增加,他们的交互策略可能会不断变化。该论文讨论了开发者可能采取的策略对应的结果:创新策略、汲取策略、乐观策略、模仿策略以及灵活策略。从结果我们可以看到,在一个复杂的生态系统中,没有一种策略可以保证是赢家。


  1. 创新策略产生的App种类最多,但是下载数据较差。


  2. 汲取策略可能会停留在普通或糟糕的应用程序上,因为他们会大量生产相同想法的新变体。


  3. 乐观策略善于开发多样化的应用程序,并根据用户的需求定制开发。


  4. 模仿者似乎是在应用生态系统中保证下载的最佳策略,但只有当有足够的其他策略可供复制时,该策略才能发挥作用。


通过计算实验,我们成功地验证了模仿策略对于创造爆款的可行性,但是我们也可以看到,这种策略是需要条件的;但同时,对于整个应用软件的生态来说,各种各样形式的创新才是应用市场活力的真正来源。


复杂系统的建模实战利器:计算实验


云计算、大数据和人工智能技术正不断加速人类社会的演化进程,网络化、群智化和生态化已经成为当前社会系统的新趋势,社会系统变得越来越复杂,对这类社会复杂系统进行分析与预测也变得越来越困难。复杂系统的建模实战利器—计算实验方法的优势也越来越明显。


针对一个现实问题,通过计算实验的分析方法,将其抽象为一个计算模型,通过对计算模型进行计算实验并分析其结果,研究者就可以对复杂系统进行反事实分析,从而解决社会复杂系统的设计、分析、管理、控制和综合等问题。


论文信息:MLA:Lim, Soo Ling, and Peter J. Bentley. "How to be a successful app developer: Lessons from the simulation of an app ecosystem." Acm Sigevolution 6.1 (2012): 2-15.,论文地址:https://dl.acm.org/doi/10.1145/2384697.2384698


本文来自微信公众号:集智俱乐部(ID:swarma_org),作者:晏丽,审校:周德雨、薛霄,编辑:邓一雪

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系 hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
打开虎嗅APP,查看全文
频道:

支持一下

赞赏

0人已赞赏

大 家 都 在 看

大 家 都 在 搜

好的内容,值得赞赏

您的赞赏金额会直接进入作者的虎嗅账号

    自定义
    支付: