TalkingData马骥出席QCon,分享前端黑科技

TalkingData研发副总裁马骥近日出席QCon全球软件开发大会北京站,并在会上做了以《2018,你不知道的前端黑科技》为主题的演讲。

QCon全球软件开发大会由极客邦科技与InfoQ中国主办,致力于分享和交流新技术在行业应用中的最新实践,助力企业技术选型、业务升级与顺利转型。本次北京站大会规模再创新高,汇聚来自300余家企业的2500余名技术人,其中80%以上的参会者为资深技术人;担任出品人及演讲嘉宾的技术专家超过200名,90%的专家拥有10年以上从业经验,多来自国内外行业领军企业和创新技术公司。

TalkingData马骥出席QCon,分享前端黑科技

QCon北京2018

在Web技术发展的近20年来,有高潮也有低谷。当遇到瓶颈时,必须要用创新的思路及想法去解决,才能形成突破。在大会次日的“技术创新与前沿应用专场”中,TalkingData研发副总裁马骥以《2018,你不知道的前端黑科技》为主题,分享TalkingData近几年在大数据Web开发中一些创新和突破,包括绘制百万行的数据表格、位置大数据地图矢量绘制、Web端数据科学实践及Web端并行计算框架设计。

TalkingData马骥出席QCon,分享前端黑科技

TalkingData研发副总裁 马骥

平滑流畅的绘制百万行数据表格

马骥表示,根据产品需求,要求以表格形式绘制百万条超大体量POI数据显示。首先遇到的瓶颈是DOM渲染,当数据量达到一万两万、甚至十几万的时候,表格非常卡顿,且CPU占用率极高。

通过排查,发现问题在于所使用的VUE框架下getter和setter所做的数据双向绑定。当所绑定的数据集非常大时,性能就会出现问题。

TalkingData马骥出席QCon,分享前端黑科技

最后改为使用Object.preventExtensions、Object.seal、Object.freeze(扩展对象、密封对象、冻结对象),解决了性能问题,实现了百万行表格的平滑展现,良好承载了对地图和表格之间很重的检索需求。最终效果是,当击右侧一行数据,对应的地图POI点可以高亮显示;反之,点击地图上POI点要显示在数据表格里对应的数据,交互体验超出预期。

Web端数据科学实践

1、自动化配色

马骥认为,自动化是web端很好的数据科学场景。在TalkingData去年开源的地图可视化组件InMap中,对通过自动化提升效率做了重点尝试。据分析,很多数据分析师要花30%的工作量去调整数据可视化的样式,比如调整地图的配色上,这对非设计专业的人来说非常痛苦。如果能提供自动化的配色方案,则会能在很大程度上降低这一成本。

TalkingData马骥出席QCon,分享前端黑科技

在TalkingData的实践中,要先对数据形态进行判断,用四分位以及平均数初步判断数据形态的分布和趋势,用大数据评估是指数型还是线型。然后用色谱通过获取面积等分点模型获取设置区间,最后通过自定义自动化完成自动配色。

2、异常数据检测

大数据永远都会有异常,而数据能否使用,需要进行检测,最基础的就是数据类型的检测。

马骥分享,TalkingData通过统计学模型——四分位的法则去做相对比较宽松的验证,比如四分位、上四分位和下四分位之间的三倍。

TalkingData马骥出席QCon,分享前端黑科技

针对其中最为复杂的异常位置数据检测,马骥带领的团队查询相关论文,将Python版本翻译成JavaScript版本实现,原理是计算两点一线的距离,当距离越大时则密度越低,当距离越小则密度越大,这样就可以将异常点计算出来。

Web端并行计算架构设计

马骥认为,web端的密集型计算是可视化的挑战,其瓶颈在于JavaScript本身,因为JavaScript是一个单线程语言,这就导致一方面CPU的利用率偏低,另一方面密集计算执行需要等待。

在TalkingData InMap的架构实践中,通过增加前端能力,通过前后端协同提升整体性能,进而将服务器端的很多能力转移到客户端去实现,使客户端也具有计算能力,实现业务逻辑和计算能力逐渐上移。

TalkingData马骥出席QCon,分享前端黑科技

InMap架构图

投资人群洞察报告

背景

  • 金融行业告别野蛮增长,进入存量客户的精细化运营时代
  • 精细化运营的目标之一是扩大资产规模,转向财富管理
  • 如何服务不同投资偏好的人群,TalkingData用数据分析给出建议

报告部分总结

  • 70后、90后热爱奢侈品的人群更有可能成为基金投资人群。与奢侈品平台进行异业合作可能成为首选。
  • 基金投资以及炒股人群中有杠杆交易行为的基金投资人群,更可能转化为财富管理客户。
  • 银行的大量理财客户同证券客户有较大重叠,先从此部分人群开始运营,收效比较显著。

研究目的:为什么要撰写本篇报告?

  • 在存量客户经营时代,线上业务如何服务财富管理人群,抓住互联网转型第二波浪潮?
  • TalkingData创新金融部从“投资人群”的洞察报告入手,专项分析投资人群中的“手机银行人群”、“基金理财人群”、“财富管理类人群”等人群,结合行业数据和TalkingData数据,为财富管理人群洞察和营销提供建议。

投资人群洞察报告

1.1 炒股人群理财属性

除了占比最高的证券投资属性以外,炒股人群偏爱的投资理财方式是货币基金,紧随其后的有财富管理,手机银行,借贷,直销保险等等。通过证券投资人群的前三名我们将在后面分析炒股人群分别与“手机银行人群”、“货币基金人群”、“财富管理人群”等人群的差异。

投资人群洞察报告

数据来源:TalkingData

1.2 投资人群分层模型

我们将金融行业中的理财金字塔概念放在本章用于解释报告的逻辑,但是因为分析的主题为人群而不是具体的投资产品,所以分层的依据为客群数量多少以及相对应的客户净值的高低。

  • 金字塔底层人群基数大但客户净值低,整体服务成本高,建议提供线上服务。
  • 金字塔顶层人群基数少但客户净值高,单个客户收益高,建议提供线下服务。
  • 针对每一个层次提供基于特殊的人群属性向上增销、转化、定位的建议。

投资人群洞察报告

2.1 手机银行客户分析

人群定义:该人群画像具有诸如有手机银行理财行为,或是手机上没有安装任何券商资讯、证券交易等APP的行为特点。

80后是炒股散户主力军

在使用了手机银行但是没有炒股偏好的人群中我们发现,90后、70后的比率更高,与后面的基金购买人群相似。且中年人群(46岁以上)在手机银行上的行为比炒股更频繁。券商需要思考如何将90后拉回来、如何保留住70后,银行则要思考如何为80后提供更好的投资服务。

投资人群洞察报告

数据来源:TalkingData

2.2 游戏无法填补我被割韭菜的忧伤

通过深度的游戏标签属性,我们可以发现,理财偏好为手机银行端且没有炒股相关APP的人群的更爱玩游戏,其中每天会有至少一次游戏行为的用户超过20%;而相比之下此类用户在炒股人群中仅占7.73%。高频游戏人群在手机银行人群中的比率为炒股人群中的近三倍。

手机银行理财人群的游戏付费意愿更高,有更多人在游戏中花费超过5000元。炒股人群不太热爱玩游戏,但针对手机银行理财人群,游戏化运营可能是一个不错的尝试。

投资人群洞察报告

数据来源:TalkingData

2.3 我与韭菜之间可能只差一个APP

通过分析炒股人群以及手机银行理财人群可以发现,炒股人群中几乎所有人都会关注财经资讯,而在银行理财人群中则只有不到5%的占比。但是两种人群都爱阅读科技资讯类读物。此外,炒股人群更多关注财富管理产品。券商与其在大流量平台买流量,不如在财经资讯类渠道投放广告,说不定会有惊喜。科技资讯和阅读可以作为一种服务,为银行客群提供更好用户体验。

投资人群洞察报告

数据来源:TalkingData

3.1 炒股人群洞察

人群定义:该人群画像为下载了诸如“东方财富网”、“同花顺”、“雪球”等股票资讯软件的移动端活跃人群,并经过过滤刷量、数据去重等数据处理后的“炒股偏好人群”。

KYC – 炒股人群性别分布

炒股人群中男性占比最大,超过74%的炒股人群为男性,超过全量数据的51%,将近四分之一。

券商移动APP的设计风格可以重点考虑男性客户需求,运营活动的话术需要简单明了,小清新风格不适合券商炒股人群。

券商的财经资讯在选择上需要偏向男性投资者需求,考虑增加政治、军事、科技、宏观经济等分析报告。

投资人群洞察报告

数据来源:TalkingData

3.2 KYC – 炒股人群年龄分布

炒股人群呈现年轻化,其中19-35岁的人群占比超过68%,相比在总人群中26%的占比超过一半还多。

券商APP的功能设计需要围绕年轻人群需求,不求界面复杂,但求简单明了,突出投资和交易特色。

年轻人重视客户体验、对活动响应率高,券商APP的色彩年轻化和深化活动运营有可能是个不错的尝试。

投资人群洞察报告

数据来自:TalkingData请点击此处输入图片描述

3.3 百度指数 – 炒股相关需求图谱

成功定位到炒股人群后。 如何精准触达这一群体?

通过在2018年2月的百度指数中搜索炒股人群以及其相关度,我们发现,搜索“炒股”的人群可能是爱奇艺、优酷的用户。喜欢玩GTA5(侠盗猎车5),常逛bilibili,也经常会去斗鱼或者虎牙观看直播。

这些行为在移动端也有一样的表现呢? 我们将在后面通过TalkingData的数据库进行验证。

投资人群洞察报告

数据来自:百度指数官网、TalkingData

3.4 进击的二次元

根据百度指数的数据,炒股人群中,使用b站的人数比率大大超过了总人群的使用比率,为垂直视频领域中占比最高的网站。

比起爱奇艺,炒股人群更偏爱使用优酷作为主要的视频观看媒介,印证了百度趋势的相关度。

营销上,结合TalkingData在金融广告投放方面的经验,建议在优酷上可以进行以品牌曝光为主的投放。

投资人群洞察报告

数据来源:TalkingData

3.5 老铁,火箭走一波!

炒股人群中,不管是使用斗鱼还是虎牙直播的用户明显比率更高。印证了百度趋势的相关度。

尽管虎牙以及斗鱼是知名的游戏弹幕直播平台,但在虎牙以及斗鱼上直播分享理财知识的也大有人在。其他品牌已经在进行流量渗透了,你呢?

投资人群洞察报告

数据来源:TalkingData

3.6 成不了富翁,我们还有GTA5

在游戏偏好中我们发现,炒股人群中喜爱动作射击类游戏(亦如GTA5)的人群占比远远不及总人群。为什么呢?

进一步研究我们发现,GTA5内置炒股系统(线上为BAWSAQ,单机为LCN)。许多搜索“炒股”关键词的人其实是在搜索GTA5游戏中的股票,这也就解释了为什么关键字“炒股”与“GTA5”关联度高,但是炒股人群对动作射击类游戏偏好较低。

3.7 投资是一种信仰,从天天德州开始

相较于总人群,炒股人群的游戏属性较弱,比较偏爱扑克棋牌、经营、策略类游戏。与投资、经营有关的游戏更受炒股人群的喜爱。比如天天德州。

可以结合三方数据找出有投资、经营类游戏行为的人群,进行定向投放或者异业合作。

投资人群洞察报告

数据来源:TalkingData

3.8 入的了贵宾厅,出得了地铁站,骑得了小黄车

炒股人群有明显的商旅特征,包括更显著的酒店、公交出行以及航空出行类应用偏好。共享单车的使用比率也略高于总人群。券商无法像银行信用卡一样通过商旅权益吸引客户,但是因为券商的展业代理人一般会银行网点驻场,那么选择商旅权益较好的信用卡的银行网点驻场在开户获客上或许会更高效。

投资人群洞察报告

数据来源:TalkingData

3.9 上班艰苦阻挡不了我对股票的热情

炒股人群设备活跃时段是比较典型的上班族活跃曲线,白天的活跃时段波段比较平稳,在下午的一点到五点会有比较小幅度的缩减。

早晨活跃时段开始于早上六点,在十点左右达到峰值。晚上的峰值在八点左右,在晚上十点左右开始出现下降,凌晨五点左右到达一天最低谷。可以结合券商公众号的运营团队,将公众号发布的时间设定为 早上十点或晚上八点为图文触达最佳时机。

投资人群洞察报告

数据来源:TalkingData

通过以上炒股人群的行为特征,我们可以大致描绘出炒股人群的一天。

投资人群洞察报告

4 . 基金人群

基金理财人群定义:在TalkingData数据中有“基金理财”标签的人群,该类人群画像具有下载了诸如“财富通”、“陆金所”等基金理财相关APP,或是证券交易用户,或有其他基金理财性质行为特点。

4.1 70后、90后更乐意购买基金

基金人群与炒股人群高度相关(基金理财人群中大部分都是炒股人群,或者说大部分是从炒股人群中转型的)。我们尝试去找出“货币基金人群”和“炒股人群”的差别,为“如何将炒股人群”转化为“基金购买人群”的课题提供数据驱动决策的指导。

我们发现基金人群在19-25岁、36-55岁的维度占比更高。可以总结出,80后更偏爱个人决策炒股,90后、70后更偏向将资金交给基金。

投资人群洞察报告

数据来源:TalkingData

4.2 买过最奢侈的东西就是基金了

通过下图我们可以发现,相较于炒股人群,基金人群在消费定位上更偏好奢侈品以及高端品牌。可以总结出,基金人群平均净值比平均炒股人群高,或者说炒股人群中净值高且有奢侈品消费行为的人群更容易转化为基金客户。通过与奢侈品平台进行异业合作既能为品牌提升声誉,投放的TGI可能也会更高。

投资人群洞察报告

数据来源:TalkingData

4.3基金人群更偏爱BATJ承载的产品

在内容分享类APP中,知乎在两种人群的使用比率都较高。此外,垂直类视频网站中,基金人群更偏爱咪咕影院,炒股人群更偏爱bilibili。货币基金APP中,炒股人群偏好使用陆金所浏览或者购买基金,而基金人群中排名第一的基金类APP为京东金融。炒股人群的资讯阅读偏好比较偏冷门的澎湃,而基金人群喜爱偏大众的QQ阅读。用知乎承载金融大牛的报告输出,说不定会比闷头写投研更高效。

投资人群洞察报告

数据来源:TalkingData

财富管理人群定义:在TalkingData数据中有财富管理偏好标签的人群,该人群画像具有下载了诸如“蚂蚁聚宝”等相关APP、并且经常活动区域为CBD等商务区域的特征。

5 . 财富管理人群

5.1 我是八零后,我为我的股票账户代言

财富管理人群中年龄分布与基金理财人群比较类似,相比基金人群,70后、90后的占比更高,80后的占比更低。

80后生活负担和压力较大,更多的人期望通过股票投资来获取更高的收入,其投资偏好比较激进,偏爱高风险高收益。

80后处于财富积累加速上升的通道,券商需要适当引导80后的投资理念,从长期收益和资产配置角度来进行理财规划。

投资人群洞察报告

数据来源:TalkingData

5.2 杠杆加起来,黄金屯起来

总体分析,财富管理人群与炒股人群的金融理财偏好相当,但是数据分析发现偏向财富管理的人群有更高的借贷属性,甚至在贵金属投资中的占比是炒股人群的6-7倍。

在风险更高的期货以及外汇上,两类人群偏好同样较低。可以总结出,财富管理类人群更加偏好中等风险投资,特别是自带杠杆的贵金属投资。结合贵金属交易频度可以从客户行为数据找出潜在的财富管理类用户。

投资人群洞察报告

数据来源:TalkingData

5.3 财富管理人群周末消费地与深圳市民对比

通过财富管理人群与深圳普通市民的周末消费地点的线下POI热力图对比,我们可以发现,财富管理人群主要出现在南山欢乐颂、清华大学园以及布吉附近。与我们假设的“CBD等商务区域”偏好相差甚远。

与一般市民聚集于罗湖相比,大部分财富管理人群周末都聚集在南山(科技园区所在地),以及郊区的高端住宅区。可以总结出,其实有财富管理偏好的人群周末比较宅,更喜欢与家人共度休闲时光。

投资人群洞察报告

财富管理人群2018年1-2月深圳周末消费地点(4点-6点)

投资人群洞察报告

深圳市民2018年1-2月深圳周末消费地点(4点-6点)

投资人群洞察报告

深度人群洞察咨询,请联系——

400-870-1230

support@tendcloud.com

热点观察站丨初探网约车江湖的头号玩家

图片来源于网络

江湖笑,恩怨了,人过招,笑藏刀

红尘笑,笑寂寥,心太高,到不了

江湖笑周华健 – 雨人

在“唠嗑”前,借助这首《江湖笑》来描述当下的网约车市场再适合不过。继美团打车登陆上海、高德推出顺风车、嘀嗒出行再开九城,易到宣布调整公司业务模式,提升优惠力度,各网约车平台摩拳擦掌,如今在线旅游平台携程也将开始自营网约车。沉寂许久的网约车江湖,再次掀起掀起腥风血雨,刀光剑影、江湖从此不再太平。

网约车互联网热度趋势曲线

数据来源:百度指数

数据来源:百度指数

基于百度搜索“网约车”关键词趋势曲线,我们可以很明显的看到从2月节后,各大势力逐渐杀入市场带来的关注增量,在2018年4月4日达到半年以来的最高峰。随着事件的升级和关注度增加,媒体结合网约车的报道相继猛增,同时介于江湖再次掀起波澜,价格战马甲车制度管制等话题愈演愈烈,也让“网约车”媒体指数在近期达到了顶峰。

谁是网约车江湖里的头号玩家?

在此番江湖纷争中,“门众”(司机)的争夺再次成为众矢之的,各门派则需绞尽脑汁,以各种赏金或机制招募“门众”。据悉,美团打车祭出的“促销组合拳”包括:上线前3个月,对快车司机“零抽成”,之后收取8%的佣金(其他平台一般抽成20%);快车乘客也有实惠,前三单每单可减14元;出租车驾驶员推荐一名同行加入并完成两单,可获一次性奖励20元,乘客每单能减免3元。

与此同时,“滴滴出行”则一连几天给乘客发短信送“福利”:先送18元打车券,再送3张10元立减券;双休日叫响“越打越便宜”的口号,乘客前4程依次可减8-11元;从周二起连续三天,直接抛出了“0元打车享不停”。

不过和小说中的江湖门派有所不同的是,此“门众”可在各大门派中游走,随时可寻求高佣金、高福利的门派。从而,“门众”则成为这条利益链中的头号玩家。欢迎来到本期的《热点观察站》,我们今天暂且搁下江湖门派的恩怨情仇,借助TalkingData营销云,初探网约车江湖中的“头号玩家”——司机,看看他们究竟是一个怎样的群体。

网约车“女侠” 为何仅占比17.55%?

图片来源于网络

数据来源:TalkingData

网约车女司机占比仅为17.55%,究其原因可以从三点进行解读,其一,安全性,毕竟“拉活”在外,无法保证顾客的素质与乘车目的,顾虑自身安全是女性成为网约车司机的关键因素;其二,车内整洁,相比男性、女性对车内整洁有着更高的要求,对于“外人”给车内带来的异物或污渍等有一定的排斥性;其三,社会上对女性司机有一定的驾驶偏见。

不过根据某网约车平台的评价体系数据呈现,乘客对女司机评价最多的三个词语为:车内整洁服务态度好驾驶平稳“女性相对来说比较细心,对自己的车容车貌和服务态度都有要求,也懂得控制情绪,这也许是获得高分的原因。”(来源于媒体对女性网约车司机的采访描述)。

数据来源:TalkingData

从年龄层上来看,19-35岁互联网人群为网约车司机的主力军,同时也不乏36-45岁的老司机。

网约车司机为何会偏爱中高端手机?

数据来源:TalkingData

数据来源:TalkingData

影响“抢单”的因素不仅取决与个人的意识和手速,手机的流畅性与移动网速也至关重要,所以手机对于网约车司机有着更深层次的使用价值。在运营商分布与联网方式方面,中国移动占比56.04%、中国联通占比21.86%、中国电信占比20.85%;联网方式75.77%为4G网络,高出2017年移动互联网人群6.47个百分点,这也侧面印证移动网络是网约车司机们的刚需,同时4G的资费的优惠政策,也是4G网络大规模普及的原因之一。

2000-3999元中高端机型是网约车司机们的首选,整体占比47.54%,高出2017年移动互联网人群3.94个百分点(详见TalkingData-2017年移动互联网行业发展报告)。在这个价位的手机中“屏幕尺寸”、“硬件性能”相对更能满足他们的需求。从手机品牌上来看,网约车司机们更青睐OPPO,其次是vivo华为

哪类应用更能触达到网约车司机?

数据来源:TalkingData

通过数据,我们可以看到网约车司机在“出行”、“汽车服务”应用品类上有较强的覆盖率和TGI偏好,汽车服务更多在于”查违章”、“汽车保养”类应用,这与其人群特征有着较强的关联。同时不难发现,他们对于房产医疗餐饮金融理财也有着较强的兴趣偏好。其中,餐饮以O2O外卖为主,房产则更偏向于租房细分品类。

加班热点工作区&夜生活区域热力图

数据来源:TalkingData

与其说是北京网约车司机凌晨(22时-次日6时)热力图,倒不如说是“北京加班热点区域”和“北京夜生活区域热力图”。工作区主要集中在国贸东直门望京上地中关村等区域,夜生活区域主要集中在后海三里屯等地,而在夜间相关交通枢纽及机场、火车站也是热门区域。

我们通过“人群属性”、“设备属性”、“媒介偏好”、“线下热力图”四个维度,进行网约车司机人群画像初步探索,如果你还想了解“同时采用多款打车设备的司机占比”、“网约车司机手机机型TOP榜单”、“不同时间段应用偏好”等更详细的数据维度——

请了解TalkingData营销云产品。

技术专栏丨Carbondata研究与阶段性压测


一、CarbonData简介

Apache CarbonData 是一种有索引的列存储格式。它非常适合于做即席 OLAP 查询。因为独特的 MDK 索引设计,能达到的极好的剪枝效果。相比于 parquet 等其他的列存储格式,性能有极大的提升。
Apache CarbonData 是由华为贡献给 apache 社区,目前已经是 apache 顶级项目。CarbonData 目前应用于华为的多个解决方案中,用于分析运营商的海量的信令面、用户面、控制面的详单数据。详单数据数据量达到数千亿,每条记录都是多维度的。CarbonData 用于这些海量数据的实时聚合分析。
除了华为之外,在美团、滴滴、hulu 等公司的生产环境中也得到了使用。目前 CarbonData 项目 intel、ebay、VMWare、美团、Talend等公司也有人积极参与贡献。比如 CarbonData 的 flink connector、spark streaming connector 等功能都是由华为之外的其他人贡献的。
 

二、CarbonData架构

2.1. CarbonData文件格式
CarbonData 文件格式如下:
 
一个 HDFS block 中会分为多个 blocklet。Blocklet 是文件内的列存数据块,是最小的 IO 读取单元。Column chunk 是 Blocklet 内的列数据。Page 是 Column chunk 内的数据页,是最小的解码单元。
File header 中存放元数据信息,包括 version 和 schema。
Footer 中存放 Blocklet offset、索引、统计信息。统计信息包括 blocklet的 min 和 max, page 的 min 和 max。索引存放的是 blocklet 的 startkey 和 endkey。
下图更为详细:
 
2.2. MDK索引原理
 
CarbonData 索引叫做 MDK 索引,即 Multi Dimension Key。如上图所示,year,Quarter,month,territory,country 这五个是 dimension,quantity 和 sales 是度量。维度进行字典编码,并对进行排序。然后存放到 blocklet 中。
存放于 blocklet 时,会同时把刚才提到的 startkey 和 endkey 存放好。如下图所示:
 
 
2.3. 索引查找过程
CarbonData 有两级索引。第一级索引是 block index ,存放于 spark driver 中。是一个 global B+ 树。使用这个索引避免扫描不必要的文件,可以减少95%的扫描量。
第二级索引是 blocklet 索引,用于过滤掉不必要的 blocklet。
一个完整的过滤如下图所示:
 
以我们的测试结果为例,我们的 action 表是18.55亿条记录,我们的 profile 表是415万条记录。做一个复杂的查询,做3个join和3个 group by。CarbonData 需要扫描的数据量仅为53.1 MB,而 parquet 需要扫描的数据量则为 5.5G。而且 action 表数据量翻了3倍,CarbonData 需要扫描的数据量仍然为 53M。所以说,数据量越大,CarbonData 相比 parquet 的性能优越性越大。
 
CarbonData:
Parquet:
2.4. CarbonData其他优化
CarbonData 还有些其他优化,这里只简单列举。延迟解码、向量化处理、预聚合表、partition 表(比 hive/spark 中的 partition 功能要强大很多,可以理解为索引,这里不详细讲解)、compaction、bucket、segment(我理解 segment 对优化意义不大,partition 更强大)等等。
2.5. CarbonData中对我们有用的新功能
Streaming Ingestion
目前支持 spark structured streaming,可以支持流式处理完数据后流式写入到 CarbonData 表中,这个功能是对我们有用的,需要后续研究。
Update &delete
CarbonData 目前支持 update 和 dalete。对我们也是有意义的。经过测试,update 可以运行,但是结果不对。可能需要跟社区讨论。

三、我们的性能测试结果

环境:
用了3台 40C128G,磁盘的 iops 在2000多。
不过我没用全部,总共用了 91vcore 264 GB。
第一次性能测试:
Action 表6亿多,profile 表200多万。从 ES 中通过代码导入到 CarbonData 中。
测试例子:
按学历统计近半年事件“event7”的触发次数。
且触发此事件的访客的性别需要为男,最近所在城市为“北京”;
且触发此事件的访客最近一个月访问了“com.android.dazhihui.view.screen.NewInitScreen10”活动页面(至少有1次访问时长超过10s);
且触发此事件的访客最近一周触发了“event7”事件(至多触发100次 label 为“label8”)
该语句翻译为了3个 join 和3个 group by。
需要8s左右,scan 数据量为 53M。
第二次性能测试:
Action 表18.55亿,profile 表415万。从 ES 中通过代码导入到 CarbonData 中。
语句同测试一。
该语句翻译为了3个 join 和3个 group by。
还是需要8s左右,scan 数据量仍然为 53M。
第三次性能测试:
在第二次性能测试基础上,同时并发6个同样的查询。
每个查询在8s-14s之间,性能稳定。
相比 ES 的存储,CarbonData 只使用约8.X%的存储。

四、Streaming ingest

把es的数据导出为 parquet,然后使用 structured streaming 流式写入到 CarbonData 中。经过调试,最终能调试通过。使用1个 executor 2C6G 进行性能测试。1S能够写入10万条记录到 CarbonData中。性能还是不错的。
同时,CarbonData 也支持 spark streaming ingest。
五、Update
CarbonData 有 update 的能力。但是 CarbonData 的目标是 OLAP/small scan/full scan。不适合于做 OLTP。
所以 profile 功能不能直接部署于CarbonData.目前想到的办法是 profile 功能放到 kudu 中。然后从 kudu 中周期性加载到 CarbonData 中。这个功能后续还需要继续研究。

六、兼容性

CarbonData 是基于 spark。CarbonData 1.3 可以兼容 spark 2.1 和 spark 2.2。
只要大数据发行版支持 spark 2.1 和 spark 2.2,就可以兼容 CarbonData.
1)与 CDH 兼容性
CDH 版本和 spark 是松耦合的。CDH 出的 spark 2 parcel 包可以用于多个 CDH 版本。
同时,CDH 还可以支持 apache spark 作为他的 gateway。
所以 CDH 与 CarbonData 是兼容的。
2)与华为兼容性
华为 fusioninsight 本身就包含 CarbonData。
所以华为与 CarbonData 是兼容的。
3)与星环兼容性
星环中包括两个 spark。Inceptor 是他们的定制 spark。
Discover 是完全开源的 spark。
我们 的CarbonData 可以运行于 discover spark 之上。

七、后续工作

后续还要增加工作:
action 表记录数达到百亿级别,继续进行性能测试。
目前我觉得应该还有性能优化的空间。

新零售:不是新概念的新趋势 | 博鳌亚洲论坛见闻录②

近日,博鳌亚洲论坛2018年年会在海南博鳌举办。大会以“开放创新的亚洲 · 繁荣发展的世界”为主题,汇聚来自50个国家的2000余名商业领袖,习近平主席也出席10日的大会开幕式并发表重要演讲。

TalkingData高级副总裁支宝才作为代表参加了此次博鳌亚洲论坛,并重点关注互联网、数字经济、新零售、新金融等话题。在上一篇文章(《遇见凯文•凯利 | 博鳌亚洲论坛见闻录①》)中阐述了人工智能(AI)的知识和观点。在本文中,他将再次结合自己的见解,和大家一起分享关于新零售领域的观点。

“创新”是本次博鳌论坛的主题之一(另一个主题是开放,中心思想是利益共同体——Share Future)。大会分论坛的议题安排也是两类,一半是未来的亚洲、全球化后半场、一带一路、宗教文化等宏观话题;一半是技术创新和产业相关的话题,例如未来的技术革命、人工智能、未来的互联网、共享经济等。

新零售(主题是:新概念还是新趋势)与新金融(主题是:改变还是被改变)是为数不多的“传统”行业主题,这也与TalkingData重点关注的行业不谋而合。

新零售论坛安排在会议第三天,邀请网红KOL吴伯凡先生主持,国美董事长何阳青、大龙网创始人冯剑峰、凯德总裁Lim Ming Yan、波士顿咨询全球主席Hans Burkner、花点时间创始人朱月怡、跨国电商平台大龙网CEO易青作为嘉宾。

博鳌亚洲论坛新零售主题圆桌会议   图片来源:博鳌亚洲论坛

虽然这个分论坛时间并不长,但传统零售、新电商和跨境电商、第三方行业专家同场交流,跨界的思维碰撞还是给了我很多启发。本文不赘述具体发言内容,而是会结合TalkingData为零售企业服务过程中的一些经验,针对三个问题分享一下我的思考。

(一)新零售到底“新”在哪里?

新零售其实并不是一个“新”概念,前些年电商崛起的时候,行业也在普遍讨论“新零售”,那时的“新零售”的内涵是从线下到线上,那么现在的“新零售”到底“新”在哪里呢?

我认为“新”在以下三个方面:

  • 新关系传统线下商家与消费者关系的转变,将传统一次性消费的买卖关系转变成持续性客户关系。利用技术手段,实现客户从“无记名”消费到“记名”消费,从关注单次交易的达成到关注客户的交互渠道、消费频次和综合消费体验。
  • 新技术现在新零售的另外一个特点是大量应用新技术,如大数据、人工智能、机器人和自动化、IoT和新支付手段等,在持续为行业升级赋能。
  • 新模式通过线上和线下的融合(OMO)重新定义人、货、场的关系,将带来更多的零售差异化业务模式创新。
亚马逊无人零售店:Amazon Go  图片来源:Amazon

(二)为什么会有新零售?

零售行业是国内发展最快、市场开放程度最高、也是竞争最激烈的行业之一。电子商务对传统零售行业的冲击仍在继续,行业格局初定,那么为什么又会有“新零售”的发生?以及新零售为什么会发生在中国?

我认为有三个方面的原因:

  • 普遍移动互联网化的消费者:跨越年龄、性别和区域的社交平台、电商平台、支付平台的习惯性用户——也就是“新的消费者”,是本次新零售能够发生的基础。
  • 基础设施的成熟与新技术的驱动:前面提到的新技术既是新零售的特点,也是触发新零售升级的驱动要素,同时生产环节、物流配送、支付体系、通讯网络、基础设施等方面的成熟也是新零售发生的前提条件。
  • 进击的“巨人”和传统企业的反抗:本次新零售的发生,国外亚马逊等示范效应,国内阿里、腾讯和京东等电商和互联网巨头的推动是主要动因,同时传统零售行业巨头以及品牌商希望加强线上能力、摆脱不利竞争局面的需求也是驱动因素。
电商和互联网巨头冲击下的“新零售”  图片来源:TalkingData整理

(三)新零售会带来哪些影响?

新零售的本质还是一次行业升级,但是在资本、技术和行业巨头的多重因素推动下,还是会对行业带来非常深远的影响。

主要体现在如下几个方面:

  • 行业洗牌和格局重构:本次新零售将带来产业格局的改变,一方面大量资本涌入,行业并购和重组频繁发生,新零售在一定程度上就是互联网巨头圈地和传统零售商突围的游戏,可以预见也将产生创新型行业新星,零售行业格局在短时间内将被重构。
  • 零售行业边界的拓展:新零售自身的跨界融合和新技术应用的特点,将在一定程度上拓展零售行业的边界,零售行业与互联网行业、零售行业与科技产业、零售行业与其他相关产业如生产和物流等的边界将趋向模糊,出现更多的融合。
  • 零售价值链创新:新零售将在一定程度上重新定义行业价值链,包括行业竞争合作关系,以及与客户的关系。例如在本次论坛上,国美董事长何阳青提出的“从传统家电销售安装,进入到售后服务领域(如帮助客户进行家电的定期保养)并关注售后客户大数据”就是很好的例证。

(四)零售企业应该怎么做?

新零售看似方兴未艾,其实来势汹汹。在服务零售行业上积累了丰富经验后,TalkingData提出了D2D方法论,(具体可参考文章:《TalkingData D2D:从“数字化”到“数字化” –以数据的智能驱动零售行业的数字化转型》)针对性帮助零售企业提升数字化运营能力,更好的把握新零售的产业升级的发展机遇。

移动App行为数据的用户运营和产品优化

受到互联网券商应用的冲击,传统券商的获客方式也在不断向线上转变,竞争不断加剧。但是目前,流量红利在逐步消失,且券商行业特有的获客成本高、用户转化节点多、转化周期长的特点,促使券商行业需要跳出粗放式的获客及运营模式,以数据精细化方式指导运营及改善产品功能,驱动用户增长。

一方面,通过数据精细化的方式提升获客质量,从成本、留存、业务转化多维度评估获客渠道质量,合理分配预算,达到ROI最大化;另一方面,通过对用户的精细化运营,提升用户的留存活跃,不断优化产品功能,提升用户的业务转化,保证活跃用户的增长大于流失,在促进活跃用户的稳步增长的同时不断提升用户的生命周期,实现用户生命周期价值的最大化。

一、移动App用户运营关注指标介绍

移动金融应用的崛起,让所有金融企业开始关注移动金融App运营情况,如何量化评价移动金融App的运营好坏,是金融企业需要解决的首要问题。目前市场上缺乏对移动金融App较为权威的运营标准,PC互联网的PV(Page View,页面浏览量或点击量)、UV(Unique Visitor,页面独立访问量)等指标不完全适合用于评价金融类App运营情况。国泰君安提出的证券行业3A3R指标,则从商业角度出发,详细地介绍了App运营的业务指标。

从金融App的特性和业务角度,可以用以下指标来衡量驱动App的运营。

1、用户增长指标

用户增长指标主要用来衡量新增用户增长的数量及占比情况。

新增用户:新增加的App使用设备,用以衡量产品的获客能力和市场营销效果。新用户对金融企业意义重大,用户是金融行业的金矿,代表着金融企业的未来,赢得用户就会赢得市场、赢得未来,因此将其定义为移动金融App需要重点关注的指标。

新增用户占比:一段时间内新增用户占该时段活跃用户的比例,新增用户占比的公式是(时段新增用户/时段活跃用户)*100%,主要用以衡量产品的增长能力及用户结构健康度。

新增用户占比太低,会导致新增用户与流失用户相抵消甚至低于流失用户,导致活跃用户难以增长或者下滑;新增用户占比太高,用户构成结构可能不太理想,新增用户可能是基于活动短期增加,没有稳定的沉淀,流失风险大。

新增用户类相关指标在证券行业App内的参考值,可参照下表:

 

2、用户活跃指标

用户活跃指标主要用来衡量用户在App上的活跃程度。

  • DAU(Daily Active User):当日启动应用的使用设备数。
  • MAU(Monthly Active User):统计时点最近一月的活跃访客数。
  • DAU/MAU比值:当日日活跃访客与当日月活跃访客比值,是衡量用户粘度的重要指标。DAU/MAU比值太低,说明用户粘性较差,新增用户流失比较严重,一般证券行业DAU/MAU的比值在30%-45%之间属于正常水平。同时,如果市场营销力度较小,用户增量规模小,或者以自然增长为主,则该标准要适当提高。
  • 日/月活跃率:当日/月的活跃用户占上线至今累计用户的比例,日/月活跃率=(当日/月活跃用户/累计用户总数)*100%。目前证券行业日活跃率标准在15%-25%之间,月活跃率在40%-50%之间。
  • 活跃留存用户:前一段时间活跃且该段时间依然活跃用户,目前证券行业App日活跃用户留存率标准大概在80%-90%之间。
  • 每日流失用户:当日活跃用户连续一段时间没有使用过App,视为当日的一个流失用户。
  • 每日回流用户:当日活跃访客中(排除新增用户)在之前的一段时间没有启动过App的用户数。

用户活跃类指标在证券行业App内的参考值,可参照下表:

 

3、用户属性指标

用户属性指标一定程度上反映了用户画像,即用户所在的年龄、阶层、兴趣爱好等群体特征。

  • 用户年龄构成:不同年龄层用户的构成。目前移动证券用户年轻化趋势日益明显,年轻用户逐渐成为股票交易用户的主要人群,年轻用户占比合理在一定程度上反映了产品的良性发展趋势。同时,不同年龄段用户对内容的喜好以及购买产品方面的偏好都会有一定差异,运营中可以依据用户的年龄特性来采取针对性的策略。
  • 资产状况:依据用户的资产分布划分不同的人群,做针对性的服务和产品推送。
  • 产品偏好:依据用户的点击浏览行为,按照不同用户对内容/产品/服务的喜好进行精准分群,制定对应的运营策略。
  • 转化阶段:从游客(可粗略定义为启动未绑定手机号码),到用户(绑定手机号码未开户)、开户未入金客户、入金未交易客户、交易客户等。

 

二、移动App产品优化重点关注领域

移动App在产品优化上的重点关注领域一般有三类:如何提升活跃度、如何优化交易路径提升留存、如何加粗转化漏斗。

 

1、提升活跃度

产品功能上线后,首先要衡量的一个指标应该是用户的参与度。比如导航模块新添加了一个功能后,运营人员应当关注,一段时间内使用该功能的用户有多少?每日参与用户占活跃用户的比例有多高?与其他相近曝光的功能相对是否足够受欢迎?

 

此外,除了访问用户占比,还要观察一段时间内用户重复访问该功能的频次,如果用户重复使用率很高,证明该功能对用户非常必要,就可以通过运营手段加大推广,以便触达到更多的用户;如果大部分用户使用了几次就放弃,就应该考虑下功能是否该保留,用户放弃的原因在哪里,后续该如何迭代改进。

 

2、降低流失率

App产品上线一个好功能,是能够有效增强用户粘性的,最直观的表现就是对产品留存的正向作用。为了验证新功能,在正式上线前,可以通过灰度测试的方法,找一个用户增量较大的渠道,使新增用户随机获取新旧两个版本的App,从而观察一段时间后二者留存率的变化,来评估新功能对留存的作用是否正向,之后再考虑修改或全面上线。

 

3、加粗业务转化漏斗

新功能上线后,除了通过分析用户使用行为及留存情况外,还可以通过对业务转化的影响来衡量产品价值。

例如,某券商上线了一个股票分析工具功能,由于曝光不足,且功能使用复杂,上线数日后,只有一小部分用户在频繁使用,不确定该功能是否有价值;之后通过移动运营平台的用户分群功能,将产品上线后一个月内使用过该产品超过十次的老用户做为一个群组,分别纵向与该组用户上一个月的行为做对比,以及横向与没使用过该功能的其他活跃用户做对比,发现使用了该功能的用户点击个股行情、股票交易等行为数据有明显提高。之后通过运营活动将产品推送给更多用户,并且通过强化引导的方式降低用户使用难度,在接下来的一个月内行情交易的使用整体提高了5%。

三、基于移动App行为数据的产品优化案例

在基于移动App行为数据、通过转化漏斗优化用户注册流程方面,有许多实际案例。如,某券商App上线后,发现用户注册率很低,通过事件埋点,分析注册流程后发现,由于注册流程极度繁琐,转化路径长,各个节点用户漏损严重,导致最终的注册转化率很低,如图3-1。

 

为了验证是否可以通过简化注册流程来提升用户的注册率,按照不同的注册流程发布了两个版本的App,并在一个渠道发布进行A/B测试。

通过测试发现,简化了用户注册流程的版本,由于去除了用户漏损比较明显的几个环节,最终注册转化率提升了75%以上,如图3-2。

借助精细化用户分群运营策略,也可以有效提升用户转化。基于券商App用户的特点,为达到提升留存的目的,可以从精细化用户群体运营策略的方向以及数据化驱动产品改进等角度出发,找出提升用户留存转化的关键点。

如,某券商通过其用户运营平台的用户分群功能,将5月份的新增用户按照业务转化程度分成了5个人群,分别为:

1.游客(未绑定手机号码);

2.用户;

3.开户未入金客户;

4.开户且入金客户;

5.有交易行为客户。

通过筛选五个分群用户的某月留存,发现用户留存率与用户转化程度有非常强的关联性,尤其是首启第一周的转化至关重要。因此,按照用户分群的方式,针对几个群体的用户,分别制订首启第一周的差异化运营转化策略,达到了良好效果。

招聘APP哪家强?大数据眼中的金三银四

又是一年春来到,拿了年终奖的你,那颗跳槽的心是否在蠢蠢欲动?在“金三银四”的传统招聘高峰期,各招聘平台APP毫无疑问的迎来了流量爆发。都是谁在用手机APP找工作?各家APP用户又有哪些不同?

TalkingData推出《招聘类APP用户人群洞察报告》,盘点各招聘类应用排名,聚焦不同平台用户差异,描绘出招聘类APP用户典型形象。

传统综合招聘平台在用户规模上仍居于领先

2018年2月,传统综合招聘平台代表—智联招聘、前程无忧51job其APP应用活跃指数以较大领先优势居于招聘类APP前两位。

虽然Boss直聘、猎聘同道、拉勾等平台主打中高端人才招聘、互联网人才招聘等细分定位,但是在用户规模上仍然难以与传统综合平台竞争。

春节后招聘市场进入活跃期

春节假期前,招聘类APP周活跃率保持在一个稳中有降状态。春节假期后,随着“金三银四”人才招聘高峰期的临近,招聘类APP周活跃率进入了一个爆发增长期,用户规模最大的智联招聘、前程无忧51job增长态势尤其明显。

平台定位不同带来APP用户形象差异

作为不同定位平台的代表,智联招聘、猎聘同道、拉勾三个APP的用户因其定位也产生了差异化。拉勾APP用户特征最为明显,主要以一线城市IT从业者为主,日常关心租房买房。而猎聘同道APP用户更加热爱生活,对于家居、汽车、美容、运动等活动更为关心。

招聘平台定位直接影响用户性别分布

智联招聘、猎聘同道、拉勾作为不同类型招聘平台的代表,其定位直接影响了APP用户群体的性别特征。

以互联网类岗位招聘为主的拉勾,其APP用户主要以男性为主,男性占比达65.8%。而成立时间更久、招聘岗位更大众化的智联招聘,其APP用户性别分布要更加均衡,女性用户占比为三个应用中最高。

猎聘同道APP用户更注重生活品质

三个招聘类APP用户中,猎聘同道APP用户更加偏好个护美容、汽车、健康、家居等类型应用,对于个人生活品质要求更高。

拉勾APP用户对于母婴类应用兴趣要远低于其他两个APP用户。比起孩子,拉勾APP用户更关心房产,租房、买房是他们的重心所在。

拉勾APP用户更偏爱重度体验类游戏

休闲时间、网络游戏、角色扮演是最受智联招聘、猎聘同道、拉勾APP用户喜爱的游戏类型。三个APP用户比较而言,拉勾APP用户更加偏好网络游戏、角色扮演等重度体验类游戏,而猎聘同道APP用户更加偏好酷跑竞速类游戏。

智联招聘用户地域分布更广泛

在APP用户地域分布中,拉勾APP用户主要集中在北京、上海、广州、深圳、成都等互联网行业发达的城市,而智联招聘APP用户分布更为广泛,华中、华东、东北等区域都是典型区域。猎聘同道APP用户地域分布特征上更接近智联招聘。

拉勾APP用户更偏好“北漂”

北京、上海、深圳在三个招聘类APP用户城市分布中全部位居前三,堪称是国内跳槽最活跃、工作机会最多的城市。在城市分布中,拉勾APP北京用户占比要远高于其他两个招聘应用,北京仍然是国内互联网人才最大的供应基地。

猎聘与拉勾APP用户北京工作地更为相似

智联招聘APP用户北京工作地在全市范围内均有分布,而猎聘同道、拉勾APP用户北京工作地更多的集中在中关村、上地、望京、国贸等互联网企业密集区域,二者在北京互联网人才招聘业务上的竞争更为直接。

OPPO是招聘类APP用户共同的安卓首选品牌

OPPO在智联招聘、猎聘同道、拉勾三个招聘类APP用户安卓设备品牌占比中都居于第一位,堪称共同首选。在品牌偏好中,猎聘同道APP用户更偏爱华为,而拉勾APP用户更加偏好奇酷、锤子、一加等互联网手机品牌。

附表:泛招聘类APP TOP 20

附表:兼职&职业社交类TOP应用

报告说明

推荐阅读:

还在为长租公寓运营操碎心?大数据助你去分析

愚人节的套路太长,我们选择发奖!

【数驱•新融合】探索OMO模式下的增长点

技术专栏 | Vue 源码分析之 Observer

关于TalkingData

TalkingData(北京腾云天下科技有限公司)成立于2011年,是国内领先的独立第三方移动数据服务平 台。秉承“客户优先、开放坦诚、担当意识、创业精神、创新精神”的企业文化,胸怀“数据改变企业决策, 数据改善人类生活”的愿景。本着“帮助客户转型升级为数据驱动型企业”的使命,践行着“用数据说话”的 原则,逐步成长为中国大数据领域的领军企业。

还在为长租公寓运营操碎心?大数据助你去分析

伴随房地产黄金时代结束、存量市场的到来,许多房企纷纷转向租赁市场。作为购房者,面对诸多购房限制政策及迅猛上涨的住宅价格,买房成为有房有产者之间的游戏,而更多人被挡在了买房的门槛之外而无法“上车”,只能转向租赁市场。

此外,2015年开始,从中央到地方出台了多项鼓励租赁业务发展的政策,让租赁市场从顶层设计上得到了政策红利的支持。于是,租赁市场起风了。

长久以来,租赁市场因为租赁信息不对称、装修不符合需求等等因素,导致传统的租房模式体验已无法满足租房者的需求。尤其在当前消费升级加速、体验消费时代来临,90后新生代消费群体成为租房主力人群的背景下,租赁市场需要品牌化、专业化,更能顺应租房群体需求的经营模式。于是,“长租公寓”迅速蹿红。

目前长租公寓尚未出现垄断性企业,各方市场参与者都在利用各自的资源禀赋优势进行“跑马圈地”,抢占市场份额。然而,同质化竞争、盈利困难等问题困扰着市场参与者们。在硬件产品实力比拼不相上下的情况下,竞争将更聚焦在运营管理和服务管理等内功打造上。

如何修炼内功,以在竞争中取胜? 客户调研是基础,也是关键。在打造长租公寓产品之前,通过长租市场潜在客户调研,进而根据客户研究去定位产品,并指导后期运营。

相比传统的客户调研方式,移动互联网的时代背景下,大数据为我们提供了全新的客户调研及研究方式。

TalkingData作为国内最大的独立第三方移动数据服务平台,为长租公寓的市场参与者运用大数据、从数据视角解读长租公寓品牌客户特征提供了新的解决思路。

以某知名长租公寓客群特征分析为例,TalkingData对该长租公寓的近三个月的APP安装及活跃人群进行了对比分析。

地域分布

首先来看该知名长租公寓客群在全国的分布特征。近3个月,该长租公寓APP活跃人群的城市分布以广东居多,其次是北京及江苏。可见一线城市仍然是长租公寓获得快速布局和发展的主要城市,而广东是该长租公寓品牌的首要市场份额占领城市。

再来深入聚焦北京的各区域分布特征。APP活跃人群在北京排名TOP5的居住地分别在朝阳、海淀、丰台、昌平以及通州,而排名TOP5的工作地分布除前四个区域一致外,还分布在西城。

从提升度曲线的波动分析,APP活跃人群工作地分布在丰台、昌平、通州、大兴、石景山的比例低于该人群在居住地上的分布比例。这就意味着,这五个区域的长租公寓居住人群更多的是向外区域出行就业,其通勤距离和半径超过了其他区域的居住人群。

(提升度:工作地分布比重/居住地分布比重-1)

年龄&性别分布

从性别及年龄特征上看,该长租公寓APP的活跃人群以女性居多,而APP的安装人群则以男性居多。人群的年龄普遍集中在26-35岁,且活跃人群相比安装人群更偏年轻。可见该长租公寓的品牌客户中,女性群体对租房及换房的关注度高于男性群体。

从婚姻状况来分析,活跃人群的未婚比例略高于安装人群,可见单身人群相比以家庭为单位的居住人群在租房需求上更为活跃。

车辆持有情况

从车辆持有情况来看,无车人士的比例高于有车人士,可见在出行方式上,公寓客群较大程度依赖公共交通。在公寓的选址上,交通的便利性和通达性是重要考虑因素。

移动应用偏好

从应用偏好上看,影音、生活、手机工具、网购、社交类应用是人群最喜好的TOP5应用,可见人群相对较为“宅”,追求生活服务的便利性,且有较强的社交需求。

对比活跃人群与安装人群在应用偏好的差异度,活跃人群在教育、健康、母婴及个护美容类应用的偏好上高于安装人群,尤其表现在母婴应用类别上。可以看出,导致租房人群产生租房或换房的需求驱动力来源于家庭结构的变化,以及对教育环境、健康环境的居住诉求。

在教育类的应用偏好上,活跃人群较为关注的是外语、课外辅导、以及专业技能。在运动健身的应用偏好上,人群最为关注运动健身。

在家居类的应用偏好上,人群偏好智能家电,其次是装潢。其中,活跃人群在装潢及家居用品上的应用偏好高于安装人群。可进一步推断活跃人群相对更关注居住的物理空间环境及居家体验,居住的环境舒适度及感官体验是导致租房需求变化的一大因素。

用数字化方式玩转长租公寓运营

通过对该长租公寓品牌客群的特征研究,我们不难发现,通过数据可以洞察租房需求活跃人群的关注点、人群的基本特征属性、对配套设施的需求粘性、因通勤带动人群流动而产生的居住活动半径范围、对公寓硬件设施的要求以及对软性服务体验的需求等等。

 

因此,大数据为我们如何玩转长租公寓提供了一个新的视角,我们可以从“人”的角度出发,运用大数据技术与手段实现长租公寓的数字化运营。

  • 1、产品定位:产品定位围绕长租公寓客群画像,从产品配置、服务配置、定价标准确定经营模式。

  • 2、社群运营:基于客群兴趣关注点组织社群活动,形成线上联动,线下活动可持续的良性运营闭环,打造特色社区品牌,发挥社群在品牌传播中的裂变效应。

  • 3、居住生态圈运营:针对长租公寓客群的生活服务及配套需求,整合线上移动端及线下商业服务资源,打造3-5公里居住生活O2O服务圈,以多样化业态服务,多元化生活配套满足公寓人群的居住偏好需求。

  • 4、社群大数据资产构建:长租公寓APP作为公寓运营的载体,将是长租公寓客户数据采集、客户洞察研究、公寓日常运营以及公寓周边生活服务资源整合的强大入口。社群是长租公寓“外壳”之下影响公寓运营效益、衡量公寓运营成功与否的“内核”。社群的规模及质量也将是长租公寓未来正式走上资产证券化道路之时,投资方除关注基础资产现金流、物业升值潜力等以外另一项信用加持的关键因素。


推荐阅读:

愚人节的套路太长,我们选择发奖!

【数驱•新融合】探索OMO模式下的增长点

技术专栏 | Vue 源码分析之 Observer

【奖】热点观察站 l “复盘”直播答题的52天

红利不再、拐点到来,人口争夺战已经打响

作者:TalkingData研发副总裁 周海鹏

本文由TalkingData原创,转载请标注来源。

近两三年来,随着经济超高速增长阶段的结束,各省市的经济增长开始产生前所未有的巨大分化。有的地区仍然在健康地增长,而许多地区则陷入了经济低迷。从马尔萨斯《人口论》等古典理论,到曼昆的《经济学原理》,都阐述过人口因素对经济发展的巨大影响力。现如今红利荡去,劳动力拐点、人口老龄化、年轻人口减少等话题逐渐走入人们视野。较之传统的人口和经济学家,如何更好、更客观全面分析人口和经济发展问题,要解决两个问题:首先要面向人口进行持续、动态观测,其次是和现代经济数据挂钩,利用新技术,探索人口和经济中的相互影响的数学原理。

从物理学基本原理来看,观察和测量静止或静态的物体是相对比较容易的,动态的、运动的对象则很难观察和测量。人口流动性大增的现世场景下,能否查准人口总量和人口结构的关键问题是人口的迁移和流动。传统的人口普查方法是人口登记有很多不足之处,无法观测人口流动方向、迁移人口总数、人口统计上存在漏报和识别问题。

随着移动互联网发展,这一点已经被弥补。人类历史上第一次出现了这样的设备——它像人体器官一样跟人共生在一起,它沉默而忠实地记录着你的上网行为,描绘你的社交关系、生活习惯等等信息。它还有很多的传感器,一部移动设备除了摄像头和麦克风之外,还有大约 10 到 15 个传感器在时时刻刻源源不断地产生数据。

这些数据无时不刻的刻画着人的生活,从大跨度的时空场景下,TalkingData 利用长时间、全球范围采集的移动数据,再加上后期的统计算法,让我们第一次可以持续、动态观测人口的基本问题,例如:城市的人口数值,城市间、省际的人口迁移等基本问题。再进一步,可以和多种经济和社会发展指标挂钩,进关联分析,尝试管窥经济发展的趋势和未来方向。

从省级人口流动看 GDP 潮起潮落

传统理论已经证实:人口集聚的背后其实是产业和资源的集聚,驱动人口流动最主要的因素是追求更好的生活,具体而言包括工作、收入、环境、社会资源等等,在这些方面经济富裕的省市无疑具有明显的优势。利用 TalkingData 的基本数据,我们可以观察人口流动的现世状态。估算出人口在不同年度的居住城市和省份,在此基础上我们可以分析一下人口流动的现象。

下图是 2016 年-2017 年,全国省级人口迁移的分布:

其中广东、江苏、山东、浙江等经济大省人口流动性非常强,像广东省 2016-2017 年度人口流动量接近 300 万。我们再看这些省 2016 年度的 GDP 情况:

可以看出,2016 年的 GDP 总值,各省的分布和上面人口的分布非常类似。将两者放在一起进行相关性分析可以得到相关性在 0.94 以上。

从省内人口虹吸看单核-多核现象

曾几何时,人们坚定地认为“一个省只有一个中心”,而这在历史上,成为国内多数省的发展模式。随着经济发展的趋势,沿海高速发展的省越来越呈现多核的状态,而中西部依然呈现单核发展的状态。我们可以尝试从人口流动的聚集效应来观察:

下图分别是多核省份:

下图分别是单核省份:

我们可以发现,多核省份基本分布属于“指数函数或者对数函数分布”,最大的城市和第二、三大城市之间的差距不算明显。但是相对而言,单核省份基本属于“幂函数分布”,可以明显看到,最大城市在人口的吸附能力上处于霸主地位,例如河南郑州、广西南宁、湖北武汉。如果我们把全国所有省的单核-多核状态进行统一的测算,可以从下图中看到:沿海经济大省基本均是多核发展态势,像中部的安徽、湖北、湖南、山西、陕西等省份正处于从单核到多核的发展道路上。

单核省的出现是一段历史的产物,既由传统的中国社会中所特有的思维定势所致,即在长期的封建社会中,对民生的冷漠,利益分配向上层倾斜,物质财富在上层聚集,或向权贵生活圈所在区域聚集,形成一种表面的、局部的虚假繁荣;又由在新中国工业化初期,为迅速实现工业化所采取的对农业的“剪刀差”政策所致。

在经济全球化和区域经济一体化趋势下,世界上一些重要区域的空间经济一体化进程,已经由原来的“单核心区”向边缘区扩散推移发展,转变为“多圈”“多核”“重叠”“共生”,最终才能达到“多核心区”的有机融合。例如:广东省工业化进程已开始进入中期阶段,珠三角地区已进入工业化成熟期,仅靠珠三角一个“核心区”来带动全省各地域发展是远远不够的,观察近些年广东省发展趋势,东西两翼沿海地带和粤北山区部分具有增长后劲和发展潜力的地区,逐步成为带动广东区域协调发展的新“核心区”,通过多圈推移、梯度推进,带动经济腹地发展。

从城市间人口流动看二线城市逆袭

马尔萨斯人口论是马尔萨斯于 1798 年所创立的关于人口增加与食物增加速度相对比的一种人口理论,其中有一个颇具争议的结论:生活资料按算术级数增加,而人口是按几何级数增长的,因此生活资料的增加赶不上人口的增长是自然的、永恒的规律,只有通过饥饿、繁重的劳动、限制结婚以及战争等手段来消灭社会“下层”,才能削弱这个规律的作用。现代城市的人口发展得利于人口的聚集,但是,一旦城市人口发展到一定程度,则物极必反。例如大城市的城市病已经极度困扰政府和老百姓。

大规模城市化让亚洲、南美洲等地的发展中国家核心城市承受了巨大的人口压力。从历史视角观察,英国这样的发达国家里,尽管城市化已达很高水平,但首都伦敦仍要面对人口和资源过度聚集带来的多方面挑战,因此英国政府多年来也致力于在首都经济圈内建设符合可持续发展理念的新城,分担人口压力、承接部分产业发展功能,同时作为推动绿色智慧城市建设的试验田。

2016 年 6 月 16 日,召开的“疏解非首都功能”会议上,北京东城、西城、朝阳、海淀、丰台、石景山及被定为“北京城市副中心”的通州,都拿出了各自人口疏解方案。这意味着,在北京已确定今年各城区人口调控指标的基础下,将人口疏解工作从计划转为实施阶段。相似的,上海、深圳、广州也进行了相应的工作。2017 年过半,我们可以观察一下一年以来,北上广深的人口疏解的效果。

从上面的数字中可以看出几个超级城市的疏解特点:

北京:

  • 北京疏解人口基本向南,也从另一面反映东北人口的外流加剧。
  • 疏解人群去向主要集中在河北,例如沧州、廊坊一带,雄安特区的设立会极大加强对这些人群的吸引。

上海、深圳、广州:

  • 深圳明显属于外向型城市,疏解的人口去向较多。
  • 广州明显属于传统型城市,疏解的人口去本省为主。
  • 上海属于中规中矩的城市,去向以江苏、浙江为主。江苏、浙江本就是富裕省份,因此财富并没有明显外流,长三角是全国经济最平衡发展的区域。
  • 深圳是新型城市,离去的人群会带走大量财富,诸如武汉、长沙、重庆等城市会迎来一定的红利。

大数据视角下的人口争夺战

以上的,我们可以看到,在人口红利下降、出生率下降、人口老龄化、房价飙升、教育压力生活压力巨大等等诸多社会现实问题面前,我们可以通过真实世界的客观数据,观察社会在发生什么。其实,在这些现实面前,世界在发生着一些貌似悄无声息的变化:

79 所大学 130 万在校大学生,数量世界第一,这一直是湖北省会武汉引以为豪的一件事。但来自武汉市人社局的数据显示,从 2013 年的留在武汉的大学生为 10.4 万人,到 2016 年的 15 万人,过去 4 年武汉的毕业生“出走”人数虽有下降,但仍是人才输出地。人才流失,一直困扰武汉。

统计表明:在最爱远距离迁移的学生中,湖北的大学毕业生首当其冲。前五大热门的跨省远距离迁移路线中,就有三条从武汉出发,分别是武汉到深圳(第一),武汉到北京(第二),武汉到广州(第五)。激烈的竞争和高昂的生活成本,为何拦不住武汉的大学毕业生“北漂”、“深漂”的决心?

而另外一方面,2017 年,第一财经旗下数据新闻项目“新一线城市研究所”在上海发布了《2017 中国城市创新力排行榜》,对 19 座一线城市和新一线城市的创新土壤做出综合评估。该榜单最终得出的中国城市创新力排名,武汉居于第 8 位,整体落后于广州、杭州、成都等副省级城市。

面对这样的发展态势,武汉市有何应对呢?2017 年 1 月 22 日,武汉市第十三次党代会,有代表提出“建设环高校创新经济带”的建议;代表程春生呼吁武汉出台更有力政策把更多大学生留下来创新创业。“留住大学生,我们不能‘顺其自然’,一定要‘刻意人为’。其后,武汉市提出“留住 100 万毕业生”的口号。

一场人口争夺战已经打响……

大数据技术的诞生和不断发展,以及移动设备数据、人本数据、环境数据的深度挖掘,让 TalkingData 在多个行业领域有了不错的积累和发展的可能。我们可以用这些数据观察群体行为喜好,可以推算广告效果,可以预测房价走势……

在人口争夺战面向,我们可以做什么呢?我们可以观察战争的进程,预测战争的结局和战后的未来。不过,在人类发展的长远视角下,我们相信这肯定不是一场零和的游戏,而是必须达到共赢的一场再平衡。

发展应该瞄准着对经济、民生发展负责的目标,无论是面向省、市的 GDP,还是面向个人发展的基本问题,大数据都可以利用它崭新的一面,帮助人类更好的认识发展的本质,更好的理解过去历史发展的挫折,更好的制定更好的未来发展的目标和路径。

技术专栏 | Vue源码分析之 Watcher 和 Dep

作者:TalkingData 张成斌

本文由TalkingData原创,转载请获取授权。

之前在学习 Vue 官方文档深入响应式原理(https://cn.vuejs.org/v2/guide/reactivity.html)时,大概对响应式有一个概念性的了解以及它的效果是什么样子的。最近通过阅读 Vue 的源码并查询相关资料,对响应式原理有了更进一步的认识,并且大体上可以还原出它的实现过程。因此写这篇文章记录一下自己的理解过程。

响应式原理我理解可以分为两步,第一步是依赖收集的过程,第二步是触发-重新渲染的过程。先来看依赖收集的过程,有三个很重要的类,分别是 Watcher、Dep、Observer。Watcher 是观察者模式中的观察者;我把 Dep 看成是观察者模式中的主题,它也是管理和保存观察者的地方;Observer 用来使用 Object.defineProperty 把指定属性转为 getter/setter,它是观察者模式中充当发布者的角色。对于观察者模式不熟悉的话可以查看上篇文章。

接下来,从最基本的实例化 Vue 开始讲起,本篇文章会以下面这段代码作为实际例子,来剖析依赖收集的过程。

var vm = new Vue({
el: ‘#demo’,
data: {
firstName: ‘Hello’,
fullName:
},
watch: {
firstName(val) {
this.fullName = val + ‘TalkingData’;
},
}
})

在源码中,通过还原Vue 进行实例化的过程,我把相关代码做了梳理。从实例化开始一步一步到实例化了 Watcher 类的源码依次为(省略了很多不在本篇文章讨论的代码):

var vm = new Vue({
el: ‘#demo’,
data: {
firstName: ‘Hello’,
fullName: 
},
watch: {
firstName(val) {
this.fullName = val + ‘TalkingData’;
},
}
})在源码中,通过还原Vue 进行实例化的过程,我把相关代码做了梳理。从实例化开始一步一步到实例化了 Watcher 类的源码依次为(我省略了很多不在本篇文章讨论的代码)
// src/core/instance/index.js
function Vue (options) {
if (process.env.NODE_ENV !== ‘production’ &&
!(this instanceof Vue)
) {
warn(‘Vue is a constructor and should be called with the `new` keyword’)
}
this._init(options)
}

// src/core/instance/init.js
Vue.prototype._init = function (options?: Object) {
const vm: Component = this
// …
initState(vm)
// …
}

// src/core/instance/state.js
export function initState (vm: Component) {
// …
const opts = vm.$options
if (opts.data) {
initData(vm)
}
// …
if (opts.watch && opts.watch !== nativeWatch) {
initWatch(vm, opts.watch)
}
}
function initWatch (vm: Component, watch: Object) {
for (const key in watch) {
// …
createWatcher(vm, key, handler)
}
}
function createWatcher (
vm: Component,
keyOrFn: string | Function,
handler: any,
options?: Object
{
// …
return vm.$watch(keyOrFn, handler, options)
}
Vue.prototype.$watch = function (
expOrFn: string | Function,
cb: any,
options?: Object
): Function 
{
const vm: Component = this
// …

// 注意:在这里实例化了 Watcher
const watcher = new Watcher(vm, expOrFn, cb, options)
// …
}

下面我们来看 Watcher 类究竟起了什么作用:

// src/core/observer/watcher.js
import Dep, { pushTarget, popTarget } from ‘./dep’
export default class Watcher {
constructor (
vm: Component,
expOrFn: string | Function,
cb: Function,
options?: ?Object,
isRenderWatcher?: boolean
) {
this.vm = vm
// …
if (typeof expOrFn === ‘function’) {
this.getter = expOrFn
} else {
this.getter = parsePath(expOrFn)
// …
}
this.value = this.lazy
? undefined
: this.get()
}
}

注意这里 this.getter 的赋值,实际上是把 new Vue() 时, watch 字段里键值对(key/value)的键(key)- 也就是这里的参数 expOrFn – 赋值给了 this.getter。watch 字段里键值对(key/value)的键(key)可以是字符串,也可以是函数。如果 expOrFn 是函数,那么直接让 this.getter 等于该函数。如果是我们之前示例里的代码,那么 expOrFn = ‘firstName’,它是字符串,因此会调用 parsePath 方法。

下面的代码块是 parsePath 方法:

var bailRE = /[^\w.$]/;
function parsePath (path) {
if (bailRE.test(path)) {
return
}
var segments = path.split(‘.’);
// 返回一个匿名函数
return function (obj) {
for (var i = 0; i < segments.length; i++) {
if (!obj) { return }
obj = obj[segments[i]];
}
return obj
}
}

该方法返回一个匿名函数,接受一个对象作为参数。在 Watcher类中的 get() 方法执行this.getter.call(vm,vm)时,会调用这个返回的匿名函数。在匿名函数中,segments[i]是 watch 字段里键值对(key/value)的键(key),如果 segments[i] 被 Object.defineProperty 设置了 get 方法的话,那么执行到 obj[segments[i]] 时,会触发 segments[i] 属性的 get 方法。在我们的示例里,就相当于执行了 vm[firstName],所以会触发 firstName 上的 get 方法(如果设置了的话)。

在 Watcher 的 constructor 中,除了调用了 parsePath(expOrFn),this.value= this.lazy ? undefined : this.get()还调用了 this.get() 方法。下面我们来看一下 Watcher 类里面 get 方法的代码:

// src/core/observer/watcher.js//…
get() {
pushTarget(this)

let value
const vm = this.vm
try {
value = this.getter.call(vm, vm)
}
// …
return value
}

// addDep方法,会在 Dep 类的 depend 方法中调用
addDep (dep: Dep) {
const id = dep.id
if (!this.newDepIds.has(id)) {
this.newDepIds.add(id)
this.newDeps.push(dep)
if (!this.depIds.has(id)) {
// Dep 类中的 addSub 方法
dep.addSub(this)
}
}
}

pushTarget 是 Dep 类中的方法,它的作用是给 Dep.target 赋值,所以 pushTarget 执行了之后Dep.target = 当前这个 watcher 实例,在执行到value = this.getter.call(vm, vm)时,会调用之前 parsePath 里面返回的匿名函数,这时就会调用 Observer 类通过 Object.defineProperty 给 key 设置的 get 方法,而这个 get 函数执行过程中,因为 Dep.target 已经存在,那么就会进入依赖收集的过程。Observer类相关及其 get/set 方法的内容会在之后的文章里介绍,这里只需要知道,依赖收集的过程的开始,是执行了下面的代码:

// 实例化 Dep
const dep = new Dep();
// 调用 Dep 的 depend 方法
dep.depend();

这段代码实际上是在 Observer 类的一个方法中 Object.defineProperty 时的 get 方法中的,这个也是非常重要的内容,我会在之后的文章里介绍。

接下来我们来看 Dep 类的代码:

// src/core/observer/dep.js
export default class Dep {
static target: ?Watcher;
id: number;
subs: Array<Watcher>;constructor () {
this.id = uid++
this.subs = []
}

addSub (sub: Watcher) {
this.subs.push(sub)
}

removeSub (sub: Watcher) {
remove(this.subs, sub)
}

depend () {
if (Dep.target) {
Dep.target.addDep(this)
}
}

notify () {
// stabilize the subscriber list first
const subs = this.subs.slice()
for (let i = 0, l = subs.length; i < l; i++) {
subs[i].update()
}
}
}

之前已经介绍过,Dep.target 是 Watcher 类的实例,执行 Wachter 类的 this.get() 时,就会给 Dep.target 赋值。所以开始依赖收集而执行dep.depend();时,在这里的 depend 方法就会进而执行Dep.target.addDep(this)。addDep 是之前介绍过的 Watcher 类中的方法,addDep 会反过来调用 Dep 类的 addSub 方法,向 Dep 管理的 this.subs 观察者列表里 push 进当前 Watcher 实例。当列表中添加了该属性 – 比如示例里的 firstName – 的 Watcher 实例之后,依赖收集的过程在这里就结束了。也就是下面这张图中render – touch – Data[getter] – Collect as Dependency -Watcher的这个过程结束了。

那图中的Data[setter]- Notify – Watcher – Trigger re-render的过程是体现在哪里呢?根据上篇文章介绍的观察者模式,每次被 watch 的属性即被当作依赖收集起来的属性 – 比如示例里的 firstName – 发生变化时,会触发 Observer 类中的 Object.defineProperty 给该属性设置的 set 方法。set 方法里有回调用dep.notify。该方法会遍历观察者列表中的每一个 Watcher 实例即每一个观察者,然后触发每一个观察者的 update 方法进行更新,最终能更新 Virtual DOM TREE。

介绍完了 Watcher 和 Dep 类,接下来的文章该介绍 Observer 类了。

– To be continued –