数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

因为接下来要做卖家后台数据纵横的改版,对 数据可视化 这块儿又进行了研究和心得的整理,跟大家分享下 数据可视化 常用的五种方式,希望能给大家带来思路的拓展。
概念
借助于图形化的手段,清晰、快捷有效的传达与沟通信息。从用户的角度,数据可视化可以让用户快速抓住要点信息,让关键的数据点从人类的眼睛快速通往心灵深处。
数据可视化一般会具备以下几个特点:准确性、创新性和简洁性。
常用五种可视化方法
下面从最常用和实用的维度总结了如下5种数据可视化方法,让我们来一一看一下:
一、面积&尺寸可视化
对同一类图形(例如柱状、圆环和蜘蛛图等)的长度、高度或面积加以区别,来清晰的表达不同指标对应的指标值之间的对比。这种方法会让浏览者对数据及其之间的对比一目了然。制作这类数据可视化图形时,要用数学公式计算,来表达准确的尺度和比例。
Examples:
a:天猫的店铺动态评分
天猫店铺动态评分模块右侧的条状图按精确的比例清晰的表达了不同评分用户的占比。从下图中我们第一眼就可以强烈的感知到5分动态评分的用户占绝对的比例。
b:联邦预算图
如下图,在美国联邦预算剖面图里,用不同高度的货币流清晰的表达了资金的来源去向,及每一项所占金额的比重。
c:公司黄页-企业能力模型蜘蛛图
如下图,通过蜘蛛图的表现,公司综合实力与同行平均水平的对比便一目了然。
二、颜色可视化
通过颜色的深浅来表达指标值的强弱和大小,是数据可视化设计的常用方法,用户一眼看上去便可整体的看出哪一部分指标的数据值更突出。
Examples:
a:点击频次热力图
比如下面这张眼球热力图,通过颜色的差异,我们可以直观的看到用户的关注点。
b: 2013年美国失业率统计
在图中可以看到,通过对美国地图以州为单位的划分,用不同的颜色来代表不同的失业率等级范围,整个的全美失业率状况便尽收眼底了
c:美国手机用户城市分布
图中红点是用iPhone的人,绿点是用安卓的人。这两张在微博上看到的图,第一张是美国一个城市的一览,第二张图特写了纽约的市中心,尤其是曼哈顿地区。我们可以看到在市中心和主干道的人用iPhone居多,而用安卓的人都在郊区。这也引起了人们的热议,有的说在美国富人都住郊区别墅,所以富人爱用安卓手机;有的反驳说曼哈顿地区的人几乎都用iPhone,说明富人喜欢用iPhone手机。不管结论如何,都足以说明用户都被这些图所吸引,所以可视化的方式效果真的很直观。
注:科学家统计了2年里30亿条含有地理数据的twitter推文,根据客户端总结出来的数据。
三、图形可视化
在我们设计指标及数据时,使用有对应实际含义的图形来结合呈现,会使数据图表更加生动的被展现,更便于用户理解图表要表达的主题。
Examples:
a: iOS手机及平板分布
如下图所示,当展示使用不同类型的手机和平板用户占比时,直接用总的苹果图形为背景来划分用户比例,让用户第一眼就可以直观的看到这些图是在描述苹果设备的,直观而清晰。
b:人人网用户的网购调查
下图可以看出,该数据可视化的设计直接采用男性和女性的图形,这样的设计让分类一目了然。再结合了颜色可视化(左面蓝色右面粉色),同时也采用了面积&尺寸可视化,不同的比例用不同长度的条形。这些可视化方法的组合使用,大大加强了数据的可理解性。
四、地域空间可视化
当指标数据要表达的主题跟地域有关联时,我们一般会选择用地图为大背景。这样用户可以直观的了解整体的数据情况,同时也可以根据地理位置快速的定位到某一地区来查看详细数据。
Examples:
a:美国最好喝啤酒的产地分布
下图中,通过以美国地图为大背景,清晰的记录了不同州所产啤酒在1987-2007年间在美国啤酒节中获得的奖牌累计总数。再辅以颜色可视化的方法,让用户清晰的看到美国哪些州更盛产好喝的啤酒。
五、概念可视化
通过将抽象的指标数据转换成我们熟悉的容易感知的数据时,用户便更容易理解图形要表达的意义。
Examples:
a:厕所贴士
下图是厕所里贴在墙上的节省纸张的环保贴士,用了概念转换的方法,让用户清晰的感受到员工们一年的用纸量之多。如果只是描述擦手纸的量及堆积可达高度,我们还没有什么显性化概念。但当用户看到用纸的堆积高度比世界最高建筑还高、同时需砍伐500多颗树时,想必用户的节省纸张甚至禁用纸张的情怀便油然而生了。所以可见用概念转换的方法是多么的重要和有效。
b: Flickr云存储空间达1TB的可视化描述
Flickr对云存储空间升至1TB确实是让人开心的事情,但相信很多人对这一数量级所代表的含义并不清晰。所以Flickr在宣传这一新的升级产品时,采用了概念可视化的方案。从下图可以看出,用户可以动态的选择照片的大小,之后Flickr会采用动态交互的方式计算和显示出1TB能容纳多少张对应大小的图片。这样一来,用户便有了清晰的概念,知道这1TB是什么量级的容量了。
注意事项
在总结了常见维度的数据可视化方法和范例之后,要再次总体强调下做数据可视化设计时的注意事项,总结了三点如下:
1)设计的方案至少适用于两个层次:一是能够整体展示大的图形轮廓,让用户能够快速的了解图表所要表达的整体概念;之后再以合适的方式对局部的详细数据加以呈现(如鼠标hover展示)。
2)做数据可视化时,上述的五个方法经常是混合用的,尤其是做一些复杂图形和多维度数据的展示时。
3)做出的可视化图表一定要易于理解,在显性化的基础上越美观越好,切忌华而不实。
总结
作为设计师,除了掌握方法来有针对性的设计之外,还要在平时多留心积累素材,同时培养自己的创造力和专业素养,保持一颗好奇心,才能真正的设计出样式精美又实用的数据可视化图表。 来源:设计夹
作者:小白鹿@aliued
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-03-07 22:13:00
摘要:你听过养小三,听说过养数据吗
我们熟悉 数据分析 ,但是养数据这三个字儿对很多人来说是陌生的。百度了一下:“养数据”只有25.6万条网页,而“ 数据分析 ”却有2370万条网页,侧面说明了养数据的重视度远远不够的。
“养数据”没有百度百科的解释,百度指数中也没有收纳这个词,并且百度养数据出现的是让我哭笑不得的如下内容。
养猪、养鱼….什么鬼!
离开了数据谈决策是耍流氓,不主动养数据谈什么数据数据不会自己从天而降,有些数据即便你有钱也买不到。养数据就如养孩子一样,真的是一把屎一把尿的拉扯大的。不多说了,没有孩子的人是没办法体验养数据之苦的。
数据分析越来越被企业重视
数据分析这几年被空前的重视,我自己感觉也是这样,这两年找我做数据化管理的培训和咨询的企业尤其多。这些企业一上来就是数据分析技巧,数据分析理论,数据化决策等等。而看他们提供给我数据则是不忍目睹,各种数据缺失,各种不规范,数据源质量一塌糊涂。如顾客名字叫坑爹,会员年龄100多岁,手机号135790248*……
养数据必须被企业的管理层和业务单位重视起来,扯皮不是理由,懒惰不是借口。作为数据单位有义不容辞的责任去控制数据质量和内容。只有数据质量和数量提升了,企业才可以谈什么数据驱动,DT时代。否则,请住嘴。
养数据的典范:雅昌的故事
雅昌是一个深圳的企业,93年成立的时候只是一个搞印刷的小作坊,而现在它被大众熟悉是因为我们的奥运会、世博会等的宣传材料是他们印刷的,而且雅昌艺术品拍卖网是国内最权威的艺术品拍卖门户网站。
它有9万多位艺术家的电子资料,1200万艺术品展览和拍卖的数据,3500多万件艺术品资料。雅昌就是一个艺术品的 大数据 库,世界上所有的拍卖行都必须要和它合作,因为有些艺术品只有它才有电子版的资料。
一切的一切只有一个关键词:养数据!
雅昌的老板很有养数据的意识,当年还是一个小作坊的时候,他就要求员工必须要把客户的印刷资料作为电子版本保存起来。大家可以想一想,那可是90年代,还是磁盘存储的年代,存储还是以MB为单位而不是现在流行的G。
所有客户的电子数据就这样被保存起来了,直到后来数字存储技术的发展,他们才把所有收集的数据分门别类的归档。于是,别人没有的电子资料雅昌有,老一代艺术家作品只有雅昌有电子版……
随着雅昌自己印刷业务的增长,它收集的数据也越来越多,数据就是这样被养大了。再后来雅昌顺理成章的“跨界”艺术品门户。
养数据是苦逼的工作,有时候甚至短期看不到未来,但是坚信必有收获。大的方面来说养数据包含三方面:
完善数据结构,把数据养大
1、企业数据库中有的字段必须要全部收集起来,尽可能的不要留白。
2、有用但是现在没有的数据必须想办法收集起来,例如传统零售的客流数据,客流动线数据。
3、暂时用不到的数据,本着先收集再应用的原则。对于一个零售门店来说最有用的数据可能不是顾客的购买数据,反而是顾客“不”购买的数据,清楚了顾客为什么不购买对于企业的商品规划,营运流程再造是有巨大好处的。就如飞机修理厂为了解飞机哪个部分最容易被击中,派人统计飞机出故障的部位。发现主要问题在机翼的部分,那里弹孔最多,于是他们决定把机翼部分加强。其实在战场中被击落没有飞回来的飞机数据才是最有意义的。
4、跨界合作得大数据。线上企业要了解线下就必须要和传统零售合作,打通各种数据孤岛。
提高数据质量,把数据做精
有数据但没质量是企业数据的通病,原因不外乎基层数据录入太随意,定义不清楚,网络硬件等影响原因。比如有些服装专卖店的员工平时很忙没时间将订单录入系统(百货店铺品牌方的系统和商场收银是分离的),于是店长就每天下班前才将所有的当日订单合并到一起录入进销存系统。这样的危害是巨大的。
1、进销存系统变成了单纯的财务对账系统,说好的数据分析根本无从下手;
2、没办法分析顾客的客单价和连带率(平均顾客购买数量),因为n张订单被人为的合并了;
3、没办法分析店铺按时段的成交规律,所有订单都只是显示一个时间点。
提高数据质量这种事情只能是企业从营运端入手严防死守,前提是重视!不难!
要有数据入库的意识
数据库数据库就是尽可能的让数据在数据库中,而不是在excel中。企业很多数据其实是在excel中的,比如促销活动的开始时间、结束时间、活动内容等。还比如店铺在商场的位置,楼层,店铺级别等信息也是在excel中而不是在系统中的。
别让一些基础数据躺在excel中,一定要想办法放到数据库中去。一是安全,而是更利于数据的场景化,否则就只是一些干巴巴的数字。
养数据是一个长期艰巨的工作,并且得不到企业管理层重视,也得不到基层员工的积极配合。但是必须要克服困难,上!
本文为专栏文章,来自:数据化管理,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/4050.html 。
数据分析
2015-12-03 01:01:00
作者:Lilian Weng
编译:ronghuaiyang
导读 如果你和我一样,不明白为什么深度 神经网络 可以推广到样本外的数据点,而不会过拟合,请继续阅读。
如果你像我一样,有传统 机器学习 的经验进入 深度学习 领域,你可能会经常思考这样一个问题:由于一个典型的深度神经网络有这么多的参数,训练误差很容易达到完美,那么它一定会遭受大量的过拟合。如何将其推广到样本外数据点?
在理解为什么深层神经网络可以泛化的过程中,我想起了一篇关于系统生物学的有趣的论文——《生物学家能修理收音机吗》。如果一位生物学家打算用她在生物系统上工作的方法来修理一台无线电设备的话,可能会很困难。由于无线电系统的全部机制还没有被揭示出来,小的局部功能可能会给出一些提示,但它很难显示系统内的所有交互,更不用说整个工作流程了。无论你是否认为它与DL相关,它都是一本非常有趣的读物。
我想在这篇文章中讨论一些关于深度学习模型的泛化性和复杂性度量的论文。希望它能帮助你理解为什么DNN可以泛化。
关于压缩和模型选择的经典定理
假设我们有一个分类问题和一个数据集,我们可以开发许多模型来解决它,从拟合一个简单的线性回归到在磁盘空间中存储整个数据集。哪一个更好?如果我们只关心训练数据的准确性(尤其是考虑到测试数据很可能是未知的),那么记忆法似乎是最好的——嗯,听起来不太对。
有许多经典定理可以指导我们在这种情况下决定一个好的模型应该具有哪些类型的属性。
奥卡姆剃刀
奥卡姆剃刀是14世纪奥卡姆的威廉提出的一种非正式的解决问题的原则: 简单的解决方案比复杂的解决方案更有可能是正确的。
当我们面对多个潜在候选理论来解释这个世界,并且必须从中选出一个时,这种说法是非常有力的。对于一个问题来说,太多不必要的假设似乎是合理的,但很难推广到其他复杂的问题中,或最终得到宇宙的基本原理。
想想看,人们花了几百年的时间才发现,天空在白天是蓝色的,而在日落时是红色的,原因是一样的(瑞利散射),尽管两种现象看起来非常不同。人们肯定对它们分别提出了许多其他的解释,但统一而简单的版本最终胜出。
最小描述长度原则
奥卡姆剃刀原理同样适用于机器学习模型。这种概念的一个形式化版本称为 最小描述长度(MDL) 原则,用于比较观察到的数据中相互竞争的模型/解释。 “理解就是压缩。”
MDL的基本思想是将学习视为数据压缩。通过对数据的压缩,我们需要发现数据中具有高潜力的规律性或模式,从而推广到不可见的样本。Information bottleneck理论认为,深度神经网络首先经过训练,通过最小化泛化误差来表示数据,然后通过消除噪声来学习压缩这种表示。
同时,MDL将模型描述视为压缩交付的一部分,因此模型不能任意大。
MDL原理的两部分版本规定:设H(1),H(2),……H(1),H(2),……为能够解释数据集DD的模型列表。其中最好的假设应该是使总和最小化的假设: L(H)为H模型的描述的长度,单位为bits。 L(D|H)是用H编码时,以bits为单位来描述数据D的长度。
简单地说,“最佳”模型是包含编码数据和模型本身的“最小”模型。按照这个标准,我在本节开始时提出的记忆方法听起来很糟糕,不管它对训练数据的准确性有多高。
人们可能会说奥卡姆剃刀是错的,因为现实世界可能是任意复杂的,为什么我们必须找到简单的模型?MDL的一个有趣的观点是将模型视为 “语言” ,而不是基本的生成定理。我们希望找到好的压缩策略来描述一小组样本中的规律性,它们 不一定是解释这种现象的“真正”生成模型 。模型可能是错误的,但仍然有用(想想贝叶斯先验)。
Kolmogorov复杂度
Kolmogorov复杂度依赖于现代计算机的概念来定义对象的算法复杂度(描述性):描述对象的最短二进制计算机程序的长度。继MDL之后,计算机本质上是最通用的数据解压器。
Kolmogorov复杂度的正式定义是:给定一个通用计算机U和一个程序p,让我们将U(p)表示为处理程序的计算机的输出,L(p)表示为程序的描述性长度。那么一个字符串ss相对于通用计算机U的Kolmogorov复杂度KU为:
请注意,通用计算机可以模仿任何其他计算机的操作。所有现代计算机都是通用的,因为它们都可以简化为图灵机。无论我们使用哪台计算机,这个定义都是通用的,因为另一台通用计算机总是可以被编程来克隆U的行为,而对这个克隆程序进行编码只是一个常量。
Kolmogorov复杂性和Shannon信息论之间有许多联系,两者都与通用编码有关。一个惊人的事实是,一个随机变量的期望Kolmogorov复杂度大约等于它的Shannon熵。更多关于这个主题的内容不在本文讨论范围内,但是网上有很多有趣的阅读材料。
Solomonoff的推理定理
奥卡姆剃刀的另一种数学形式是Solomonoff的通用归纳推理理论(Solomonoff, 1964)。其原则是根据其Kolmogorov复杂度,选择与生成训练数据的“最短程序”相对应的模型。
深度学习模型的表达能力
与传统的统计模型相比,深度神经网络具有非常多的参数。如果我们用MDL来度量一个深度神经网络的复杂度,并将参数的个数作为模型描述的长度,这看起来会很糟糕。模型描述L(H)L(H)很容易增长失控。
然而,一个神经网络要获得高表达能力,必须有许多参数。由于深度神经网络具有捕捉任何灵活数据表示的能力,因此在许多应用中都取得了巨大的成功。
普遍逼近定理
普遍逼近定理指出一个前向网络需要有:1)一个线性输出层,2)至少有一个隐含层包含有限数量的神经元,3)某个激活函数可以在n维实数空间的一个紧子集上近似 任意 连续函数,达到任意精度。这个定理首先被证明为sigmoid激活函数。后来的研究表明,普遍逼近性质并不是针对特定的激活函数,而是针对多层前馈体系结构。
尽管单层前馈网络足以表示任何函数,但其宽度必须呈指数级增长。普遍逼近定理不能保证模型能被正确地学习或推广。通常,添加更多的层有助于减少浅层网络中所需的隐藏神经元的数量。
为了利用普遍逼近定理,我们总是可以找到一个神经网络来表示目标函数,在任何期望的阈值下都有误差,但是我们需要付出代价—网络可能会变得非常大。
证明:两层神经网络的有限样本表达量
我们目前讨论的普遍逼近定理不考虑有限样本集,Zhang, et al. (2017)对两层神经网络的有限样本表达性给出了一个简洁的证明。
神经网络C可以表示任何函数,给定样本大小n维度为d,如果:对于每一个有限样本集合S⊆Rd,|S| = n 每个函数定义在这个样本集:f:↦R,我们可以找到一组C的权重, C (x) = f (x), ∀x∈S。
这篇文章提出了一个定理: 存在一个具有ReLU激活和2n+d个权值的两层神经网络,它可以表示任意d维尺寸的样本上的函数。
证明: 首先我们想构建一个两层神经网络C: Rd↦R。输入是一个d维向量,x∈Rd。隐含层有h个隐藏单元,权值矩阵W∈Rd×h,、偏置向量b∈Rh,使用ReLU激活函数。第二层输出一个标量值,权向量v∈Rh,且偏置为零。
一个输入向量x的在网络C的输出可以表示为:
其中W(:,i),为d×h矩阵的第i列。
给定样本组S = {x1,…, xn}和目标值y = {y1,…, yn},我们想找到合适的权值W∈Rd×h、b、v∈Rh,使得C (xi) =yi,∀i= 1,…,n。
让我们将所有样本点组合成一个批次,作为一个输入矩阵X∈Rn×d。设h=n,则XW – b为大小为n×n的方阵。
我们可以将W简化为所有列向量相同:
让ai= xiw ,我们希望找到一个合适的w和b,使b1当det(MReLU)≠0时,为非奇异方阵,所以我们总能找到合适的v来求解vMReLU=y(即MReLU的列空间全部为Rn,可以找到列向量的线性组合,得到任意y)。
深度神经网络可以学习随机噪声
正如我们所知,两层神经网络是通用的逼近器,因此,它们能够完美地学习非结构化随机噪声也就不足为奇了。如果对图像分类数据集的标签进行随机变换,深度神经网络的高表达能力仍然可以使其训练损失接近于零。这些结果不随正则化项的添加而改变。
图1. 用随机标签或随机像素在CIFAR10上拟合模型:(a)学习曲线,(b-c)标签损坏率是随机打乱标签的百分比。
深度学习模型是否过拟合?
深度学习模型是高度参数化的,常常可以在训练数据上得到完美的结果。在传统的观点中,就像偏差-方差权衡一样,这可能是一场灾难,没有任何东西可以概括为不可见的测试数据。然而,通常情况下,这种“过拟合”(训练误差= 0)的深度学习模型在样本外测试数据上仍然表现良好。嗯……有意思,为什么
深度学习的现代风险曲线
传统的机器学习使用下面的u型风险曲线来衡量偏差-方差权衡,并量化模型的可泛化程度。如果有人问我如何判断一个模型是否过拟合,我首先想到的就是这个。
随着模型的变大(增加的参数越多),训练误差减小到接近于零,但是当模型的复杂度超过“欠拟合”和“过拟合”的阈值时,测试误差(泛化误差)开始增大。在某种程度上,这是与奥卡姆剃刀很好的对齐。
图2. u型偏差-方差风险曲线。
不幸的是,这不适用于深度学习模型。Belkin et al. (2018)调和了传统的偏方差权衡,提出了一种新的用于深度神经网络的双u型风险曲线。一旦网络参数数量足够多,风险曲线进入另一种状态。
图3. 针对深度神经网络提出了一种新的双u型偏方差风险曲线。
该论文称,这可能有两个原因: 参数的数量并不能很好地衡量 归纳偏差 ,归纳偏差定义为用于预测未知样本的学习算法的一组假设。 使用一个更大的模型,我们可能能够发现更大的函数类,并进一步找到插值函数具有更小的范数,从而“更简单”。
实验观察到双u型风险曲线,如图所示。然而,我花了很大的力气来重现这个结果。生活中存在一些迹象,但为了生成一条与定理类似的相当平滑的曲线,必须注意实验中的许多细节。
图4. 针对MNIST采集的4000个数据点,对不同隐藏单元数的单层fc网络进行训练和评估误差。
正则化不是泛化的关键
正则化是控制过拟合和提高模型泛化性能的常用方法。有趣的是,一些研究(Zhang, et al. 2017)表明,显式正则化(即数据增强、权重衰减和dropout)对于减少泛化误差既不是必要的,也不是充分的。
以CIFAR10上训练的Inception模型为例(参见图5),正则化技术有助于样本外的泛化,但作用不大。没有一个单独的正则化看起来是独立于其他项的。因此,正则化器不太可能是泛化的“基本原因”。
图5. Inception模型的精度,以CIFAR10为训练对象,采用不同的数据增强和权值衰减组合。
内在维度
在深度学习领域中,参数个数与模型过拟合无关,说明参数个数不能反映深度神经网络的真实复杂度。
除了参数个数,研究人员还提出了许多方法来量化这些模型的复杂性,如模型的自由度(Gao & Jojic, 2016),或prequential码(Blier & Ollivier, 2018)。
我想讨论一下最近关于这个问题的一个方法,名为 intrinsic dimension (Li et al, 2018)。内在维度直观,易于测量,同时还揭示了不同尺寸模型的许多有趣特性。
考虑具有大量参数的神经网络,形成一个高维参数空间,学习发生在这个高维的“目标视图”上。参数空间流形的形状至关重要。例如,更平滑的流形有利于优化,因为它提供了更多的预测梯度,并允许更大的学习速率——这被认为是batch normalization成功地稳定训练的原因。
尽管参数空间很大,但幸运的是,我们不必过多担心优化过程陷入局部最优,正如已经显示的那样,目标视图中的局部最优点几乎总是位于鞍点而不是谷点。换句话说,总是有一个维度子集包含离开局部最优并继续探索的路径。
图6所示。说明了参数优化视图上的各种临界点。
度量内在维度的一个直觉是,由于参数空间具有如此高的维数,可能没有必要利用所有维数来有效地学习。如果我们只在一片目标视图中游走,仍然可以学习到一个好的解决方案,那么得到的模型的复杂性很可能比通过参数个数得到的模型要低。本质上这就是内在维度试图评估的东西。
比如说模型有D个维度,及其参数表示为θ(D)。对于学习来说,一个小的d维子空间是随机采样得到的,其中d < D。在优化更新的过程中,只用到了较小的子空间θ(d)来更新模型参数,而不是根据所有D个维度来进行梯度的更新。
图7. D=3时直接优化的参数向量说明。
梯度更新公式如下:
其中θ0(D)是初始化值,P是D×d的投影矩阵,在训练前进行随机采样。θ0(D)和P是不可训练的,在训练中是固定的。θ(d)初始化为全零。
通过搜索d=1,2,…,D的值,将解出现时对应的d定义为内在维度。
事实证明,许多问题的内在维度比参数的数量要小得多。例如,在CIFAR10图像分类中,650k+参数的全连接网络只有9k的固有维数,而包含62k参数的卷积网络的固有维数更低,只有2.9k。
图8. 度量的各种模型的内在维度d达到了90%的最佳性能。
对内在维度的度量表明,深度学习模型比表面上看起来要简单得多。
异构层健壮性
Zhang等(2019)研究了参数在不同层中的作用。论文提出的基本问题是: “所有层都是平等的吗?” 简短的回答是:不是。模型对某些层的变化更敏感,而对其他层的变化则不敏感。
本文提出了两种类型的操作,可应用于第ℓ层的参数上,ℓ= 1,…,L,在t时刻,θt(ℓ)用来测试他们对模型的鲁棒性的影响:
重初始化 :重置参数初始值,θt(ℓ)←θ0(ℓ)。这层重新初始化后的网络性能被称为重初始化ℓ层的鲁棒性。
重随机化 :对层参数进行随机采样θt(ℓ)←θ~(ℓ)∼P(ℓ)。相应的网络层的性能称为重随机化的鲁棒性。
层可以通过这两个操作分为两类: 鲁棒层 :重新初始化或随机化层后,网络没有或只有微不足道的性能下降。 关键层 :其他情况。
在全连接和卷积网络上也观察到类似的模式。重新随机化任何层 完全破坏 模型性能,因为预测立即下降到随机猜测。更有趣和令人惊讶的是,当应用重新初始化时,只有前几层(最接近输入层)是关键的,而重新初始化更高的层只会导致性能 微不足道的下降
图9. (a)以MNIST为训练对象的fc网络。每一行对应于网络中的一层。第一列为各层的再随机鲁棒性,其余列为不同训练时间的再初始化鲁棒性。(b)基于CIFAR 10的VGG11模型(conv net)。类似于(a)中的表示,但是行和列被置换了。
ResNet能够使用非相邻层之间的快捷方式跨网络重新分布敏感层,而不只是在底层。在残差块结构的帮助下,网络对再随机化具有均匀鲁棒性。只有每个残差块的第一层仍然对重新初始化和重新随机化敏感。如果我们把每个残差块看作一个局部子网络,那么健壮性模式就像上面的fc和conv网络。
图10. 在CIFAR10训练的ResNet-50模型中,层的重新随机化(第一行)和重新初始化(重置行)鲁棒性。
基于深度神经网络中很多顶层对模型重新初始化后的性能并不重要的事实,本文粗略地得出结论: “采用随机梯度训练的超容量深度网络由于其临界层数的自限制,具有较低的复杂度。”
我们可以考虑将重初始化作为减少有效参数数量的一种方法,从而使观察结果与所演示的内在维度保持一致。
实验
在看到上面所有有趣的发现之后,复现它们应该会很有趣。有些结果比其他结果更容易复现。细节如下所述。我的代码可以在github上找到:https://github.com/lilianweng/generaliz-experiment。
深度模型的新风险曲线
这是最难复现的。作者确实给了我很多很好的建议,我很感激。以下是他们实验中一些值得注意的设置: 没有正则化项,如权值衰减,dropout。 在图3中,训练集包含4k样本。它只采样一次,并对所有模型进行固定。评估使用完整的MNIST测试集。 每个网络都经过长时间的训练,实现训练风险接近零。对于不同大小的模型,学习率的调整是不同的。 为了使模型对欠参数化区域的初始化不那么敏感,他们的实验采用 “权值重用” 方案:将训练较小神经网络得到的参数作为训练较大神经网络的初始化。
我没有对每个模型进行足够长的训练或调整,以获得完美的训练性能,但评估误差确实显示了插值阈值周围的特殊扭曲,与训练误差不同。例如,对于MNIST,阈值是训练样本的数量乘以类的数量(10),即40000。
x轴是模型参数的个数取对数。
层不是生来平等的
这个很容易复制。参见我的实现此处:https://github.com/lilianweng/generalizing-ent/blob/master/layer_equality.py。
在第一个实验中,我使用了一个三层的fc网络,每层256个单元。第0层是输入层,第3层是输出层。该网络在MNIST上训练了100个epochs。
在第二个实验中,我使用了一个四层的fc网络,每层128个单元。其他设置与实验1相同。
内在维度测量
为了正确地将d维子空间映射到全参数空间,投影矩阵p应该具有正交列。因为Pθ(d)是P的列的总和对应的标量值的向量,最好充分利用P的正交的子空间列。
我的实现采用了一种简单的方法,从标准正态分布中抽取一个具有独立项的大矩阵作为样本。这些列在高维空间中是独立的,因此是正交的。当维度不是太大时,这种方法有效。在使用大型的d进行探索时,有创建稀疏投影矩阵的方法,这正是本文所建议的。
实验运行在两个网络上:(左)一个两层的fc网络,每层64个单元,(右)一个单层的fc网络,128个隐藏单元,训练在MNIST的10%。对于每个d,模型都要经过100个epochs的训练。参见代码。
英文原文:https://lilianweng.github.io/lil-log/2019/03/14/are-deep-neural-networks-dramatically-overfitted.html
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66207.html 。
数据分析
2019-07-05 14:50:00
想让数据变得更好看?不必成为经验丰富的数据科学家,也不必成为平面设计师。
有一些能让数据从简单的表格变成多种多样的图形,地图甚至词“云”。
并不是所有的工具都适合你,但这些工具确实很有用。
希望你不仅能从中学到新的技能和极具创新的工具,更能从中结合你自己的业务有新的发现。
1. Infogr.am
在Infogr.am网站中,你可以使用30多种图形和6种主题创建互动和可嵌入的图表。
2. Fusion Tables
谷歌Fusion Tables是一款数据管理应用,通过Fusion Table,用户可以快速生成相惜的图表,图形或者地图。用户还可以将图表与其他人协作并支持使用共有数据或私有数据。英国的《卫报》(Guardian)也使用这个工具哦~
3. Piktochart
Piktochart拥有大量免费的优质模版,可用于图表,报告,banner和演讲。
4. dygraphs
dygraphs是个开源的Javascript图表库,通过调用接口,用户可以直接把大型数据集制作成任何想要的形式。
5. Timeline
Timeline是由Simile发明的,可以让用户通过简单的滚动和水平拖拽而生成简单的交互时间轴。
6. Leaflet
Leaflet也是个开源的javascript库,用户可以创建友好互动的地图。
7. D3 .JS
D3.JS 是主要为基于HTML,SVG和CSS的操纵型文档设计的JavaScript库。
8. Tagxedo
Tagxedo 是一款简单的词云生成器。对于任意文本,都可以将单词提取出来,并根据其出现的频率调整单词的大小。
9. Easel.ly
Easel.ly是一款非常简单好用的信息图形生成器,拥有好几百个模版,当然,如果你喜欢,也可以不用模版哦~
10. Creately
Creately 可以制作有50多种图,包含几千个例子和形状库,支持实时协作。
11. Sisense
Sisense 支持组合多个数据源,可以让用户从丰富的 数据可视化 数据中发现病分享见解。
12. Nuvi
Nuvi是个高端的社交媒体可视化平台,用户可以创建实时可视化,监控主题或关键字并构建定制报告。
13. Bime
Bime是一个高端的数据和仪表盘云平台,其跨设备设计相当时尚。
14. Color Brewer
Color Brewer 由Penn State开发,是一款用于选择地图颜色的工具,用户可以用它来保证特殊区域的独立性。
15. iCharts
iCharts是一个可视化分析云平台,用户可以轻松嵌入,分享和收集图表。
16. Better World Flux
使用 Better World Flux可以通过观察社交,经济,政治指标来跟踪国家的发展,并发现重要的趋势和模式。
17. Visual.ly
Visual.ly 有一句话:无需经验和学习,按钮搞定信息图形和 数据可视化 。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-01-10 12:16:00
大数据 文摘出品
来源:thegradient
编译:张睿毅、武帅、钱天培
一个军方训练的 神经网络 声称可以分类图像中的坦克,但实际上,它只是学会了识别不同的亮度,因为一种类型的坦克仅出现在明亮的图片中,而另一种类型仅出现在较暗的图片中。
一个游戏AI在学会了在第一关的最后故意死去,而不是在更难的第二关的开局死去,因为这样可以得到更高的分数。
AI通过某种让人啼笑皆非的奇怪方式尝试骗过人类,并达到自己的目的,这样的案例之前文摘菌总结过一大批。
模型通过学习“错误”的信息来解决任务的问题已经存在很长时间了, 并被称之为“聪明汉斯效应(Clever Hans effect)” 。
该效应说的是,一匹名为汉斯的马看似能完成一些简单的智力任务,但实际上只是依赖于人们给出的无意识线索。
“聪明汉斯效应(Clever Hans effect)”在图像检测领域早已有之,但最近,在一篇最新论文中,来自台湾国立成功大学的Niven和Kao指出,这一现象也正在NLP领域大受关注。脱去它的影响后, BERT也许没有我们想得那么神奇。
先附上论文链接,再一起看看这个论证过程
https://www.aclweb.org/anthology/P19-1459/
Niven和Kao采用了一个论证理解数据集。随机选择的准确率为50%;之前表现最好的模型的准确率为71%;然后他们选择了BERT,仅仅微调后,便达到了惊人的77%的准确率。
如此看来,BERT似乎确实名不虚传。
但是,作者对这一看似很成功的“微调”产生了怀疑,并尝试对此进行论证。
NLP迎来“聪明的汉斯”时刻
论证理解是一项相当困难的任务,需要世界知识和常识推理。虽然BERT毫无疑问是目前为止最好的语言模型之一,其迁移学习正是“NLP的Imagenet时刻”,但鲜有证据表明,语言模型已经习得高级自然语言理解这一技能。
给定一个论点和一个原因,我们需要找出使得该推理成立的论据。
举个例子,假设论点是“谷歌不存在垄断”,原因是“人们可以选择不使用谷歌”。这一推理成立背后需要一个论据,即“其他搜索引擎并没有导向谷歌”。但是如果说“其他搜索引擎都导向了谷歌”,那么论点就不能成立了。
作者也对BERT模型进行了三项分析。
首先,他们在可能的答案(即论点)中计算了一元文法(unigrams)和二元文法(bigrams),并观察到像not,is,or之类的单个一元文法相较于随机概率而言,能够更好地预测出正确的论点。这表明这些线索是有用的,并且也可能为模型所利用。
接着,为了检查模型是否确实利用了这些线索,作者只给模型提供了部分输入,这使得模型不可能推出正确答案。例如,如果没有给出论点或原因,就不可能推断出“其他搜索引擎没有重定向到谷歌”或“其他搜索引擎全都重定向到了谷歌”这两个论据哪一个是正确的。然而,模型并不理会这一不可能性,并以71%的准确率识别出了正确的论点。
在试验完其他两项类似的任务之后(仅论点和论据;仅原因和论据),作者总结到,数据集中包含着统计线索,而BERT的良好表现完全归功于对这些线索的利用。
为了说明这一点,在他们的第三个实验中,作者构建了一个数据集,其中的线索不再提供信息,发现BERT性能下降到随机概率水平。
相信大多数人会同意,一个基于大量的如not,is,do之类的一元文法做出预测的模型是不可能真正理解论证的。
因而,作者声明他们的SOTA结果毫无意义。
这让人联想到最近两个臭名昭著的案例。一个是图像分类器,声称能够区分罪犯的面孔和守法公民的面孔,但实际上只是在检测微笑;另一个是所谓的“性取向检测器”,实则是在检测眼镜,胡须和眼影。
如果NLP跟随计算机视觉的脚步,似乎也注定要重蹈它的覆辙。
回到论文中,作者指出, 最近大量的工作显示NLP数据集中的“聪明汉斯效应”。
要明确的是,这也不是说像BERT这样的大型模型或深度学习都是无用的。但是,对于深度学习模型在高级自然语言理解任务中表现出的近乎人类表现的报告,我们应该持怀疑态度。
模型表现超好?别急着开心,试试能不能骗过它!
发现聪明汉斯效应案例的论文越来越多,这为NLP研究提出了重要的新议题。最明显的一个议题就是, 如何预防这种影响。
当数据集中的模式与手头任务的目标一致时,那么能够识别、记住并概括这些模式的模型就是可取的。 如果不是的话,那模型就很可能在不理解任务的情况下依然表现良好。
为了防止聪明汉斯效应,我们需要更好的数据集,并且对模型进行严格的鲁棒性分析。
提出一个模型、并对其进行改进可以让你在开发过程中获得即时的满足感。此外,在公共数据集上的SOTA也可以确保论文被接收。
然而,创建数据集所获得的的满足感更加滞后且不确定。据说,ACL会议评审人员对提出获取SOTA的新模型的论文的默认立场是“接受”,而引入新数据集的论文则很可能因为“本文只引入新数据集”而拒绝。他们认为,创建数据集的人没有做真正的科学研究。
移除模型的一部分(ablation)并观察其对性能的影响是验证某部件是否有用的常用方法。 如果性能没有下降,那么该部件就是无用的,应该被消除。
这也应该成为执行数据集消除任务的常见做法,例如: 仅提供不完整的输入(如前文所述) :这将验证是否需要完整输。如果不需要,则说明数据集包含着一些可以采取捷径的线索。 打乱输入 :这可以验证单词(或句子)顺序的重要性。 如果分数没有太大变化,那说明模型并没有理解输入的顺序信息。 分配随机标签 :如果10%的实例被随机重新标记,性能会下降多少呢?所有实例重新标记呢?如果分数没有太大变化,那么模型可能没有学到任何有趣的东西。 随机替换内容词 :如果所有名词短语或动词短语都被随机名词短语和动词替换,性能会下降多少?如果不多,则数据集可能提供了预料之外的非内容提示,例如句子长度或功能词的分布。
再举个例子。如果在输入中添加一个不相关的句子会导致问答模型给出不同的答案(见下图),就说明该模型并不能真正理解问题。
除了创建更好的数据集外,模型的创建者也应该有“建造它,破坏它”(Build It,Break It)的心态。模型不仅要在特定数据集上获得高分,也要有足够的鲁棒性。
如果你的模型表现优良,先别急着开心! 尝试改变你的输入,看看你是否能能够骗过你的模型。
如果你挖空心思也无法骗过你的模型,大概这时你才创造出了一个真正的好模型!
相关报道:
https://thegradient.pub/ nlp s-clever-hans-moment-has-arrived/?nsukey=zGUM%2BitIg2PGgczL9OmBgiXDHkdeWy4hJYQG33fkllynu9PqhCkmZecP%2Bjrltr7xEB14BaM3FGFlyRWfJj9geFWr9cIsH%2FXosh%2B1kWc8%2BYCti2mUogfGmD8YTXENuU9X2slPjqbQOkYURwZHDx%2FnRv68UyeFpeWbEu6YIyOjk2eonxejiqu8sWZT%2B8FWxdUSAEOqQ%2Bwr6iGpCV8y3AgrAA%3D%3D
本文为专栏文章,来自:大数据文摘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/76223.html 。
数据分析
2019-10-26 20:45:00

详情:https://www.bagevent.com/event/5953151?bag_track=GWbanner
本文为专栏文章,来自:数据驱动增长,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/75259.html 。
数据分析
2019-09-17 22:32:00
老师,请问一下,在哪里可以了解一个App的各项数据,比如下载量、排行数据呢?我可以通过什么途径去深入的研究一个App(该产品是别人做的,我并不能获取内部数据)?
好的,下面我们就有请Luke老师来作答一下~
(以下内容为Luke老师亲自回答)
应该说这个一个较为普遍的问题,这里我推荐几个方法供大家参考:
首先,大部分数据都是模拟趋势数据,要获得一个产品的绝对历史下载量是一件很难的事情,你要知道每个App都是分版本向App store或者安卓应用商店提交的,所以理论上我们需要看的是这个版本的下载量和 活跃度 。
一 绝对下载量和活跃度。
你可以购买收费数据,就我经验,BI数据、艾瑞数据都是有一些具体检测数据,能够拿到一断时间内的分类App的数据,但价格不菲,一般大公司都有购买。
当然,BAT有自己的渠道来源,百度有很深的底层数据检测模型,能够详尽的了解App的下载和启动情况。
二 评价数的倒推模型——App store
1、看当前版本和历史版本的评价数。
一般情况下,评价人数占总下载人数的三千分之一左右,或者更低。但新应用和只有几十个评价的应用可能有刷评价的风险,需要剔除刷的数据。所以你可以用评价数×2000得到一个下载数的预估值。
这款拓词App,当前版本的评论数在129个,按照二千分之一的评价比例,估计下载量在10-20万之间。因为他的评价数量不够大,所以可能要适当减少乘的数值。

这是今日头条,看累积下载的话,我的预估是52039×2000=1亿下载量。这是累积下载量,而一般应用的月活在5-10%左右,那么其月活用户在500-1000万用户数左右。当然,阅读类可能会更高一些。
肯德基爷爷这款app还是有点意思的。下载量在400万左右,但恶评如潮的感觉。

如果你要问安卓的情况,我可以很欣慰的告诉你,安卓的应用商店都有下载量,那个下载量除以3之后的值基本就是了,有些刷单严重的需要除以10哦。所以看App store吧。
这种分析方法就是建立一个已知的app品类推算模型,然后讲其中的变量替换为未知的那个app来看。这种方法是我从早年Alex的排名推算中学习而来的。因为评价一个产品的用户大致比例是相同的,千分之一或者二千分之一。
2.App store 评价模型
什么叫App store评价模型呢?就是评价形成的一个模型。
这是一款评价模型为“E型”的产品,从评价看,用户反馈有很多硬伤,产品体验和价值存在明显的可视性缺点。

这是一款“F型”的评价模型,整体体验没有可见硬伤,产品发展路径比较乐观。
这是一款“G型”评价的产品,它有显而易见的问题需要解决,否则会影响产品自发增长。
总结起来就是:我们不仅要看这款产品的现在下载量,也可以通过其评价模型来看接下来增长的预期。
三 参考数据网站
要培养对数据的敏感性,可以经常看看百度统计、Talking Data等网站。Talking Data主要拿的是安卓应用的趋势和排行。
TD有很多排行榜,其用户量的算法可以通过已知某款产品,比如我知道去哪儿的用户覆盖量,去倒推其排行榜的其他App的用户数量。
TD提供了100个排行,都是免费的,当然也有收费服务。
说在最后
我觉得主要还是要对数据有敏感性,拿自己公司已知的产品数据去倒推那些未知的数据,建立自己的数据模型是最关键的。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2015-11-04 21:47:00
【作者简介】本文来自董鑫在 携程个性化推荐与 人工智能 Meetup 上的分享。视频戳 这里 。董鑫, 携程基础业务部BI团队高级算法工程师,博士毕业于上海交通大学计算机科学与技术系。
近些年, 深度学习 在语音识别、图像处理、自然语言处理等领域都取得了很大的突破与成就。相对来说,深度学习在 推荐系统 领域的研究与应用还处于早期阶段。
携程在深度学习与推荐系统结合的领域也进行了相关的研究与应用,并在国际人工智能顶级会议AAAI 2017上发表了相应的研究成果《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》,本文将分享深度学习在推荐系统上的应用,同时介绍携程基础BI团队在这一领域上的实践。
一、推荐系统介绍
推荐系统的功能是帮助用户主动找到满足其偏好的个性化物品并推荐给用户。推荐系统的输入数据可以多种多样,归纳起来分为用户(User)、物品(Item)和评分(Ratings)三个层面,它们分别对应于一个矩阵中的行、列、值。对于一个特定用户,推荐系统的输出为一个推荐列表,该列表按照偏好得分顺序给出了该用户可能感兴趣的物品。
图1. 推荐系统问题描述
如图1右边所示,推荐问题一个典型的形式化描述如下:我们拥有一个大型稀疏矩阵,该矩阵的每一行表示一个User,每一列表示一个Item,矩阵中每个“+”号表示该User对Item的Rating,(该分值可以是二值化分值,喜欢与不喜欢;也可以是0~5的分值等)。
现在需要解决的问题是:给定该矩阵之后,对于某一个User,向其推荐那些Rating缺失的Item(对应于矩阵中的“”号)。
有了如上的形式化描述之后,推荐系统要解决的问题归结为两部分,分别为预测(Prediction)与推荐(Recommendation)。
“预测”要解决的问题是推断每一个User对每一个Item的偏爱程度,“推荐”要解决的问题是根据预测环节所计算的结果向用户推荐他没有打过分的Item。
但目前绝大多数推荐算法都把精力集中在“预测”环节上,“推荐”环节则根据预测环节计算出的得分按照高低排序推荐给用户,本次分享介绍的方案主要也是”预测”评分矩阵R中missing的评分值。
二、基于协同过滤的推荐
基于协同过滤的推荐通过收集用户过去的行为以获得其对物品的显示或隐式信息,根据用户对物品的偏好,发现物品或者用户的相关性,然后基于这些关联性进行推荐。
其主要可以分为两类:分别是memory-based推荐与model-based推荐。其中memory-based推荐主要分为Item-based方法与User-based方法。协同过滤分类见图2。
图2. 协同过滤分类
Memory-based推荐方法通过执行最近邻搜索,把每一个Item或者User看成一个向量,计算其他所有Item或者User与它的相似度。有了Item或者User之间的两两相似度之后,就可以进行预测与推荐了。
图3. 矩阵分解示意图
Model-based推荐最常见的方法为Matrix factorization,其示意图见图3左边。矩阵分解通过把原始的评分矩阵R分解为两个矩阵相乘,并且只考虑有评分的值,训练时不考虑missing项的值,如图3右边所示。R矩阵分解成为U与V两个矩阵后,评分矩阵R中missing的值就可以通过U矩阵中的某列和V矩阵的某行相乘得到。矩阵分解的目标函数见图3,U矩阵与V矩阵的可以通过梯度下降(gradient descent)算法求得,通过交替更新u与v多次迭代收敛之后可求出U与V。
矩阵分解背后的核心思想,找到两个矩阵,它们相乘之后得到的那个矩阵的值,与评分矩阵R中有值的位置中的值尽可能接近。这样一来,分解出来的两个矩阵相乘就尽可能还原了评分矩阵R,因为有值的地方,值都相差得尽可能地小,那么missing的值通过这样的方式计算得到,比较符合趋势。
协同过滤中主要存在如下两个问题:稀疏性与冷启动问题。已有的方案通常会通过引入多个不同的数据源或者辅助信息(Side information)来解决这些问题,用户的Side information可以是用户的基本个人信息、用户画像信息等,而Item的Side information可以是物品的content信息等。例如文献[1]提出了一个Collective Matrix Factorization(CMF)模型,如图4所示。
图4. Collective Matrix Factorization模型
CMF模型通过分别分解评分矩阵R,User的side information矩阵,Item,
的side information矩阵,其中User或者Item出现在多个矩阵中,其所分解的隐向量都是一致的。
三、深度学习在推荐系统中的应用
Model-based方法的目的就是学习到User的隐向量矩阵U与Item的隐向量矩阵V。我们可以通过深度学习来学习这些抽象表示的隐向量。
Autoencoder(AE)是一个无监督学习模型,它利用反向传播算法,让模型的输出等于输入。文献[2]利用AE来预测用户对物品missing的评分值,该模型的输入为评分矩阵R中的一行(User-based)或者一列(Item-based),其目标函数通过计算输入与输出的损失来优化模型,而R中missing的评分值通过模型的输出来预测,进而为用户做推荐,其模型如图5所示。
图5. Item-based AutoRec模型
Denoising Autoencoder(DAE)是在AE的基础之上,对输入的训练数据加入噪声。所以DAE必须学习去除这些噪声而获得真正的没有被噪声污染过的输入数据。因此,这就迫使编码器去学习输入数据的更加鲁棒的表达,通常DAE的泛化能力比一般的AE强。Stacked Denoising Autoencoder(SDAE)是一个多层的AE组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入,如图6所示。
图6. SDAE
文献[3]在SDAE的基础之上,提出了Bayesian SDAE模型,并利用该模型来学习Item的隐向量,其输入为Item的Side information。该模型假设SDAE中的参数满足高斯分布,同时假设User的隐向量也满足高斯分布,进而利用概率矩阵分解来拟合原始评分矩阵。该模型通过最大后验估计(MAP)得到其要优化的目标函数,进而利用梯度下降学习模型参数,从而得到User与Item对应的隐向量矩阵。其图模型如图7所示。
图7. Bayesian SDAE for Recommendation Sysytem
在已有工作的基础之上,携程基础BI算法团队通过改进现有的深度模型,提出了一种新的混合协同过滤模型,并将其成果投稿与国际人工智能顶级会议AAAI 2017并被接受。该成果通过利用User和Item的评分矩阵R以及对应的Side information来学习User和Item的隐向量矩阵U与V,进而预测出评分矩阵R中missing的值,并为用户做物品推荐。
图8. Additional Stacked Denoising Autoencoder(aSDAE)
该成果中提出了一种Additional Stacked Denoising Autoencoder(aSDAE)的深度模型用来学习User和Item的隐向量,该模型的输入为User或者Item的评分值列表,每个隐层都会接受其对应的Side information信息的输入(该模型灵感来自于NLP中的Seq-2-Seq模型,每层都会接受一个输入,我们的模型中每层接受的输入都是一样的,因此最终的输出也尽可能的与输入相等),其模型图见图8。
结合aSDAE与矩阵分解模型,我们提出了一种混合协同过滤模型,见图9所示。该模型通过两个aSDAE学习User与Item的隐向量,通过两个学习到隐向量的内积去拟合原始评分矩阵R中存在的值,其目标函数由矩阵分解以及两个aSDAE的损失函数组成,可通过stochastic gradient descent(SGD)学习出U与V,详情大家可以阅读我们的paper《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》[4]。
图9. 混合协同过滤模型
我们利用RMSE以及RECALL两个指标评估了我们模型的效果性能,并且在多个数据集上和已有的方案做了对比实验。实验效果图如图10所示,实验具体详情可参看我们的paper。
图10. 实验效果对比
在今年的推荐系统顶级会议RecSys上,Google利用DNN来做YouTube的视频推荐[5],其模型图如图11所示。通过对用户观看的视频,搜索的关键字做embedding,然后在串联上用户的side information等信息,作为DNN的输入,利用一个多层的DNN学习出用户的隐向量,然后在其上面加上一层softmax学习出Item的隐向量,进而即可为用户做Top-N的推荐。
图11. YouTube推荐模型图
此外,文献[6]通过卷积神经网络(CNN)提出了一种卷积矩阵分解,来做文档的推荐,该模型结合了概率矩阵分解(PMF)与CNN模型,图见图12所示。该模型利用CNN来学习Item的隐向量,其对文档的每个词先做embedding,然后拼接所有词组成一个矩阵embedding矩阵,一篇文档即可用一个二维矩阵表示,其中矩阵的行即为文档中词的个数,列即为embedding词向量的长度,然后在该矩阵上做卷积、池化以及映射等,即可得到item的隐向量。User的隐向量和PMF中一样,假设其满足高斯分布,其目标函数由矩阵分解以及CNN的损失函数组成。
图12. 卷积矩阵分解模型
四、总结
本文介绍了一些深度学习在推荐领域的应用,我们发现一些常见的深度模型(DNN, AE, CNN等)都可以应用于推荐系统中,但是针对不同领域的推荐,我们需要更多的高效的模型。随着深度学习技术的发展,我们相信深度学习将会成为推荐系统领域中一项非常重要的技术手段。
引用:
[1] Ajit P. Singh, Geoffrey J. Gordon. “Relational Learning via Collective Matrix Factorization”, KDD 2008
[2] Suvash Sedhain, Aditya Krishna Menon, Scott Sanner, Lexing Xie. “AutoRec: Autoencoders Meet Collaborative Filtering”, WWW 2015
[3] Hao Wang,Naiyan Wang, Dit-Yan Yeung. “Collaborative Deep Learning for Recommender Systems”, KDD 2015
[4] Xin Dong, Lei Yu, ZhonghuoWu, Yuxia Sun, Lingfeng Yuan, Fangxi Zhang. “A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems”, AAAI 2017
[5] Paul Covington, Jay Adams, Emre Sargin. “Deep Neural Networks for YouTube Recommendations”, RecSys 2016
[6] Donghyun Kim, Chanyoung Park, Jinoh Oh, Sungyoung Lee, Hwanjo Yu. “Convolutional Matrix Factorization for Document Context-Aware Recommendation”, RecSys 2016来源:携程技术中心
链接:http://techshow.ctrip.com/archives/1823.html
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2017-03-05 09:32:00
人工智能 意味着什么?
人工智能 是指计算机科学的范围,人工智能是指人类,即在设计的计算机程序或软件程序的帮助下,计算机(机器)模仿人类设计,绘制和解决复杂问题的方式。这些系统具有学习自己的能力。
它们不等同于设计用于处理交易和做出明确编程的决策的系统。
人工智能可以在几分钟内帮助组织挖掘和分析数据,并进一步帮助他们从中提取有价值和有用的见解。
为什么要进行人工智能处理?
尽管采用人工智能有很多好处,但最重要的好处是它具有做出真实,自动决策的能力。
为了成为战术上的和有计划的区分者,人工智能已经从增生转向自动化。通过利用效率和机会来做出决策并为公司提供有用的见解的能力使其能够驱动方法。将 AI 与计算机程序集成后,所需的人力更少;这进一步帮助了大公司从数据驱动的世界迈向洞察力驱动的世界,并做出了现实,及时的决策。
人工智能进一步有助于做出更好的业务决策,尤其是在复杂的业务问题中。
当今行业希望通过快速创新更好地为客户服务。通过集成AI可以提高客户满意度,因为它有助于抓住新的市场收入机会,例如产品扩展或市场扩展。这样,人工智能会影响决策。它还通过分析客户的需求和期望,然后建议组织根据客户需求来制造产品,从而提高客户满意度,从而影响业务和客户关系。
人工智能的范围被称为AI的三种类型
辅助,增强和自动化。
Assisted Intelligence使重复的基本任务自动化,以便可以快速,经济地完成这些任务。
增强智能帮助个人根据每种情况的情况做出有效的决策。例如,当银行贷款官员向某人提供贷款以暗示其先前的破产时,可能会被警告,这意味着将其信用风险告知该官员。这可以帮助官员决定个人是否能够偿还附带利息的贷款。
这样,可以基于与AI集成的系统提供的信息来做出更有效,更精确的决策。
自动化智能是指不在整个设计结构中的人员所在的系统。例如,无人驾驶汽车就是自动化智能的最好例子。
这些组织认为,将三种类型的AI合并在一起有助于提高其效率和效力,提高客户满意度并提高创新能力。
人工智能的繁荣是显而易见的,因为人工智能是必须的,每个组织都必须采用人工智能,以便在其他方面拥有优势。
作者:AI中国
来源: 今日头条
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-11-14 22:55:00
移动互联网 时代,移动客户端也许已经成为了我们最先获取新闻爆料的渠道,也是新闻传播最快的地方。传统媒体与互联网媒体经过多年的融合后,正蓄力爆发。新闻资讯类 app 是新闻内容分发的重要渠道。内容创作和个性算法分发将成为带动新闻资讯类 app 前进的左膀右臂。国内领先移动 大数据 服务商极光大数据发布《新媒体时代靠个性还是靠内容胜出?—— 极光大数据新闻类 app 报告》,详细解读新闻资讯类 app 行业的发展现状及各大主流 app 的渗透率、活跃率、新增用户等情况。
报告亮点: 新媒体时代,今日头条与腾讯新闻双雄争霸,渗透率分别为20.7%和19.8% 每五人中就有一位今日头条用户,2月份日活跃用户峰值突破一亿大关 月活跃用户数方面,今日头条同样凯歌高奏,与走势平稳的腾讯新闻同为第一军团,远高于其他对手 腾讯新闻用户忠诚度最高,7日留存率在17年2月份达到76.3%,今日头条以67.5%排名第二 ZAKER新闻和凤凰新闻最受都市人群青睐,今日头条极速版和搜狐新闻则最受三四线城市居民喜爱
新闻资讯行业发展概况
1. 传统媒体和互联网媒体全面融合 2014 年,《关于推动传统媒体和新兴媒体融合发展的指导意见》加速了传统媒体和互联网媒体的融合进程。在新媒体时代,“两微一端”已成为媒体的标配
2、网民对新闻资讯需求的新风向 网民有更丰富的渠道选择获取新闻并热衷于对新闻发表评论。各领域达人纷纷发挥自己所长提供和分享资讯。网民对新闻资讯内容有多样化的要求,长尾资讯被挖掘 去中心化、全民评论、内容多样化及自媒体成为网民的新需求
3、新媒体亟待优化的地方 新闻同质化是阻碍新媒体发展的因素 标题党及假消息让用户真假难辨 粗俗化、浅薄化的新闻内容同样是行业毒瘤
新闻资讯类 app 的行业图谱
新闻资讯类 app 大致分为三大类
综合新闻资讯、垂直新闻资讯和杂志报纸类构成了新闻资讯类 app 的行业图谱 综合新闻资讯类 app 又分为以腾讯新闻、网易新闻等为代表的商业门户网站;以今日头条、一点资讯为代表的新闻聚合平台以及以人民日报、新华社和界面等为代表的综合新闻媒体 垂直新闻咨询类 app 是指专注于垂直领域的新闻资讯类 app,如军事头条、虎扑体育等 而杂志报纸类 app 则以VIVA畅读、电子画报为代表
新闻资讯类 app 的发展趋势
1、算法分发
给用户推送最感兴趣的内容 如何通过用户的阅读习惯分析用户的兴趣爱好,继而向推送最感兴趣的内容成为了新闻资讯类 app 最注重的技术,算法分发将在很长一段时间内成为该类 app 的重点研究的技术
2、内容创作的扶持 今日头条、腾讯新闻、百度新闻等主流 app 纷纷推出各种补贴计划,鼓励内容创作
3、 人工智能 写稿
在追求时效性的热点新闻等领域,人工智能写稿优势越来越明显 里约奥运会期间,今日头条的 AI 小记者“张小明”通过对接奥组委的数据库信息,实时撰写新闻稿件,以跟电视直播几乎同时的速度发布稿件。 2015 年 9 月 10 日,腾讯财经用“Dreamwriter” 在政府发布 CPI 资料后短短几分钟内就发出了一则新闻,题为 8 月《CPI 同比上涨 2.0% 创 12 个月新高》 新华社在84周年之际推出“快笔小新” 3 秒瞬间成稿。快笔小新供职于新华社体育部、经济信息部和中国证券报,可以写体育赛事中英文稿件和财经信息稿件。
4、多媒体化
短视频、直播、VR/AR 等多媒体形式的加入是新闻资讯类 app 的新趋势 微博体育在短视频内容方面与 NBA 达成了为期 4 年的合作;今日头条分别与中超联赛和芒果 TV 达成短视频内容合作 腾讯新闻、网易新闻等新闻资讯类 app 纷纷加入直播功能 2017 年两会期间,新浪新闻、人民日报、新华社、百度新闻等多新闻媒体和网站采用了 VR 技术进行报道
新闻资讯类 app 的运营情况
1、新闻资讯类 app 渗透率 新闻资讯类 app 中,已经形成今日头条和腾讯新闻两个头部 app。今日头条以 20.7% 的渗透率位列第一,占比高于第三名天天快报接近 3 倍。腾讯新闻渗透率达 19.8%
2、新闻资讯类app日活跃用户数 今日头条从 2016 年下半年 DAU 不断攀升并超越腾讯新闻。在今年2月份峰值突破 1 个亿
3、新闻资讯类 app 月活跃用户数 今日头条从 2016 年下半年 MAU 呈上升趋势,腾讯新闻表现较为平稳。两者远远高于其他新闻资讯类 app
4、新闻资讯类 app 日新增用户数 今日头条日平均新增用户数保持在百万级别,2017 年 2 月份达到 140 万左右。腾讯新闻在最近半年日平均新增用户数有所下滑
5、新闻资讯类app 7天留存率 腾讯新闻 7 天留存率呈波动上升趋势,今年 2 月份达 76.3%,位列首位。而今日头条以 67.5% 排名第二。最近半年内一点资讯 7 天留存率持续攀升,位列第三
6、新闻资讯类 app 城市等级分布 ZAKER 新闻和凤凰新闻的一二线用户占比较高,均接近 50%,更多用户为都市人群;今日头条极速版和搜狐新闻三四线城市占比较高,均超过 70%,用户下沉明显
报告说明
1.数据来源
极光大数据,源于极光云服务平台的行业数据采集及极光 i APP 平台针对各类移动应用的长期监测,并结合大样本算法开展的 数据挖掘 和统计分析
2.数据说明
新闻资讯类 app 包括今日头条、腾讯新闻、一点资讯、天天快报、网易新闻等多款app
3.数据周期
报告整体时间段:2016年6月~2017年02月
4.报告其他说明
极光大数据后续将利用自身的大数据能力,对各领域进行更详尽的分析解读和商业洞察,敬请期待
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2017-03-31 09:33:00
摘要:以下为清华大学统计学研究中心邓柯分享的主题为“基于统计学模型的无指导中文 文本分析 ”的演讲。
邓柯: 今天下午非常荣幸参加这样的活动,也非常感谢活动的主办方,清华大学数据科学研究院的邀请。今天给大家分享一个我们最近做的工作。
刚才主持人介绍了我的教育背景。我本科和博士都是在北大念的,拿的统计学博士。北大毕业之后到哈佛大学统计系,做了几年博士后,做了一些研究工作。在2013年加入到为清华大学邱成同数学科学中心做助理教授,去年我们清华大学刚刚成立了统计学研究中心,统筹统计学科的建设和发展,我就从数学中心出来到了统计中心,现在也是做的助理教授,同时帮助(刘军)主任建设中心,这是我自己简单的情况。
我们“统计中心”刚刚成立,哈佛大学统计系的刘军教授和哈佛大学生物统计系的林希虹教授是我们中心主任和共同主任。两位教授都是华人统计学界非常知名的统计学家,都在美国拿到国际统计学最高奖,在国际领域上统计学领域是非常有影响的学者。
我们中心学术委员会有七位教授,也都是国际上各个大学非常知名华人教授,大家非常无私的贡献出很多时间来帮助我们建设“统计学研究中心”。我们的“顾问委员会”包含很多美国的院士、澳洲的院士、台湾的院士,都是国内、国际统计学界非常资深的老师,共同指导中心的发展。
我们目前有四位全职老师,都是从美国留学回来。这些年举办了一系列的活动,去年也和我们数据科学研究院举行过一个Rong系列的讲座。在 大数据 时代统计能够发生什么样的作用?统计学怎么能够把它用好?我觉得这个也是非常重要的一个问题。有一种声音认为:到了大数据时代,统计学变得不重要了。作为统计学家,我们认为对这个观点很错误的,也是很危险的。我们认为,在大数据时代,统计学的作用不仅没有被削弱,反而是越来越重要了。
过去,国内统计学界对统计学的教学、科研太偏重于理论,对应用统计,对重要的实际问题,大家的注度普遍不够。但是统计学的应用还是非常重要和广泛。我们统计中心去年成立的时候,刘军主任接受了人民日报的专访,谈到在大数据时代怎么看待统计学,怎么用统计学解决大数据时代的问题。当时提出一个观点:大数据是原油不是汽油。大数据里饱含宝贵的数据资源是一种财富,但这种资源更像是“原油”,离直接能用还需要一个数据整理和 数据分析 的过程。这个过程中,“数据科学”是一股决定性的力量,统计在里面是很重要的一部分,我们应该发挥更大的作用。在科研实践当中,我们也应该这么做。最近,我们从统计学的角度做了一中文文本分析的工作,取得了好的效果,在实际应用上有积极的意义。
首先我介绍一下问题。我们知道,在我们现在大数据时代,我们获取各种各样的文本是越来越容易,对文本进行分析产生很多商业价值。包括在金融方面,刚才嘉宾讲过通过各种文本的分析了解客户需求,可以采取不同的策略,就会带来很多的效果。还有,我们可以到“大众点评”或者“淘宝”抓到的客户评论。抓到的这种文本写作方式非常得自由,这是网络文本的显著特征。这样的文本怎么去分析?其实还是有些挑战,我们从网上看到的文本和正规新闻文本很不一样,淘宝上小二的嘻笑怒骂跟新华社的社论也是完全不一样的,这个文本有很多新特征,很多新词汇,技术性名词包括很多商品、商标一些俗语,网络词汇层出不穷,写作多样化,给我们分析带来很多挑战。
我们讲医疗大数据,医疗大数据中非常重要的组成部分是医院里的电子病历。这是一个病例的例子,它是非结构化的自由文本,不同类别的名词,我们用不同的颜色标了出来。拿到这种文本以后,我们还是蛮头疼,这个文本是非结构化,对它进行分析结构处理不是很容易。我们想通过分析把非结构化的文本变成结构化的文本,这个过程当中还是需要艰苦的努力,并不是非常容易。医生写出医疗文本,专业性很强,医生叙述的语言、方式和我们新闻、人民日报有非常大的差别,这样的文本怎么挖掘、分析也是有它的一些难度的地方。现在,很多公司都在关注做这件事情,但是在技术上还是有难度的。

最近我们和哈佛大学东亚文明系的包弼德(Peter K. Bol)教授合作研究中国古代文献。包教授是国际上著名的汉学研究专家,他十多年前开始领导这个项目——“中国历代人物传记资料库”。尽可能收集中国历史上的文献,正史、地方志,家谱,卖房子的房契、地契都在里头,他要干什么事?想给历史人物建成一个“社会网络”。我们有脸书有社会网络,谁和谁是朋友、同学。在历史人物上也有这样的东西,谁是谁的朋友,同学,谁有亲戚做官。但古人已经去世多年,不可能从坟墓跑过来,在脸书上开个账号把自己的网络建起来。但是他们的信息是存在,就在历史文献里面。我们把历史文献整合起来,统筹处理这些数据,这些文本,就有可能解决这个问题。但这个文本又是非常特殊的文本,是古文,甚至没有标点符号。正史、地方志、家谱、墓志铭形式非常复杂,涵盖时间范围跨越一千多年,写作风格、用词句句法语法变化很大,这些文本跟《人民日报》也是很不一样的。
我们给出的这三个例子,网络文本和医疗文本和古文都是独特的文本,存在几个问题。
第一,我们不能假定我们知道所有的词库,词库开放。
第二,我们大家做任何中文分析,最基础是要切词。
第三,同时在我们很多的具体问题,对所谓的命名识别,医学里面、历史文献里面有非常复杂的专有名词,名词能不能准确识别,对我们后期用得好这是很关键的。这是我们要解决的三个问题。
我们刚才举了三个例子,不能够假定,三种数据都和现在的人民日报的文本是不同的,我们谈到中文语言分析的时候,该怎么做?我们需要训练语料库,北大有一个非常著名的《人民日报》语料库,过去十年人民日报全都搞下来,找专家把它切好词,做好词语标记,这样的话我们可以有一个人民日报的语料库,当然微软也有它的语料库,语料库的基本逻辑在生成的时候都以一种新闻文本作为基础,加上人工的干预形成的一个系统。我们的目标文本和训练文本差别非常大,用那个训练文本去做,效果是堪忧的。
同时我们已知的方法,假定这个词库还是知道比较全,稍微有点不清楚。同时倾向于用语法规则或者用rules帮助词法分析。我们可以看到举出三个问题,这三条好像基本上都不太对。第一,我们不能够假定我们有一个很好的训练文本,同时那个问题里面新词和未知技术名词很多,我们很难假定有一个完整的词库,同时在那些里面语法结构跟我们想象当中新闻文本的语法结构是很不一样的,医生写的语法根本就不是语法。我们传统的一些方法在这里面也都有它的一些局限性。

还有非常重要的领域,Topic Models,它的特性不关心文本当中细的信息,很关注很粗糙的信息。这个文本说数学、说物理还是说生物这个它可以搞定,我们想关心一些很细的信息,它并不能帮助我们。而刚才所举的例子,关注细的信息,处理医疗文本,知道病历里面说过病人到底得过什么样的病,吃过什么药。对于这个问题而言,Topic Models就太粗糙了。
我们在处理之前做了一些试验,斯坦福大学有一个著名的切词工具,哈工大也发展过一套算法来测中文分析,做得非常好。我们当时做过测试,随便网上抓了一条新闻,用斯坦福大学的软件分析,分得挺对,什么州,州党都分对了,但挺遗憾,马英九分错了。总体来讲对于抓取新闻文本还挺好。
我们把古文拿出来试一试,《宋史王安石传》,这里面不同的颜色标志不同的词,也有很多是错的,这错了也有道理,古文古代官名,人民日报从来没出现过,模型在训练的时候不知道有这样的词,显然不太容易分对,产生了很多错误。而且,技术名词的错误对我们应用非常致命,我们主要关注这些东西,切错了关系很大。
我们遇到了很多类似的实际问题,也一直在想怎么解决这个问题,我们觉得通过统计学的模型可能解决这个事。当然这个模型本身并不是我们提出来,最早一九五几年提出来的。这个模型在说什么事?我假设我有一个词典有6个词,两个复合词,四个单个词,每个词使用的频率,怎么从模型里面生成这个句子?从模型抓取一个词,抓取王安石这个词的概率是10%,同样一句话抓5次也可以抓出来,5次抓概率就不一样。例如:我有一个猴子坐盒子旁边,盒子里面有很多词有大有小,大小使用代表使用的频率,猴子每次从盒子里面抓一个词,就可以生成非常简单的统计学模型生成文本。这个模型显然太简单了,任何一个作家都不会是这样写作,但是这也就是统计学模型魅力所在,模型看上去很简单粗糙肯定不是真的,但是在这样非常简单模型下可以做很多的事情,可以做很多分析推断帮助你解决很多问题,毛主席曾经说过矛盾是无处不在的,我们抓住主要矛盾就很行了,我们希望统计学模型帮助我们主要矛盾。
首先能做什么?举个例子,我们假定有了这个词典,然后我们想来看看王安石为参政知事,怎么切分?在这样一个简单模型下有两种切分方式,但生成概率是不一样。有92%的概率用这个,如果用统计四大原则,我们认为切词还不错,如果知道了词典内容和那个词的词频这样的简单模型帮助你做切词,为什么他们做得好?尽可能用较小词分,少切一刀就占便宜。如果这个词太长,词本身每一个元素的概率也会下降,不能切得太粗糙,这个模型就能做得很好。

往往我们根本不知道词频是什么?一旦这个词频不知道,概率是多少我就不会算概率不会算,相应权重不会算,不会算,这个事就不知道怎么做,就不知道该怎么分。这又变成一个问题,如果我们有了很多的数据,我们能不能想办法估计一个词频,这是有统计推论,假定现在有一个词典,这些词我是知道,但是词频我不知道,但你想想我有很多文本数据,反过来能不能推断这个词频?这个东西,可以转化成数据模型,我们过去词频,句子该怎么切,如果你知道,词频是非常稳定的,王安石出现过一次,我填进去算就能算出来,但是难点在于我只这句话,不知道句子不怎么分?边界我们认为是小数据,我们用EM算法进行有效估计,时间关系,细节就不跟大家说了。
一开始不知道词频是多少,怎么办?我随机给你初始化的常数,我可以算每个概率,可以算相对权重。有了相对权重以后,我可以反过来update而这个估计,王安石在里面,在这个里面出现,王安石的概率是0.926,参政知事,在这里出现过,这儿也出现,有两个位置加起来等于1,王安石这三个单字仅在这个排序里出现,系数频率只有4.7%。新的分词和老的分词一样,你可以把这个过程重复做好多遍。
这里解决一个问题,回到这个问题里面,我们知道词典,但词频不知道,你给我一个数据,可以词频可以有效估计出来。这个框架20年前有人做过。

我们有一个很简单的想法,实际问题当中有个很大的问题,我们原始的词典也不知道,我现在只有文本不知道词典,词典也不知道,这个事就不好说了。我们从小词典生成大词典,单词出发,我把两个字的词加一起,三个字的词加一起,这个方法在2000年前后就有人做这个工作。这样做计算上还是很慢,中文字母表比较大,有很多计算问题并不好处理,这个方法就停滞了。我们提出一个很大胆的想法,不用从底下往上,我先把看上去是词的东西找到,生成超级大大词典,然后在超级大的大词典做了算法,一点一点搞法,这样就能解决,这是我一个想法,这个想法非常简单,这个简单方法效果非常好。
有了文本,怎么生成初始词典,长度小于L,L给到8,给到10,给到15,我来数一数,这个字块在文本出现的频数,一般我们取得到2和3,这样推动枚举全拿出来形成初始的词典,有这样一个短文本,L是为4L为2,按照这样的准则把所有的词库条变出来,我们把单词作为词放进去,我们就有这样的初始词典,每个词都有频数,EM的迭代过程就能完成,就能够生成初始的词。加上一些模型选择技术,大量的词汇不显著就被模型排除了,我们最后得到词典规模大概是原始词典规模的1%到5%,90%的词是被干掉,这是我们整体算法流程。
这是我们目标文本,这是 数据挖掘 中的算法,很快把所有的字符字块选出来,你装进来,得到超级大的初始词典,如果有训练可以用,用EM算法估计词频。我们加了模型控制,控制完得到非常精简的词典,进行排序,重要的词排在前面,把原始文本再做分析。
我们看看做法的效果,效果非常简单算法还是非常实用非常好。为了验证这个概念,我们找了一个英文小说,《白鲸记》,我把英文小说拿过来以后,标点符号全部去掉,空格去掉,英文小说变成字符串,20万个英文单词,有了这个以后就把原始数据输入到方法里面学习,这个是我们算法就是输出的结果,这里面英文单词我不知道,这个算法自动把词学出来,看一看,这个做得还是不错的,有红线的地方,就不是单词的,整体来讲在英文里做的不错。我们也做了精细的分析,我们知道有哪一些单词,我们做了一些比较,如果从找词角度,真实小说有1.7万词,出现两次以上的词是1700个,出现一次词从统计学很难发现,但是看我们的结果,6700个词,大概6300词非常准确抓取到,我们找到3000多个词组,新词发现做得非常好。从切词角度,大概有75%到80%,大家觉得87%还可以。大家来看看少了20%是在哪儿?我们少了20%在这个地方,原来moby和 dick中间应该有一个空格,我们没有把这个空格放进去。这虽然是个错误,但是从统计分析的角度是有道理的:这两个词经常在小说里出现,虽然不是一个单词,但是从统计分词的角度,它是一个词,我们缺了20%都在这个地方。如果把这个地方不算,做一个调整,我们切词大概在95%左右,这是非常高的标准。

我们后来试一些别的例子,拿经典的《红楼梦》,算得非常快,《红楼梦》那本书不到一分钟,十几秒整个算法算完了,得到几千上万红楼梦的人名、词都出来了,我们是找出来前一百个词,大家看看王夫人、林黛玉、贾宝玉、凤姐等等都在这个地方,这个词还选得不错,阿弥陀佛。
我们发现所有的人名会在一边,人名结构算法我们能有效捕捉到,这是蛮有意思的现象。
我们还做了精细的比较,从识别人名,《红楼梦》当中有将近780个人名,其中371个人名出现两次以上,我们分析的结果,370个人名成功抓取345个,这是斯坦福的算法,这是哈工大的方法,这两个算法在人名识别上很低,只识别了312个,miss了将近60个,这个方法更差,miss了90多个,我们只有25。我们用的信息很少,但是在识别人名角度比这些方法都做得好。

《宋史》上做了例子,《宋史》将近600万汉字,10分钟左右算出来,我们学到8万有意义的词和词组,排到前一百个,天干地支都在里面,重要的宋代官职这样一些有意义的词汇都可以很准确抓取到。我们也可以手工做分类,这是人名这是官名这是地址这是官号,这是传统名词,皇帝的名词,大臣的名词还是准确抓取到了,所以认为这个还是一个蛮有效的算法。我们用同样的思路,把它放在一个空间上,可以把不同的颜色标准不同的词。

红的里面是岳飞,我发现岳飞是在这儿,离他最近的两个人是韩世忠和张俊,是跟他一块打仗的宋代将军。而黄色是什么?地址,你一看这些地址都是将军们曾经打仗的地方,通过我们方法识别加上标准的技巧,很快速捕捉到核心的信息。
我们也可以通过方法学习人和人,宋代的语学的代表性人物,在《宋史》里面他们名字经常在不同的段落里面共同出现,我们用一个算法来做这件事情,自动提取。
这是我们做的关于《宋史》的例子,对《宋史》做切分,这是斯坦福切的结果,这些名词切得不对,这是我们的方法,切的结果,专有名词切大部分切得还是非常准确,表现还是相当不错。

后来我在新浪微博上做了点事情,新浪微博一百人弄下来,我们都可以算,前词是什么?左一刀右一刀这种词是非常难识别,这种词一般常规算法识别出来是非常困难,但是这些词在我们的算法里面信号非常强,很容易把它都抓出来。这是可以做的事情,这是《明朝那些事》做分析,基本上专有名词、人名、官名都可以抓得挺明确,努尔哈赤,还有日本人的名字,丰臣秀吉,我们觉得还是不错的。

我们有了切词以后,我们看每一个人写作的特征就可以看到,马鼎盛是说军事,叶檀、潘石屹跟他有关的一些词,信号还是很明确的,我们看每一个人写作的特征就能看到,李承鹏说体育说足球,马鼎盛说军事,叶檀说金融经济,潘石屹说房地产和金融。徐静蕾是说情感话题或说的别的话题比较丰富,同样把这些关键词用不同的颜色标记在这张图,我们可以展现这样的一些结构。


最后我们总结一下,我们提出的这个方法有这样一些优点。它的统计学基础还是非常清晰,整个方法建立在严格的统计分析和模型选择基础上。它非常快,几百万字的分析几分钟就做完了;最多做过4亿个汉字,两小时所有分析结束。它还可以发现一些很低频的词汇,例如很多仅出现两次三次的成语都可以准确识别。它还可以把重要的词排在前面。我们已经有的一些知识也可以非常容易地加到模型当中。我们的这项研究成果已经被《美国科学院院刊》接收,详细内容供大家参考。我就说到这儿,谢谢大家! 来源:199it
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-04-26 16:13:00
问题
读取含有数据表格的文本文件。
解决方案
用read.table函数,该函数会返回一个数据框(data frame):
代码
> dfrm <-read.table(“filename.txt”)
讨论
表格数据文件是很常见的。这是一种格式简单的文本文件:
每一行是一条记录
在每条记录中,各个字段之间都用一个字符分给,例如空格、制表符、逗号、分号等
每条记录的字段的数量是一样的
这种格式比固定宽度的格式更加灵活,每个字段的位置不再需要对齐。下面就是一个名为statisticians.txt的表格文件,是用空格符分割字段的:
代码
Fisher R.A. 1890 1962
Pearson Karl 1857 1936
Cox Gertrude 1900 1978
read.table函数就是用来读取这种文件的。缺省情况下,该函数认为数据字段是由空白(空格或制表符)分割的:
代码
> dfrm <-read.table(“statisticians.txt”)
> print(dfrm)
V1 V2 V3 V4
1 Fisher R.A. 1890 1962
2 Pearson Karl 1857 1936
如果不是用空白分割符,可以用用sep参数指定分隔符。例如,如果字段分隔符是冒号(:),就可以这样读取:
代码
> dfrm <-read.table(“statisticians.txt”, sep=”:”)
从输出中看不出什么问题,但实际上read.table会把姓和名视作factor,而不是字符串。我们可以查看一下这两列的class:
代码
> class(dfrm$V1)
[1] “factor”
为了不让read.table将字符串视为factor,把stringAsFactor参数设为FALSE:
代码
> dfrm <-read.table(“statisticians.txt”, stringsAsFactor=FALSE)
> class(dfrm$V1)
[1] “character”
现在第一列的类型就是字符了,而不是factor。
如果文件中包含“NA”,read.table函数会认为这个值是缺失的,并将其转化成NA。你自己的数据文件也可以用不同的字符串来表示缺失值,用na.strings参数来指定。例如在SAS传统中,缺失值就是用.表示的。我们可以这样来读取这样的数据:
代码
> dfrm <-read.table(“filename.txt”, na.strings=”.”)
我非常喜欢自描述的数据,就是说光从数据文件本身就就能看出它所包含的是什么内容。(用计算机学家的话来说就是,文件包含了它自己的元数据。)read.table有两个特性是支持这个功能的。第一个,数据文件的第一行可以是整个数据的头部,给每一列数据指定一个名字。这一行指定了每一列数据的名称,所使用的分隔符跟数据是一样的。下面是就是带头部信息的数据文件:
代码
lastname firstname born died
Fisher R.A. 1890 1962
Pearson Karl 1857 1936
现在在读取该文件时就要告诉read.table函数这个文件是包含头部的,该函数在构建数据框时就会把这一行数据当作每一列的名称:
代码
> dfrm <-read.table(“statisticians.txt”, header=TRUE, stringsAsFactor=FALSE)
> print(dfrm)
lastname firstname born died
1 Fisher R.A. 1890 1962
2 Pearson Karl 1857 1936
read.table的第二个功能是注释行。所有以井号(#)开头的行都会被忽略,可以把注释放在#符号后:
代码
#本文件中是一些著名统计学家的信息
# Last edited on 1994-06-18
lastname firstname born died
Fisher R.A. 1890 1962
Pearson Karl 1857 1936
Cox Gertrude 1900 1978
Yates Frank 1902 1994
Smith Kirstine 1878 1939
read.table函数有很多参数来控制它解读输入文件的方法。详见该函数的帮助页面。
扩展阅读
如果数据是逗号分割的,请参阅第6招:读取CSV文件。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2015-12-30 13:38:00
近年来, 深度学习 领域涌现了大量优秀的成果。本文围绕一种新的深度学习方法,即深度残差收缩网络,展开详细的解读,希望对大家有所帮助。
顾名思义,深度残差收缩网络是在“ 残差网络 ”基础上的一种改进算法,是由“残差网络”和“收缩”两部分所组成的。其中,残差网络在2016年斩获了ImageNet图像识别竞赛的冠军,目前已经成为了深度学习领域的基础网络;收缩就是软阈值化,是许多信号降噪方法的核心步骤;在深度残差收缩网络中,软阈值化所需要的阈值,在本质上是借助注意力机制设置的。
在本文中,我们首先对残差网络、软阈值化和注意力机制的基础知识进行了简要的回顾,然后对深度残差收缩网络的动机、算法和应用展开解读。
1. 基础回顾
1.1 残差网络
从本质上讲,残差网络(又称深度残差网络、深度残差学习)是一种卷积 神经网络 。相较于普通的卷积神经网络,残差网络采用了跨层恒等连接,以减轻卷积神经网络的训练难度。残差网络的一种基本模块如图1所示。

图1 残差网络的一种基本模块
1.2 软阈值化
软阈值化是许多信号降噪方法的核心步骤。它的用处是将绝对值低于某个阈值的特征置为零,将其他的特征也朝着零进行调整,也就是收缩。在这里,阈值是一个需要预先设置的参数,其取值大小对于降噪的结果有着直接的影响。软阈值化的输入与输出之间的关系如图2所示。

图2 软阈值化
从图2可以看出,软阈值化是一种非线性变换,有着与ReLU激活函数非常相似的性质:梯度要么是0,要么是1。因此,软阈值化也能够作为神经网络的激活函数。事实上,一些神经网络已经将软阈值化作为激活函数进行了使用。
1.3 注意力机制
注意力机制就是将注意力集中于局部关键信息的机制,可以分为两步:第一,通过扫描全局信息,发现局部有用信息;第二,增强有用信息并抑制冗余信息。
Squeeze-and-Excitation Network是一种非常经典的注意力机制下的深度学习方法。它可以通过一个小型的子网络,自动学习得到一组权重,对特征图的各个通道进行加权。其含义在于,某些特征通道是比较重要的,而另一些特征通道是信息冗余的;那么,我们就可以通过这种方式增强有用特征通道、削弱冗余特征通道。Squeeze-and-Excitation Network的一种基本模块如下图所示。

图3 Squeeze-and-Excitation Network的一种基本模块
值得指出的是,通过这种方式,每个样本都可以有自己独特的一组权重,可以根据样本自身的特点,进行独特的特征通道加权调整。例如,样本A的第一特征通道是重要的,第二特征通道是不重要的;而样本B的第一特征通道是不重要的,第二特征通道是重要的;通过这种方式,样本A可以有自己的一组权重,以加强第一特征通道,削弱第二特征通道;同样地,样本B可以有自己的一组权重,以削弱第一特征通道,加强第二特征通道。
2. 深度残差收缩网络理论
2.1 动机
首先,现实世界中的数据,或多或少都含有一些冗余信息。那么我们就可以尝试将软阈值化嵌入残差网络中,以进行冗余信息的消除。
其次,各个样本中冗余信息含量经常是不同的。那么我们就可以借助注意力机制,根据各个样本的情况,自适应地给各个样本设置不同的阈值。
2.2 算法
与残差网络和Squeeze-and-Excitation Network相似,深度残差收缩网络也是由许多基本模块堆叠而成的。每个基本模块都有一个子网络,用于自动学习得到一组阈值,用于特征图的软阈值化。值得指出的是,通过这种方式,每个样本都有着自己独特的一组阈值。深度残差收缩网络的一种基本模块如下图所示。

图4 深度残差收缩网络的一种基本模块
深度残差收缩网络的整体结构如下图所示,是由输入层、许多基本模块以及最后的全连接输出层等组成的。

图5 深度残差收缩网络的整体结构
2.3 应用
在论文中,深度残差收缩网络是应用于基于振动信号的旋转机械故障诊断。但是从原理上来讲,深度残差收缩网络面向的是数据集含有冗余信息的情况,而冗余信息是无处不在的。例如,在图像识别的时候,图像中总会包含一些与标签无关的区域;在语音识别的时候,音频中经常会含有各种形式的噪声。因此,深度残差收缩网络,或者说这种“深度学习”+“软阈值化”+“注意力机制”的思路,有着较为广泛的研究价值和应用前景。
参考文献
[1] K. He, X. Zhang, S. Ren, et al. Deep residual learning for image recognition. IEEE Conference on Computer Vision and Pattern Recognition, 2016: 770-778.
[2] K. He, X. Zhang, S. Ren, et al. Identity mappings in deep residual networks. European Conference on Computer Vision, 2016: 630-645.
[3] J. Hu, L. Shen, G. Sun. Squeeze-and-excitation networks. IEEE Conference on Computer Vision and Pattern Recognition, 2018: 7132-7141.
[4] D.L. Donoho. De-noising by soft-thresholding. IEEE Transactions on Information Theory, 1995, 41(3): 613-627.
[5] K. Isogawa K, T. Ida, T. Shiodera, et al. Deep shrinkage convolutional neural network for adaptive noise reduction. IEEE Signal Processing Letters, 2017, 25(2): 224-228.
[6] M. Zhao, S, Zhong, X. Fu, et al. Deep residual shrinkage networks for fault diagnosis. IEEE Transactions on Industrial Informatics, 2019, DOI: 10.1109/TII.2019.2943898
本文由 曹桂芝 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/79871.html 。
数据分析
2020-07-25 00:20:00
导读:网上关于 数据分析 师的文章很多,但是关于数据 产品经理 的文章很少,所以经常有各个领域的垂直网站来和我交流,问我 数据产品 应该怎么做,人怎么培养,团队应该怎么建。所以我就把别人的问题、自己的回答,结合自身的成长经验,做了一个课程。后应pmcaff之约,在这里把课程讲稿连载。
一、数据产品工作简介:
1.数据产品经理的概念和范围:
首先,思考两个问题:
1、 你心中的数据产品都包括哪些?
2、 你认为数据产品经理是做什么的?
至少,我每次介绍自己是数据产品经理的时候,经常收到别人问:
我有**问题,能帮我看看怎么回事么?这个数据为什么会变成这样?
我:%¥……#%¥@;
好,大家一起和我念:数据产品经理不是数据分析师,数据产品经理是产品经理的一种,数据分析是产品经理的核心能力之一,产品经理是数据产品经理的核心能力之一。
首先,数据产品经理必须了解不同的公司,在不同的阶段,需要哪些数据产品,并能够制作出来,这是此职位的核心要求,也是我本系列文章重点介绍的部分。
其次,数据产品经理必须有足够的数据分析能力,所以,我会讲一些数据分析的基本思路和方法论。如果有了数据分析的思维,再跟公司业务结合就会比较容易。
最后,数据产品经理是产品经理的一种,所以要同时具备产品经理的能力:了解用户,需求调研,方案设计,协调技术、测试、设计等,不过这些网上有很多文章了,所以我只会讲数据产品更需要注意的地方。
2.数据产品的种类:
在公司中,能够发挥数据价值的产品,即是数据产品;
一般,主要从用途来分,分为以下两种:
1、 分析类产品:通过数据的计算和展现,帮助业务进行分析、决策的产品,大概包括以下几类: 流量分析产品:可以帮助产品经理进行页面设计、功能改进和改版评估等 销售分析产品:可以帮助运营分析
这两个产品都是公司的必备,对公司各部门都有较大帮助: 帮助产品经理进行页面设计、功能改进和改版评估等; 帮助运营人员做用户分析、活动分析等; 帮助市场人员做投放分析优化等;
当公司某一块业务比较重要,又有专门的部门负责时,一般会把数据分析系统独立出来,比如: 供应链分析系统; 客服分析系统; 会员分析系统;
2、 算法类产品:通过数据的计算,直接更改页面的逻辑的产品,成为算法类产品;
比如: 个性化推荐; 搜索; 用户画像; 程序化购买广告;
等;
这两种是根据公司的情况来,区别并不是很明显,而且会不断演变。
比如:对供应链支持的,可能最开始是销售分析系统里,一个库存分析的报表而已;
后来,加入了各种补货预警、成本分析等报表,就变得很复杂,独立出来成为系统。
再后来,选品和销售预测,都是需要较强的算法支持,就变成了一个算法类产品。
在很多时候,我们进入的都不是BAT,而是一个垂直领域的领头公司,独角兽公司,这是很不错的选择。但是这种公司都不会一上来就配备很大的数据团队,可能也没有非常懂的领导,这时候需要数据产品经理不断规划数据产品的未来,从而协调资源。
所以一个数据产品经理,不仅要了解各个数据产品,还要了解,在公司什么样的情况下,这个产品以什么样的形态出现。三个月后,公司可能会什么样,需要什么样的数据产品。
这样,你才可以去申请技术人员和其他资源。
问题回复:
今天收到了很多问题,只能先集中把问题解决一下。
以后的更新会先解答问题,再连载内容。
1.为什么会有这个岗位?
简单说,就是公司已有数据,希望专业的人,来让数据产生价值。
业务型的公司,经过一段时间飞速发展后(通常为半年到一年),一般会出现以下的情况:
1、 得到资本方的认可,领导层会雄心勃勃,启用数据方面的战略。
2、 公司自身,也会碰到非常多管理的问题,就会希望结束粗放式的增长和运营方式,转向更精细化、更专业、更有效率、更能控制成本的增长。
3、 各部门都按自己的需求提取数据,会出现口径不统一的情况,比如一个部门和另一个部门的同一指标,出现不同解读。
4、 各部门自己提的数据需求,基本上总是会有漏的环节。
所以,这时候,需要有个懂的人,梳理各部门需求,汇总整理数据流程,将数据体系化,不然就乱了。
这种情况下,对数据产品经理的要求是:
1、要懂分析,不然就会变成一个只出报表的传话筒。
2、要懂数据的产生逻辑,要能建立一个业务模块的数据指标体系,不然,出来的东西会比较乱,可能迟迟上不了线;
还有另一种情况就是 大数据 团队招人。
这种一般是大数据团队,有自己的技术和算法人员,已经做出一定的成果(比如推荐系统最开始上线时,即使团队中没有产品经理,只有算法工程师,也是很容易产生比较好的推荐结果),得到了领导高层的认可。但是如何将算法,更好的服务于公司的商业,产生直接的销售结果,这是算法人员很难有精力去想的,就要招一个产品经理来。
这时候对产品经理的要求是:又要懂商业,人家就是找你来变现的,又要懂算法,又要懂产品,要求非常高。大家觉得大数据的产品经理比较贵,都是这种。
2.如何入门:
我招过不同背景的人,所以总结下来:
基本要求:理工科背景,性格要温顺,要能沉下心来。数据指标实在是一个太繁琐的事情,对性格的要求非常高。而且如果是数据分析,在一大堆数据里刨来刨去,很可能半天也没有结果,所以性格首要的。
以下是加分项:
1、数据分析师出身。数据产品最好还是要提供解决方案,并不是说,业务人员告诉你他们碰到什么问题,你就能做出好的产品的。要心中有商业模型,有很多解决方案,看到时候需要提供哪一种。
这些方案累积的过程,大部分需要训练,可是谁有时间去训练呢,而数据分析人员的工作本身就是思考各种问题解决方案的过程,要想办法把数据的问题找出来,并且能够作为报告展现。所以招数据分析人员做产品经理是一个快速省事的办法。
如果我的团队中没有分析经历的,一般我都会让其去做几份分析报告,训练思路。
2、业务人员出身,做过产品经理的,一般知道产品经理需要哪些数据,才能优化页面;做过市场的、运营的,知道哪些数据能够提升效果,有这种背景,我们也会需要;
3、数据提取员:每个部门需要数据时,就会有一个提取人员,用sql从数据库中提取数据。这种职位我会推荐应届生去做,首先,了解公司后台各大系统的关系和产生数据,其次,了解业务部门的情况,还可以了解公司的发展重点。最主要是,他了解每个数据是怎么产生的,这是其他背景的产品经理没有的优势,开发很喜欢这样的人写的prd,不管业务方向对不对,至少需求是不用改的。
4、算法产品经理,一般我会要求有数学背景的硕士,带起来很快,性价比高。
5、其实还是看个人,因为我们现在的团队每个方向擅长的人都有,所以如果我觉得一个人比较有潜力,就招进来,让他挨个职位做一遍,就培养出来了。
3.其他问题: 流量分析产品:可以帮助产品经理进行页面设计、功能改进和改版评估等 销售分析产品:可以帮助运营分析
这个帮助指的是什么?
如果是通过产生的数据报表进行预判的话,那和数据分析师的角色会重叠。
————以下是回答————
分析类产品,无论报表还是页面,都是希望使用者可以看到问题,或者得到结论,这是帮助的意思。也就是说把数据分析师的思维给固化成产品逻辑。
举例:比如周报,之前可能是分析师把所有的数据汇总在一起,查看,分析,然后告诉你哪里该改动了。
但是数据产品把分析师每次用的数据和思维,图形化展现出来,你自己做为一个产品经理,看看就知道哪里出问题了。
二、分析类产品:
1.定义和能力模型:
首先说定义:什么是分析类产品。
可以挖掘数据背后的价值,并通过数据的展示,为使用者提供帮助,即数据产品。
一个数据产品经理的能力模型如下: 数据分析的能力; 商业模型的理解能力; 需求分析和调研的能力; 数据展现的能力,即可视化的能力;
2.数据分析的能力:
在我年轻的时候,在团队中处于打头阵的状态,基本上老大有什么新的产品了,会先派我去做。等我做的把坑趟的差不多了,就交给别人,换下一个产品,所以我真是做过很多产品和页面。后来总结出做分析产品的一个套路来,如下:
首先讲一个数据分析框架,这基本上被我适用于公司很多业务上:
这是一个数据分析师的经典的分析过程。首先,为这个部门收集一些信息,帮助制定关键指标,其次,监测指标完成的好坏,并发现问题,然后,分析影响KPI完成的原因。最后,给出解决方案。
数据产品经理要做的是什么呢?就是把这个框架中的每个过程总结出来,梳理清楚,每一步,都需要哪些数据、哪些指标,怎么展示,用图还是用表,用什么图。然后,再综合开发资源、上线时间等,最终决定产品是什么样。
我以淘宝给卖家做的一个产品为例,来讲解这个过程:这是一个给管理团队和运营团队看的日报: 首先,日常监测:他们选的是访客数、浏览量、实付金额、支付转化率、客单价、退款金额、服务态度评分七个指标;
我们给每个部门做产品时,都需要首先制定核心指标。有很多时候,业务部门自己会提需求,但业务部门只能想到最直接的,很可能他们部门很严重的问题,会漏掉。
从部门价值上来考虑: 资本方给公司的要求是什么? 哪些指标影响了估值? 你目前在分析的这个部门,可以承担哪些影响估值的指标? 哪些其他指标可以为这个指标服务?
从用户行为来考虑: 用户如何来到这个页面/这个流程? 他都进行了哪些操作 都经过了哪些步骤 从哪个环节流失? 整体流程上,用户最关心什么?他的时间?更好的服务?更多的选择?
当然,还有很多维度可以考虑。
这样分析下来,该部门的核心指标就找到了。
对于部门来说,核心指标是比较好找的,可以跟部门老大合计,看他侧重哪方面即可。
对于为管理层做决策来说,就相对难了一些,在国内现在的形势下,可以多了解资本市场的分析逻辑,多了解管理层的现在的关注重点。
因为即使管理人员,做企业时,也是摸着石头过河,也在不断的学习,可能这个阶段学习的是一种商业理论,在另一个阶段学习的是另一种商业理论。所以相关的商业理论要了解,才能给抽象成报表、甚至分析页面。我为此曾经学过很多,balabala的。 发现问题:达成情况、情况好坏;同比、环比、定基比;
继续看这个页面,数据分析方式怎么用到页面设计中。
同比:较上周同期;
环比:较前一日;
定基比:将行业中所有的卖家分层,用和该店类似的卖家的核心数据,来做对比,从而知道自己的优缺点。
定基比中,我见过最好的,是淘宝的产品。我当时在代运营公司,确实卖家就想知道,哪些跟自己差不多的,比自己好一些的卖家,他们的一些核心数据是什么样的,我的数据到底改善空间有多大。
当然作为平台,可以做的更好一点:比如,我们同省市的卖家,大概的数据是多少。像我们去山东谈酒类企业,他们其实就很关注其他山东的酒在网上的受认可程度。太大的品牌,给他们的借鉴意义毕竟小。
当指标和分析方式都比较多的时候,用户看到页面,就会看到很多数据,但是不知道看什么。这时候就要用一些可视化的方式,突出重点。比如,用红色叹号,将下降较多的指标标出来。 分析原因:在产品设计中,通常要把影响指标达成的原因,也列在这个页面上,以供使用者参考。当然影响因素会很多,所以产品经理首先要收集齐全影响因素,然后再把关键的、核心的因素挑出来。
比如某个地区的月初退货率忽然增长,就要收集原因,可能如下:
*管理:
当地销售人员刷单,为了达成上月业务目标,月初退货;
部门人员,有的比较能干,有的比较弱,导致了整体数据的达成不好;
* 商品:新上的商品质量不过关;
* 促销:邮费政策、价格政策的变动;
* 外部原因:
* 京东做了一场大促,把价格给打下来了;
* 忽然爆发了商品的替代品,原有的优势品类衰退;
* 天气原因:当地下了一场大雨,导致送货速度降低,顾客不满意;
* 广告投放合作方临时变化(可能)
这些原因,哪些可以量化呢?哪些发生的几率比较大,而现在并没有这样的数据可用查看?这些原因,在产品设计中,就可以做成数据下钻的报表,以方便了解详情;
如上图所示,拿红圈圈起来的,就是原因分析这一步在页面上的展示。当你看到一款商品数据有问题时,既可以进入商品温度计,查看商品的每个环节(标题、商品页面设计等)到哪哪里有问题,还可用进入单品分析,查看流量来源等。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2015-11-08 21:35:00
大家好,我是来自硅谷的董飞,应国内朋友邀请,很高兴跟大家交流一下美国 大数据 工程师的面试攻略。
个人介绍
先做一个自我介绍,本科南开后,加入了一个创业公司kuxun,做实时信息检索,后来进入百度基础架构组,搭建了Baidu App Engine的早期版本,随后去Duke大学留学,在攻读硕士期间,做跟Hadoop大数据相关的研究项目Starfish,之后在Amazon EC2部门实习,了解它们的内部架构,毕业后加入Linkedin,做广告组的架构,涉及Hadoop调优,Data Pipeline, Offline/Online, 实时系统。最新是在Coursera从事数据工程师工作。
在多年工作中,除了对技术的不懈追求,也积累了大量的面试经验,从国内的一线互联网公司百度、阿里巴巴、奇虎、人人,到美国一线公司Facebook、Google、Linkedin、Twitter、Amazon,到热门Startup、Uber、Pinterest、Airbnb、Box、Dropbox、Snapchat、Houzz,拿到10+ offer,并且在Linkedin期间也面试过100+候选人,参与面试题制定,乐于分享并帮助很多人成功求职,实现目标。
硅谷高科技公司介绍
我们看一下这张硅谷地图,它坐落于美国加州,从圣何塞到旧金山的狭长地带,中间是San francisco bay,简称湾区。它的由来是这边有计算机核心处理器中离不开的硅,30年来,硅谷就发展成为无数技术性创业公司的摇篮。在20多年前,这里就有很多硬件公司成功上市,如Intel、Oracle、Apple、Cisco。10年前,互联网的兴起,造就了Yahoo、Google、Ebay的神奇。而如今Tesla、Facebook、Twitter、Linkedin正扶摇直上,成为美股高科技股的领头羊。这些公司的市值从几十billion到几百billion,PE从负数到上千,疯狂的估值背后也改变了世界。
如果说硅谷成功是有原因的,我觉得有两点:
一方面,地理位置是得天独厚吸引大量人才,这里有Stanford和加州州立高校提供智力库的支持,在硅谷可以看到来自全世界的最聪明的人,中国、印度人、犹太人是构成这些Engineer的主力。虽然国内做技术自嘲为码农,但在硅谷成为一个优秀工程师还是收获颇丰的。
另一方面,创业是一个永恒的话题,在Stanford有个说法——空气中都飘扬中创业的味道,一些早期员工通过上市套现又积累经验成了天使投资,Y Combinator、各种技术Forum、Meetup、创业导师等都很活跃。资本的力量功不可没,早年VC通过投资、收购、上市放大形成一个雪球效应。大家总喜欢问什么是next big thing,哪一个是下一个Facebook,下一个Musk,根据统计10年能成就一个千亿以上的公司,目前这个进程正在缩短。
我就拿Linkedin作为例子,介绍高科技公司(FLG)是什么样子。它是成立于2003年的职业社交网站,在10年的发展中,也不是一下子爆发的,目前有3亿的全球用户,虽然跟Facebook、Google 10亿+用户没法比,但是它有很好的护城河,用户定位高端精准,单位价值高。这张照片中左边这位是创始人Reid Hoffman,是Paypal黑帮成员,在硅谷也是呼风唤雨的大佬,目前是董事和投资人。中间这位是CEO Jeff,2013年被Glassdoor评为最佳CEO,作为职业经理人,成功帮助linkedin高速成长,他最喜欢提到transformation,希望我们每个员工能挑战自我,在各自岗位上进化。
Linkedin提供了员工很好的福利,有号称湾区最佳的免费食堂,每个月一次的In day,Hack day,帮助员工内部创业的Incumbator计划。它特点是数据驱动的开发产品,比如 People you may know, Job you may be interested。我做过Sponroed Ads 都是需要很强数据背景和Data scientist的支持。它的Biz model也很独特,有3个line,面向公司的招聘服务,面向广告商的市场服务,面向个人的订阅服务,还有最新Sales Solution,因为这么多可能性,成为华尔街的宠儿。
硅谷最新的创业动向
说硅谷,除了那些已经成功的大公司,不得不说一下现在最新的创业动向,这些代表了未来下一个FLG。我总结了一些领域和代表公司:云计算(Box, Dropbox)、大数据(Cloudera)、消费互联网(Pinterest)、健康(Fitbit)、通讯(Snapchat)、支付(Square)、生活(Uber)。
这里是华尔街网站更新的最新融资规模,比如Uber就达到18Billion的估值,我当时拿到Offer没去,还是觉得很疯狂,如果细看这张表,大家可以看到硅谷(蓝色)尤其是旧金山它们的融资规模远远大于其他地区,还是地理决定论。而在国内的两家小米,京东都是在北京,而最近大家看到一些泡沫论,说什么阿里巴巴上市是否美股到顶,经纬VC创始人也提醒我们泡沫的风险,我无法判断。如果能参与到下一波浪潮里面去是很过瘾的。我推荐大家去看看 《浪潮之巅》、《奇点临近》,我还是很期待未来20年的技术革命。
大数据相关技术
我个人热爱大数据,在硅谷这也是大家津津乐道的,有个笑话,big data is like teenage sex: everyone talks about it, nobody really knows how to do it. 其实大家还是兴趣驱动就好,不要那么功利,大数据技术涉及太多,平常工作中也是慢慢积累,有无数的坑和技术细节需要克服。并不是说那个技术最热就要用哪个,如果你用不好,你的压力很大的,举个例子,你用某个开源数据库,发现它偶尔有数据丢失怎么办,如果这是线上服务,你不断收到报警,这时候你当时选用它的优点 scalable,容错性都没意义了。
接着说大数据,这里面Hadoop作为行业标准,我面过的除了Google,微软不用,几乎所有的公司都在用,建议大家利用这个机会。这里面有三巨头,Cloudera是老牌Hadoop咨询公司,Hadoop的创始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 编码方式高效而著名,它们都是融了巨资,模式也很像,先推出社区免费版,但有个商业版提供更好的管理。 而今年出现一匹黑马Spark,简单说就是内存级别的计算,比Hadoop框架里能节约IO,利用缓存,能适应批处理,迭代,流式计算。
这里看一下它的生态系统,如何学Hadoop是个循序渐进过程,先要理解学习它的Core系统,HDFS, MapReduce, Common,在外围有无数的系统工具方便开发,我个人用过的是Avro作为数据格式,Zookeeper作为选主的高可靠性的组件,Solr作为搜索接口,Pig搭建工作流,Hive 数据仓库查询,Oozie管理工作流,HBase 作为KV分布式存储,Mahout 数据挖掘 的库,Cassandra nosql 数据库。我建议初学的考虑Chinahadoop的课程。
而Hadoop本身也是个进化过程,几年前0.19版本,到0.20、0.23分流成Yarn架构,最后进化成Hadoop2.0, Hadoop1.0 和 2.0 它们的接口和组件是完全不同的,但总体上Hadoop 2.0 是趋势,因为它有Yarn这样分离的资源管理平台,可以以插件的方式开发上面的Application,解放了生产力,而像Spark,Storm这些新型处理器也是支持Hadoop 2.0的。
这里是Hortonworks它们提出来的社区版本架构,可以说标准的制定者,一流的公司制定标准,其他的公司一般用只能用它们提供的稳定版,没有多少话语权。但从事大数据,并不见得是要去这些制定标准的公司,大量的应用也是非常考验架构的灵活性,并且能看到实际的产品,很有成就感。
说到2014年火的,还是要看Spark。已经开了2届Spark大会,上千人的规模,无数人对比Hadoop 100倍的性能提升而兴奋。这里说它的背景是诞生于Berkeley的Amplab,它们有个很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已经成为Apache的顶级项目。去年这个实验室的教授跟学生出去成立Databricks公司,拉到两轮上千万的风投,有人问Spark是Hadoop的终结者吗?我看2014年Spark大会上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放弃Impala的一线支持而转变成Spark。
如果这么发展下去,星星之火可以燎原啊。它里面用到Scala是一种函数式语言。里面的组件也很多,有Shark支持SQL类似Hive,有Spark Streaming、MLlib、Graphx、SparkR、BlinkDB。它的核心数据结构是RDD,可以跑在各种分布式系统上。总体上是个包容性+侵略性的系统。我个人也很看好它们的发展。
我在Linkedin做过一些大数据的广告系统,我就简单提一些我学到的。 Linkedin有特有的开源数据系统,包括Voldermort (分布式KV存储), Kafka (分布式实时消息队列),Espresso (基于mysql的海量存储),Databus(数据变化捕捉),可以查看http://data.linkedin.com Lambda架构,离线使用Hadoop做pipeline,near online做高效聚合,提供混合式架构,达到实时和一致性的妥协。 Kafka在linkedin起到奠基作用,一方面所有实时tracking都是通过它,另一方面 data bridge,比如图中通过kafka可以实现数据的无缝衔接,否则很难想像每个数据源异构系统,它们的通信将是 n^2 级别的复杂度。 分布式并不酷,如果考虑到高可靠性,强一致性而数据量并不是想像的大,不见得要使用;否则自讨苦吃。尽量使用成熟的,可靠的,例如MySQL, Memcached
求职经验
根据我的求职经验,我给出几点建议: 如果面试的话,我先看他们的经验是不是match,对应届生看有没有实习经历,如果你在Google、Linkedin实习,绝对加分,学校当然也需要,比如我们招人UC Berkeley是要机会大一些。 我看过很多简历,不推荐用DOC,因为在不同系统中排版不一样。简历也不要写太长,不是大牛就不超过2页。尽量突出你的技能如何匹配公司的职位,比如这个公司都是用C++,你上面都没C++,是不大合适。我也很不喜欢看到精通,如果你这样写,就很容易引起麻烦,最好写多少年经验,对具体技术的掌握。 面试当然需要准备,但到底是事倍功半,还是事倍功半。我建议把你的经历精选1、2个准备熟练,包括如何团队分工、技术细节、遇到困难、如何克服。不要贪多,就把你现在用的东西准备好,没人关心你5年前干啥的。 社交很重要,最简单是去招聘会就可以跟人混个脸熟,如果你在网络多利用有些网络招聘网站,如dice,indeed,你还要巧妙利用Linkedin,加入高级账号,可以查看有些校友的资源,发站内信,refer比你网上瞎投效率要高很多。
如何找到面试题?
网上有很多资源,比如Glassdoor是个匿名发布网站,经常有面试题,有些技术论坛Stackoverflow、Careercup也会有很多参考题。
如何知道一些靠谱的公司?
可以看你知道的牛人都选择去哪些公司,如果名气不大,可以去流量排名上去看他处于什么地位,如果没有上市,可以看它的融资规模,还可以从Linkedin看它的员工是否优秀。
什么时候才知道准备好面试? 算法是否过关,是否能写出递归和动规; Coding是否过关,是否能在IDE中写出Bug Free; Design是否过关,是否能给出Tradeoff; 项目经历整理,能够流利说出架构、难点、自己的贡献; 加分项:Github、Blog、参与Open source。
如何回答行为面试问题?
比如你有没有过失败的经历,如果你老板给你不喜欢的任务怎么办,你想像中成为什么样的人。这里一方面可以结合自身精力,另一方面多关注公司的介绍页面,包括公司创始人背景、企业文化、招聘的要求。这些都是可以提前做好功课,尽量体现出来你的激情、负责、勤奋等优秀品质。
如何拿到美国工作签证?
要来美国工作,一般是要求H1B的身份,是有雇主向劳工局提出申请Sponsorship,根据现在的形式,每年的名额都是一抢而空,那么这样就需要抽签决定。在4月1日之前提出申请,4月1日之后开始抽签,如果是在美国获取硕士以上的学位,可以有优先级,抽取概率更高,而根据2014年情况,普通的抽中几率是50%。
如果没有抽中,如果是美国有硕士学位,可以使用OPT照样工作,并且可以省社会安全税。而如果是海外的,只能等来年在抽。像Google、FB这种全球性公司,他们也会提供其他国家办公室的机会,然后比如工作一年后再通过L1或者H1B继续到美国工作。另外如果你抽中名额,再跳槽期间是可以transfer而不需要依赖名额,每3年可以续一次,最多6年。如果H1B期间申请绿卡,还是可以延长的。
面试流程
如果你拿到面试机会,下面的流程是先电面,对于engineer,算法coding基本功是必须的。还是准备好你的小白板,根据面试官的题给出思路和代码,说起来容易,但就是那10多行的代码,80%以上的人都挂了。
然后就是onsite,美国公司为了体现人才为先,都会来一次onsite,如果是远程过来,报销机票、车费、酒店、吃饭,听起来也是免费旅游的机会。但onsite也不容易,基本上4-6轮,每轮45min到1小时,也会让你挑战极限的,经常是头痛欲裂,我最狠的一次10天面7家onsite,连续飞,连续面,真是折磨。
他们都考察什么呢,简单说是你到底聪不聪明,是否经过工程训练,是否能够合作。总体分成3块,一类是技术问题,比如算法,系统经验;一类是交流能力,你个人经验,兴趣;一类是hr喜欢问的行为面试,比如你有没有过失败的经历,如果你老板给你不喜欢的任务怎么办,你想像中成为什么样的人。
面试准备
技术面试这里面涉及面也挺广。看似简单的coding不见得能过关,不信,你写个字符串查找,我不需要你知道KMP,就是暴力解法,可是90%的人都挂在这道题上面。算法方面,常见的hashtable、heap、trie。系统设计也是很多同学害怕的,很多人说我没设计过那些系统。
如果大家算法都过关,系统设计就能继续筛选,体现出来你的层次。还要一些很随机的问题,数学上的概率组合,Linux的常见命令都有可能触及。
我这里列出考察Hadoop的一些基本问题,都比较简单,大家Google一下,知乎上也有我的详细题目。
对于算法,是考察的重中之重,我总结了一些高频题目,同样参见我的知乎。
这两道题是我真实中被问道的,虽然不是常规,大家可以思考一下。其中求面积的,是Apple当时问的,同学们能在15min内演算出来吗?
选择工作
假设你经历过面试的考验,拿到offer,下面就要面对如何选择的问题。在考虑offer之前,先对公司做个研究,比如这公司是什么规模?产品是什么?Glassdoor员工如何评价的?你的职位你喜欢吗?这就跟选学校一样,如果选错了,也是需要走很多弯路。
我个人的参考是,首先这公司是不是上升期的,产品是否有爱,团队是否比较强,学到东西。对公司分类,Hortonworks这种是纯技术性的,面向企业级的可能没多少人知道;而Uber是大众消费性,很多朋友都用过。现在的热点是移动互联网,大家也可以多考虑这一块。
大家都很关心硅谷公司的待遇福利,这边我也做个介绍,待遇分成基础工资,根据Glassdoor排名,大概在每年10w刀-20w刀,硅谷目前也是水涨船高,奖金有些大公司有(Google, FB 15% - 20%)。如果是上市公司,会给限制性股票,分3-4年行使,创业公司一般给期权,不同就是限制性股票是白送的,不需要自己掏腰包,期权需要自己买入,不同时期价格不同。但股票交的税非常高,期权是有些长期避税。
最后也要考虑你的兴趣和对风险的承受能力,如果去大公司做个螺丝钉,实现共产主义生活也无可厚非。去小公司压力大,成长快。但也要做好失败的准备,看看当年zynga教训。
职场感触
硅谷生活着一群不在乎别人怎么看,但有很疯狂的想法的人。大家在这谈创新、谈技术、谈创业,资本涌入,人才竞争,导致大家都是很高的期望值,迫不及待的去改变。这种浮躁也许是社会进步的动力。
我这上面的都是最热的话题,每个领域都是百亿甚至千亿的价值。最近阿里巴巴的成功上市创造最大IPO,让大家看到中国互联网的野蛮成长,中国的发展速度和广阔市场让大家想像无限。而百度在硅谷设立 人工智能 研究院,阿里巴巴也准备在硅谷招上千人研发团队,越来越多的人才拼抢。中国的一些互联网产品也走出国门,微信、小米、360都在广泛布局投资未来。有时候会想当大家都是谈论技术改变世界,做个小App就值上亿,甚至上百亿,但真的世界因为你改变了吗?我们也要多些独立性思考。 原文链接:http://dongfeiwww.com/hadoop/interview/2014/09/25/training/
本文为专栏文章,来自:董飞,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/643.html 。
数据分析
2015-10-28 22:57:00
2015年被称为中国企业服务元年,企业服务如雨后春笋一般蓬勃发展。在大量资本的追捧下,SaaS企业迎来了全行业的高潮。但是据不完全统计,中国的企业服务市值目前尚不到40亿美金,而在美国,仅仅Saleforce、SAP和Oracle三家巨头的市值已经超过3500亿美元。
站在企业服务爆发的风口下,国内的SaaS企业要想成为亿万级的企业服务巨头该何去何从?跟传统企业销售模式相比,SaaS企业云模式用那些本质的不同,并且作为最关键一环,SaaS企业如何实现客户成功 ?
一、SaaS企业云模式与传统模式的区别
关于SaaS云模式,图左边是Single Deal模式,传统销售IT产品的公司,会在前期收高额的费用,之后每年会获取数据库升级和维护费用,用户最初的投入非常高。右边是SaaS企业现金流,一开始y轴是负的,代表在前期会投入市场成本、教育客户成本,引导培训,让客户习惯SaaS服务,等客户通过培育成为平台付费客户后,可以看到负盈利变成正。
SaaS平台一般采用云模式,在这个模式下可以快速扩张,服务更多客户。 如果客户的数量可以规模化增长,以及能控制CAC(获客成本),引导客户长期使用平台,那采取这种模式后盈利曲线会非常陡,能够快速迭代产品、修复系统问题、增长客户数量。
LTV (life time value) 生命周期总价值,指的是客户在平台使用时间的长短。一般LTV越长,客户在平台贡献的收益越高。一个成功的SaaS模式,LTV要大于CAC三倍。因此客户在平台停留时间越长越好。
SaaS企业的漏斗模式与传统的不尽相同。漏斗上方都是让产品的受众转化为客户,从而让客户签单,让客户习惯SaaS产品的功能。但不同的是,客户初期使用SaaS软件时付出的费用很少。
因此SaaS软件盈利方式有两种,一是希望客户在平台上停留时间更长,二是促进客户购买、增购、复购,交叉销售更多产品给客户,引导客户消费。因此企业需要精细化衡量整个漏斗。
二、SaaS产品如何提高留存
2.1 了解SaaS产品的留存状况
首先需要了解SaaS产品的留存。留存指的是客户在第一天使用产品之后,第二三天有没继续使用,可以看到图中两个产品的留存不同。
A产品留存率在12%-15%左右,B产品在30%-40%之间,在后期还有向上的趋势,说明B的留存好于A。留存越高,用户活跃度越高,LTV被延长的就越久。
其次要分析每个产品功能对留存的影响。我们对SaaS服务的功能进行了统计。下图列出了SaaS功能的占比和趋势,可以看到蓝色区域占比比较高。通过计算留存的方式,可以找到留存率最高的功能点,就可以引导客户使用这些功能点,从而提高用户留存。
2.2 引导客户使用高留存的功能
下图中,功能A的留存在六天后是20%左右,是留存最好的功能,次好功能的留存是12%到13%左右。一旦找到SaaS中留存最好的功能,就应该尽力在客户熟悉平台时,引导客户使用这个功能,从而提高客户留存。
知道留存度高的功能后,也就找到了product-market-fit,有了PMF就可以规模化增长。
举个例子,在LinkedIn上,新用户在第一个星期加入时连接了5个用户,那他的留存度、使用度和活跃度会远远大于小于5个社交关系的人群。这个发现帮助LinkedIn从2003到2009年客户基数飞速增长。
三、 SaaS产品如何防止客户流失
3.1 防止客户流失
如何在产品中培养客户,让其复购和交叉销售。我们花了很多时间让客户买单,在使用过程中,我们给客户提供培训和上门支持,我们投入了非常高的CAC获客成本,这个时候我们不希望看到还没把之前的投入的成本拿回来的时候用户就已经流失了。
在上图中我们对客户的健康度做了分析。这个数据背后有很多东西,比如客户使用频次,时长,功能的计算,有了这个模型能对客户进行排序,蓝色是使用的比较好的客户,红色是不太好的。在这个图里我们能进行配置,可以把最好最差的5个调成100个。对于使用不好的用户,要么进行培训,要么进行走访,理解客户需求,引导他们使用平台上留存度高的功能。
3.2 建立客户温度和健康度模型
有了客户健康度模型之后还不够。健康度和温度之间的关系能帮我们更好销售。
见下图,X轴是健康度,y轴是温度,用户健康度越低,使用频率越低,用户温度越低,购买意愿越低。
我们可以做一个气泡图,每个气泡代表一个公司,把所有客户分布在四个象限之中:
1. 右上角的客户,购买意愿高,频次高,是非常优质的客户,我们希望这些客户尝试新的产品,会推出新功能让这些客户先使用。
2. 左下角是购买意愿低频次低的客户,我们就鼓励客户使用产品,引导客户用留存度高的功能,对客户进行培训。
3. 左上角是购买意愿高,使用频次不高的用户,我们让客户马上埋单,把用户变成客户,先鼓励用户购买之后再慢慢像右上角推动。
4. 右下角的区域,购买的意愿不高,使用频次高,这时候要了解原因,比如一些客户在平台上消耗了大量资源,但是付的钱不能覆盖成本。我们要找一些方法进行沟通,或者了解是不是多个人使用一个账号。在这上面我们会发现,按账号来卖的产品,有的用户经常多人使用一个账号。我们可以跟客户交流,给客户开更多账号等。
四、从收集用户行为开始,实现SaaS客户成功
我们的主要目标是让客户在平台使用的时间更长。那实现客户成功的好处是什么呢?
实现客户成功最大的挑战是收集用户行为。有了数据还要进行 数据分析 ,分析结果指导企业针对用户行为积极主动的运作。 能指导用户行为的结果才是好的分析结果。有了用户行为数据才知道用户是怎么使用产品的,最开始购买是靠这个产品能满足需求,持续购买是靠用户体验,我们需要知道用户是怎么使用产品的,从而提高用户体验。
比如一款团队协作SaaS产品,里面有很多功能模块,所有功能都要对用户行为数据进行收集。大家知道传统统计方法中,收集产品功能用户数据可以通过埋点来实现。但是实际操作比较复杂,产品经理想知道产品使用情况要通知 数据分析 师,数据分析师要找到数据报表,找不到的话需要工程师埋点,等代码上线之后才能得到这些数据。
考虑到整个流程很繁琐复杂,回国创业之前,我们想了一个简单的方法帮助产品经理收集和分析数据,通过无埋点的方式收集用户数据。不管是网页端客户端还是手机APP,都能全量采集用户行为数据,做出分析报表,帮助产品经理快速发现用户行为背后的内容,对产品进行新一轮的迭代,比较之前的结果,来分析我们的结果是正确的还是错误的。
收集用户行为数据,判断用户行为信号,以及某个模块使用情况,所有信号都能让我们把用户分在不同象限内,采取不同行动。
本文作者是GrowingIO联合创始人吴继业,根据其演讲内容整理编辑,由GrowingIO投稿至数据分析网。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-04-13 18:00:00
7月20日报道,杭州 聪普智能 科技有限公司宣布完成数千万A轮融资,本轮融资由中青国融领投。
据悉,聪普智能本轮融资将主要用于核心技术的研发、产品线的丰富迭代以及营销渠道的投入。
中青国融投行负责人表示:“对于 智能家居 行业的标的公司,中青一向有着自己的衡量标准。首先我们比较看好智能家居集成系统这个细分领域。既能开发单品,也能提供集成系统的公司,拥有全面的核心竞争力,可以与大公司开展差异化竞争,获得商业成功。第二,更看好2B2C的模式,而不是单独2C的模式。2B2C模式的好处在于用户教育成本低,将智能家居全套产品通过前装方式进入用户家庭,潜在用户的激活概率高。最后,智能家居集成系统的发展还是要看和地产商的合作趋势。目前,无论是办公还是居住,智能家居更适合在前装阶段进入,所以与地产商的合作显得尤为重要。”
聪普智能是一家智能家居系统提供商,较早地推出数字化智能家居系统,已集成可视对讲、安防报警、智能灯光、电动窗帘、空调地暖、背景音乐、视频共享及家庭影院等智能家居系统,产品涵盖控制主机、智能面板、控制模块、调光模块、转换网关及控制终端软件等。目前,聪普智能在全国拥有200多家经销商,下设的聪普学院为经销商与智能家居爱好者提供免费的培训机会,为行业培养应用型人才,助力智能家居落地。
在创立之初,聪普智能曾获得来自 阿里巴巴 创始团队成员周悦虹的天使投资,同时周悦虹本人也出任聪普智能技术总监,为聪普智能在智能家居系统 大数据 及 人工智能 方面带来战略性技术指导。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2018-07-20 08:30:00
14日晚,2018俄罗斯世界杯在莫斯科卢日尼基体育场揭幕,四年一度的全球狂欢正式开始!虽然国足无缘世界杯,但我们作为体育强国的参与度完全不输其他国家。揭幕赛前,各类“懂球帝”就开始出现在各大网站报端和朋友圈,在这些人中,有一类人是让宠物或者孩子抓阄的野生预言家。有一类人是试图以数据为基,算法为梁来揭开世界杯奥秘的科班预言家。那么,今年究竟是野生预言家傲视百家延续一哥保罗的预测神话,还是科班预言家用数据说话技压群雄尽显科学的魅力,未来一个月,我们一起检验。
2018
科班预言家做了什么?
近日瑞士联合银行、日本野村证券、德国商业银行、丹麦银行以及投行高盛等机构纷纷发布了各自的2018年世界杯预测报告。报告可信度究竟有几分,那就见仁见智了,这里我们不预测结果,只做预测结果的搬运工。
瑞银认为德国夺冠概率最高,其次为巴西和西班牙。 高盛认为巴西夺冠概率最高,并且其次为法国、德国、葡萄牙 荷兰国际集团(ING)认为西班牙夺冠概率最高,其次为法国。值得一提的是,ING的预测方法主要是基于参赛球队的市场估值,这也就不奇怪西班牙成为夺冠大热。 野村(Nomura)给出了三个热门,分别是法国、巴西、西班牙;三匹黑马,分别是波兰、乌拉圭、丹麦;两个潜力股,分别是塞内加尔秘鲁。野村给出的是一个投资组合,他们的预测思想是以资产的方式看待团队,考虑到团队背后的动力和球队的价值分配,并且考察球队中所有球员的价值,假设每个球员都有可能像最好的球员一样踢得好,也有可能像最差的球员一样糟糕。 德商银行认为德国夺冠概率最高,其次是巴西、西班牙、阿根廷。 丹麦丹斯克银行认为巴西夺冠概率最高,其次是阿根廷和德国。
仔细看看这些机构的预测,夺冠呼声最高的四支队伍分别是德国、巴西、西班牙、阿根廷。但是,在第一轮小组赛中,这四支球队无!一!取!胜!(捂脸),其中卫冕冠军德国队0:1输给了防反先锋墨西哥,梅西踢飞了点球阿根廷憾平冰岛大巴,西班牙神勇发挥不敌C罗帽子戏法艰难守住平局,巴西即使库鸟穿云箭却也最终被瑞士逼平。
这下不止勒夫慌了、梅西慌了、内马尔慌了,科班预言家们更慌。
好了好了,预测冠军手牵手,谁进四强谁是狗。
其实科班预言家们的预测逻辑大多是从数据科学的角度出发来建立指标和模型,但是足球本身是一个“业务”很复杂、专业性很强的“行业”,所以懂“业务”的人,更能选到适合的指标来建立模型。前面提到的机构大多来自金融业,是一群善于摆弄计量经济模型的大佬,但在足球领域,其实算是个“外行人”,我们很难说哪家做的更好,但最具经验的,一定是高盛。
高盛算是个预测界的网红,从1998年的法国世界杯开始,高盛在世界杯之前都要发布一份关于世界杯经济学的投行报告,该报告会详细分析参赛各国的经济基本面的状况,并将其延伸到竞技基本面,对赛事做出预测。但是,2014年高盛预测巴西将会强势夺冠,而最终被德国7:1狠狠打脸,网红险些过气。今年,高盛携 人工智能 卷土重来,继续提前剧透——巴西队将夺得2018年世界杯冠军,然而纵使库鸟穿云箭,巴西首站也只是艰难战平瑞士,不知道高盛现在是否瑟瑟发抖?
在经历过多年完善和修正之后,高盛本次的预测以之前历年世界杯、欧洲杯和世界杯资格赛的数据为基准,使用机器学习运行了20万个模型(我读书少不要骗我)。运用了Random Forest,Bayesian ridge regression,Lasso regression,and a gradient boosted machine等算法,从多个方面分别挖掘球员和球队的数据,随后模拟了100万场比赛,以计算每支球队晋级的概率。指标的选取上,高盛主要用了5个指标来预测胜负,相关性从高到低分别是:球队评级(Elo等级)、球员评级、球队近期表现、对手近期表现、球队近期进球势头。如果大家有兴趣自己做世界杯预测,那么这些指标还是值得参考的,下面仅作简单介绍。
球员表现
从天道酬勤力挽狂澜的C罗,到宝刀未老攻城掠地的莫德里奇,明星球员的发挥在一定程度上能够左右比赛的走向。然而,即使明星球员能够在重要时刻力挽狂澜,但是球队某个位置有明显短板的球员可能会成为球队兵败滑铁卢的罪魁祸首,因此将整支球队的所有球员纳入评价体系的球员评级是客观预测比赛胜负的重要指标。从图中我们可以看到,拥有世界顶级青训体系的西班牙力压上届世界杯冠军德国占据头名,拥有巴萨皇马两支铁军的西班牙国家队,随随便便就凑了个全明星阵容。而孔帕尼、阿扎尔、德布劳内领衔的比利时青年军紧随其后,相反,没落的贵族英格兰和欧洲新贵葡萄牙遗憾垫底。
球队评级
与球员评级不同,Elo球队评级从整体上衡量了球队的实力,有些球队虽然拥有众多天赋球员,但是由于球队磨合程度、战术配合等因素无法碰撞出良好的化学反应。从Elo球队评级上来看,世预赛全胜晋级决赛圈的南美洲老大巴西和传统豪强德国依旧排名前二,在球员评级中位列第三的比利时国家队滑落到第十位,也印证了赛前关于比利时国家队内讧的传闻。
近期表现
近期表现包括球队近期表现、对手近期表现、球队近期进球势头。在2018世界杯揭幕战俄罗斯对阵沙特阿拉伯的比赛中,解说一再强调赛前的热身赛中俄罗斯7场不胜的近期战绩,并强调不胜战绩对球队带来的负面影响,赛前也有多家机构发布沙特赢球的预测结果,但最终俄罗斯却以一场5:0的大胜揭开世界杯的帷幕,并在第二轮小组赛中以3:1击败埃及队。所以,实际上任何指标都不能完全决定一场比赛,很多时候,科学会输给足球,这就是足球的魅力,也是天台上站满人的原因。
除了高盛之外,多特蒙德工业大学的Andreas Groll教授团队也给出了自己的预测,在团队发表的Prediction of the FIFA World Cup 2018 ——A random forest approach with an emphasis on estimated team ability parameters一文中,他们认为德国和巴西将会会师总决赛,而德国队会笑到最后。
总的来说科班预言家们的做法还是很讲道理的,只是世界杯似乎是道超纲题。不过历年的世界杯冠军夺冠之路都是磕磕绊绊,虽然夺冠热门第一仗都栽了跟头,但每支球队也做出了相应的调整,西班牙在第二轮小组赛中1:0战胜了伊朗队,两战拿下四分,出线在望。其他队伍也是一样,道阻且长,我们拭目以待(zuo deng da lian)。
如果说用数据科学预测世界杯让我们开始相信科学的话,那么接下来要介绍的这些人Or动物不禁让我们怀疑起了来自宇宙的神秘力量。
2018
野生预言家
玄学榜No.1 瘆人的毒奶
首先就是球王贝利,巴西神锋球场上所向披靡,在预测界也是声名显(lang)赫(ji),从1990年世界杯开始,每届世界杯球王贝利都会做出预测,但被他看好的球队无一例外地都被提前淘汰掉了,2010年甚至一口毒奶将自己的主队巴西队拒之半决赛门外,巴西队、阿根廷、西班牙等队纷纷表示不约不约。除了足球领域,球王还将自己的神秘力量延伸到了排球界,在2016年的里约奥运会的排球比赛中,贝利表示自己看好塞维利亚队,结果中国女排暌违12年再度夺冠。然后就是国产毒奶天后“乌贼刘”刘语熙,2014年巴西世界杯比赛期间,刘语熙只要穿上哪个球队的队服,这个球队就一定会输掉比赛。而且不止足球比赛,NBA赛季时,只要刘语熙身穿某个篮球队的队服,该球队也会毫无悬念的输掉比赛,“乌贼刘”的功力可见一般! 赛前
赛后
玄学榜No.2 动物也疯狂
世界上很多事情就是如此没道理,章鱼保罗在2008欧洲杯和2010世界杯两届大赛中,预测14次,成功13次,预测准确率高达92.85%。然而保罗已经去世,今年自然也有一众动物想要继承保罗哥的衣钵。比如喵星人阿喀琉斯,这只出生于冬宫博物馆的皇家警卫猫后代在去年的联合会杯中命中率高达75%,然而出师不利,在14号晚间进行的揭幕战中,阿喀琉斯把宝压在了远道而来的沙特队上,结果惨遭5比0血洗。又比如小黑猪马库斯,据说曾经成功预测了2014年世界杯冠军以及特朗普当选美国大选,今年预测世界杯四强为比利时、阿根廷、尼日利亚和乌拉圭,然而尼日利亚和阿根廷在第一轮小组赛分别取得了负、平的战绩,从小组战绩来看,两支球队同时出线的可能性已经为0。
保罗为什么有如此之高的预测成功率呢,有传言说因为章鱼是无脊椎动物中智商最高的,而章鱼喜欢吃的食物恰好有黑、红、黄三种颜色,正好是德国国旗的颜色,所以自然会得到章鱼保罗的青睐。同样的道理,阿根廷国旗没有任何吸引章鱼的颜色,所以章鱼保罗自然会选择德国队。所以我们可以认为,动物预测有可能是某种神秘的自然力量,但大多只是人的意愿的一种体现,大家还是别忙着培养自家的狗狗去咬国旗了。
世界杯第一轮小组赛刚刚结束,冷门频频爆出,仅仅十天的赛程天台上就已经站满了人,这也印证了那句话,足球是圆的,赛场上一切都有可能。其实,每个球迷心中都有一个指标体系,复杂程度甚至超过科学家们设置的指标体系,有对人的情感,有对足球的情感,甚至对国家的情感,并且随着时间变化,经过大脑加工,形成一个复杂的模型,最终输出一个能说服自己的预测。这也就是再强大的预测模型,也难免会在世界杯翻船的原因,因为有太多科学家们有待发现的指标隐藏在赛场上的每一个细节。每个人都是预言家,每个人都应该好好享受足球, 你预测哪支队伍能捧起大力神杯,评论区留下你的预测结果,预测成功狗熊会有惊喜哦 。
本文由 狗熊会 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/56963.html 。
数据分析
2018-07-17 17:35:00
大数据 文摘出品 作者:郑璇真、YYY
据路透社7月11日报道,在被英国数据保护监管机构查出数据共享违反法律之后, Facebook 目前面临来自英国信息专员办公室(ICO)的50万英镑(664,000美元)罚款处理。
尽管这对市值高达5900亿美元的Facebook来说是九牛一毛,仅仅相当于Facebook每8分钟的一次收入,但50万英镑已是英国1998年数据保护法允许的最高罚款。
但是,在最终决定罚款50万英镑之前,Facebook仍有机会回应ICO的意向通知。Facebook表示正在审阅ICO发出的调查报告,并将很快做出回应。
“他们的陈述将将在本月晚些时候到期,目前尚未对案件的案情进行最终审查。我们将在确定最终意见之前仔细考虑Facebook做出的任何陈述,”ICO的信息专员伊丽莎白德纳姆说。
Facebook自今年早些时候开始受到审查,据透露,有8700万用户的个人数据被政治咨询公司Cambridge Analytica不当收集和误用, 他们帮助特朗普在2016年赢得美国总统职位 。
有趣的是,由于泄密事件泄密被曝光的时间早于新的欧盟通用数据保护法规(GDPR),ICO的罚款是根据旧的英国法律实施的。
而如果根据这个“史上最严个人资料保护法”GDPR,对于此类隐私泄露,Facebook可能面临最高2000万欧元的罚款,或其年度全球收入的4%,以较高者为准。
相关报道:
https://thehackernews.com/2018/07/facebook-cambridge-analytica.html
本文为专栏文章,来自:大数据文摘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/55932.html 。
数据分析
2018-07-14 12:48:00
作为全球领先的信息与通信技术 ( ICT ) 解决方案供应商,华为始终致力于以极具竞争力的 ICT 解决方案、产品和服务,为运营商客户、企业客户和消费者创造最大价值,构建更加美好的全联接世界。
目前,华为的业务遍及全球 170 多个国家和地区,服务客户超越世界人口的三分之一。然而伴随全球业务显著增长的,数字化运营的成本也在不断提高。
因此,华为于 2017 年携手 Tableau ,希望通过与全球 数据可视化 领导者的强强联合,推动公司自助式分析文化的普及,帮助业务决策和创新,提升自身商业潜力,凸显业务价值。
Tableau 作为自助式分析工具,其顶尖的图形图表视觉体验、强大快速的数据集成、零编码、无编码的低门槛优势,已在华为的整体数字化运营中展现了令人惊叹的重要作用,在大幅降低运营的成本的同时,更有效提升了数字化分析的运作速度。如今,华为内部使用 Tableau 的员工已接近 3,000 人,从Tableau 图表中受益员工逾 15,000 人,重要报表产出高达数十万张。
在业务层面,Tableau 有效运用可视化的方式,直观呈现业务分布规律,第一时间发现业务缺陷或问题,助力华为业务的规范设计及改进,实现商业价值。特别是在全球质量热词及全球质量事故分析中,Tableau 的自助式分析能够直观呈现产品规律性缺陷,对于华为改进整体产品质量意义非凡。
在管理层面,Tableau 也为华为提供了崭新的思考模式。一些原本需要华为内部上百人经历数月才能完成的分析和应用,如今借助 Tableau 仅在一周内即可完成,开发成本直接降低近 80%。在加快开发周期、降低开发成本的同时,Tableau 也帮助华为成功释放出更多的人力,通过更快更好地调整探索方式,最终找到适合研发领域的模式和途径。
本文由 博易智软 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/57288.html 。
数据分析
2018-07-11 09:25:00
本文来自腾讯证券,作者:腾讯《一线》王丹薇。
数据是未来各行各业的血液,谁掌握了海量优质数据,谁就拥有了窥探市场的魔镜。
总部位于深圳的 大数据 公司极光于当地时间周五(29日)向美国证券交易委员会递交了上市申请,计划在纳斯达克股票交易所挂牌,募资2亿美元。
海外公司在美国上市通常公开递交招股书后,一般有两周的公示时间,然后公司则进入7到10天左右的IPO路演,一切顺利的话,就接下来就会正式挂牌。
极光成立于2011年,业务包括为移动应用开发公司提供服务——推送通知、短信身份验证以及用户分析等。例如,于2017年9月上线的“极光效果通”,拥有超过500个形象标签,能够对用户资料进行全方位分析。即极光可以通过用户的移动互联网行为分析其年龄、性别、社会属性、所处地域、App偏好、智能手机型号等,来帮助头部App准确找到和触达用户。
极光CEO罗伟东曾于2016年底称,随着互联网应用的日益深化,数据已渗透到每一个行业和业务领域,并成为未来发展的生产力,“能够多维度地刻画用户画像,拿到一张清晰的画像,可以做的事情太多了。”
以精准广告投放为例,通过App定位功能,捕捉到某个商圈的人群信息,如其性别、年龄、居住地等,使客户能够有针对性地投放广告,以最少的成本获得最大的投放效果。
极光的核心团队成员来自腾讯、摩根士丹利、豆瓣、Teradata和中国移动等公司。CEO罗伟东毕业于中国人民大学、香港理工大学MBA,是位连续创业者。罗伟东做的第一款产品曾是全国最大的两家技术社区网站之一Matrix社区,该网站第一年就收获80万会员,罗伟东赚取了不菲的广告费。
在三次成功的创业后,2011年,罗伟东开始了第四次创业,做一款“中国版的WhatsApp”,名叫KKtalk。但KKtalk诞生三个月后,微信问世,尽管KKtalk当时的用户已有400万,但是罗伟东对竞争格局的巨变心知肚明。腾讯微信一个月的市场预算已经超过罗伟东账上所有的现金,而腾讯已有的用户群又让任何竞争对手望尘莫及。
痛定思痛的罗伟东回顾研发过程,发现“推送消息”是开发中,最困难的一个环节,于是罗伟东将推送产品抽离,独立成为一款产品。2012年,极光推送正式问世,并于短短四年内达到月活用户6亿,覆盖总用户数超过50亿。罗伟东再次踩准了行业变化的风口。
美股市场对极光模式不会陌生。于2003年成立的硅谷大数据公司Palantir,虽然一直保持低调,但是却是一家大数据领域的独角兽,估值超过200亿美元,仅次于独角兽明星Uber和Airbnb。
Palantir有两个最为人称道的案例。一是在美国追捕本拉登行动中,Palantir扮演了重要的大数据情报分析角色;而是Palantir协助对家银行,追回了纳斯达克前主席麦道夫庞氏骗局案中,所隐藏起来的数十亿美元巨款。
罗伟东曾于2016年底称,要做中国的Palantir。
极光的招股书显示,2017年4月至2018年3月的财年中,销售量达5700万美元。该公司曾获得IDG、复兴锐正、Mandra Capital、国海证券、TCL、富达国际等机构的数千万美元投资。
在国内的一个主要竞争对手是TalkingData,后者亦于2011年成立,获得过北极光、软银和MileStone等机构的数千万美元投资。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2018-07-01 12:40:00
导语 :作为连接生产商和消费者的信息传递者,零售商发展的历史即是信息技术与 数据科学 的进步史。从交通运输条件的改善加速中世纪的流动商贩和农牧产品生产者之间的沟通,到电话电报的出现缩短了需求信息传递的时间,从条形码掀起零售业颠覆性革命,到互联网的普及改变业界格局,再到今天的数据实时监控与精准营销,每一次零售业的重大变革都离不开数据储存、传输、处理、分析技术的革新。本文选取了3个现代零售业发展进程中重要的变革节点,回顾数据技术的进步是如何引领零售业变革的。
零售业的发展离不开数据技术的进步,这是由零售业的特性与其在增值链上的位置所决定的。零售商作为生产供应商和消费者的中介,向双方传递着关于供给与需求的信息。从形式上,零售商承担的是将生产者产出的商品销售给消费者的角色,而实质上,交易的是商品流通所传递出的关于生产领域以及消费者和消费市场的信息。
具体来说,在商品流转的增值链上,零售商主要以四种方式使商品增值:1)从生产供应商提供的多种多样的商品中选择适合当地市场、消费人群的商品;2)将需求信息汇总并反过来传递给生产商;3)为消费者提供购买建议;4)将商品实体从厂房运输到销售地。其中,前三种方式增值的实现主要依靠零售商对信息的掌握,即,通过交易记录和对市场的观察,更好地将供给和需求匹配起来,为生产商提供关于市场变化和消费者偏好的信息、为消费者提供满足需求的产品以及关于产品特点的信息。
正因如此,零售业是信息生产与信息使用最为密集的行业之一,也往往成为数据技术革新的发起者和引领者。交通运输条件的改善、通讯技术的进步、POS机的发明与使用、互联网的发展一次次推动者着零售商在增值链上信息传递速度与决策效率的进步,从而可以不断降低成本、增加销量、并为价值链的两端提供日益优质的服务。对于现代零售业,一个重要的历史节点,即是20世纪80年代末条形码+POS机带来的变革。
 01      由POS机+条形码引发的行业变革
在20世纪80年代之前,生产商和零售商主要通过市场调研公司来了解消费品市场。如,尼尔森每两个月会进行一次市场调研,选取美国一些有代表性的城市,去访谈和盘点以了解关于价格、销量等信息,再汇总这些信息每两个月编制一份市场报告。通常,在信息收集后,还需要人工处理数据、分析数据,而最终这些数据传递到生产商和零售商还需要一段时间,因而最终获得信息往往是粗略、滞后且缺乏针对性的。
80年代末,InformationResources公司开发了一款新产品,将POS扫描机与条形码结合起来,使零售商可以实时获得关于商品运输、储存直至销售的信息。这一革新不仅提高了供应链管理的效率,也为零售商了解市场和消费者提供了大量实时、精准的数据。通过条形码传输的实时销售数据,零售商可以了解每月、每周甚至每天的销售数据,并根据销售量及时调整库存;通过了解不同地区、不同店面的销售情况,零售商可以调整产品类别以更好地为当地消费者选择合适的商品、提供更精准的销售建议。
沃尔玛是当时最先使用这一技术的零售商之一。沃尔玛不仅利用条形码技术改善其自身的管理效率和销售业绩,也将由此获得的大量实时数据与供应商分享,一方面,可以让供应商及时调整生产,另一方面还可以从中收取费用,实现了数据价值的显性化。这一技术的出现不仅提高了零售商在商品流通、信息传递方面的效率,也改变了零售商和生产商之间的博弈局面。这一技术出现之前,生产商决定零售商可以销售多少商品、以什么价格、推出哪种促销手段,而POS机和条形码让零售商掌握了大量关于消费者和市场的数据,了解到消费者想买什么、愿意以什么样的价格购买、哪种促销手段更有效,并且零售商可以决定是否将这些数据提供给生产商。
POS机和条形码的应用不仅改变了零售业的面貌,也引发了一系列的技术变革。零售商拥有的数据量从MB增长到GB再到TB,这一数据量的突然增大推动了数据处理技术和 数据分析 工具的更新换代。新的数据处理及数据储存平台如Teredata、Sybase IQ、Informix、Red Brick出现,替代了原有的主流数据管理系统;同时, 商业智能 软件行业也在这一波数据爆炸中发展起来。这些新的数据处理平台和应用的发展为业务领域的数据分析和使用提供了更多的可能。
例如,基于条形码传递的实时商品流通数据和销售数据,零售商可以预测需求、优化供应链、推出更有效的营销方案、优化产品组合方案、优化商品定价等,以往需要几个月才能调整和优化的方案如今可以在一周内就实现。此外,POS终端+会员卡制度,可以让零售商不仅了解消费者和消费市场整体的情况,也可以从人口统计指标的维度,了解每一个街区、不同收入水平、教育水平的消费者的消费偏好,并根据消费记录为不同消费者提供不同的促销方案,这也是最早出现的精准营销模式。
 02       世纪之交的互联网发展与电商的崛起
90年代末,随着互联网技术的发展,计算机和互联网逐渐普及到每一个家庭,为零售业销售渠道的拓展提供了新的机遇,也标志着零售业开始进入电子时代。与80年代末从零售业内部引发变革不同,互联网时代是由技术引领并逐渐应用到各个行业的。在零售业,人们对于线上渠道购物的方便、快捷等优势可能带来的行业变革怀有极大的憧憬,投资者纷纷投资早期的电商平台。然而,当时如物流等基础设施服务却尚未足够完善以支撑电子商务的发展,因而在新世纪的初期,电子商务形成的泡沫最终破裂。
随着网络技术的成熟,即传输速度提高、传输稳定性改善,以及互联网用户的指数级增长,线上零售渠道开始逐渐发展起来。线上渠道的发展不仅改变了零售业的活动开展场景,也改变了参与主体。一方面,生产者可以越过零售商直接向消费者销售商品、获取消费者数据,另一方面,每一个消费者也都可以成为销售主体面向其他消费者。而更具影响力的,是在这一波互联网浪潮中发展起来的以亚马逊、淘宝网等为代表的电商平台。
通过提供全品类的商品和低于实体渠道的价格,加上线上购物自身的便利性和快捷性,电商的影响力迅速扩张,并在这一过程中生产了大量的关于用户基础信息、浏览记录和消费记录的数据。网络日志中包含的大量内部和外部的数据让电商对产品表现、市场趋势、消费行为和消费者拥有了更为深刻的洞察。基于对市场和消费者的了解以及和电商影响用户消费选择的能力,如推荐算法,线上成交量迅速增长,增长的用户和成交量又使电商获取更多的数据,从而形成了基于用户洞察、引导用户消费的良性循环机制。
线上渠道的发展可以看作是改变了零售商内部的力量对比。对于较早地拥抱新技术、成功实现转型的零售商,线上平台使其扩展了销售渠道和影响力;互联网新玩家则是打破了传统零售商对于零售市场的垄断,而未能较早拓展线上渠道的传统零售商则逐渐退出了市场,其中,多数为缺乏充足资本进行技术投资的小型零售商。
 03       新零售与数据技术的新发展
零售业正在进行着一场新变革。马云在2016年提出了“新零售”这一概念,随后阿里研究院发布报告总结了零售业正在出现的新趋势,即以消费者为核心实现产品多元化、个性化,以及线上线下渠道的融合发展。这场以人为核心的变革再一次改变了零售业参与者之间的权力对比,一方面,信息的透明化降低了消费者和零售商之间的信息不对称,使消费者不必依赖零售商的选择和推荐,另一方面,由于零售商之间的资源占有和技术能力的不平衡,小型零售商越来越难以在竞争中存活下来。
产品的多元化、个性化是和大量涌现的新的数据形式和来源息息相关的。社交网络提供了信息发布的平台,实时生产着大量的半结构化数据,这些数据中不仅包含着消费者关于产品体验、商家服务的评价,而更多的是关于消费者自身偏好、行为的信息。这些信息改变了零售商获取市场洞察的方式,即不再需要通过商品的流通获取供给和消费的数据、通过消费者买了什么来了解消费者,而是通过从多种来源获取的如购买记录、收入水平、评论等数据直接了解个体消费者,从而预测每一个个体的需求和整体消费市场趋势。
线上、线下渠道的融合是新零售时代的另一个显著特征。在消费端,渠道融合为消费者提供了更多的便利。进入电子时代以来,传统零售商就不断探索线上线下渠道协同的途径,让消费者在不同的渠道获取同样的信息,并通过多种O2O模式提高消费的便捷性;而当前的渠道融合更是给消费者在整个消费流程中不断穿梭于线上和线下的自由。例如,消费者可以在店咨询的同时,通过移动终端获取同类产品不同款式的性能、相同产品其他渠道的价格等信息;消费者可以在店线上支付、填写会员信息或填写评价等。从零售商的角度,一些传统电商开始在线下开店,如亚马逊开设实体书店,则是结合了线上渠道收集的信息和线下渠道在即时消费、体验性消费等方面的不可替代性,全方位支撑收入的增长。
无论是对社交网络数据的挖掘让用户获得个性化的产品、服务,还是线上线下渠道的融合增强了消费的便利和信息的透明,其背后的助推力量都是相同的,即移动智能终端的发展。手机功能的多样化一方面带来了数据量的增加,另一方面导致了用户所使用的终端数量减少以及数据的集中。而移动终端之所以能够引导这样的变革,主要是依靠通信行业数据传输技术的进步,即LTE技术和4G网络发展。
手机应用以及基于传感器的定位服务承载着越来越多的个人数据,而如何管理数据、使用数据是当前零售商面临的主要挑战。一方面,如何从这些半结构化、实时数据中挖掘有价值的信息并应用到产品选择和组合、定价、营销方案、渠道管理等零售业各个领域从而使数据变现,是数据分析师以及业务人员的主要任务;另一方面,如何储存大量的数据、如何提高数据处理速度,则考验着信息技术从业者。云技术的出现为数据储存问题提供了一个可行的方案,但同时也带来了数据稳定性和安全性等新的问题等待着技术专家们解决。
“ 大数据 ”从来都不是新的概念,使之一次次成为风口的,是数据传输、数据储存以及数据分析等技术的突破和创新,因而这场“新零售”变革的影响有多深远,是否会像80年代末和90年代末的两次变革彻底改变零售业的面貌,最终将取决于技术领域发展的速度和深度,而如亚马逊、阿里等零售电商,也将再一次成为引领变革的核心力量。
参考资料:
Niemeier, Zocchi & Catena (2013) ReshapingRetail: Why technology is transforming the industry How to win in the newconsumer driven world
Schmarzo (2013) Big Data: Understanding howdata powers big business.
Ohlhorst (2013) Big data analytics: turningbig data into big money.
本文为专栏文章,来自:KPMG大数据挖掘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/56836.html 。
数据分析
2018-07-01 11:29:00
6月26日,中大型企业线上 反欺诈 管理方案提供商 CashShield 宣布完成两千万美元B轮融资,由淡马锡和GGV纪源资本领投,张涛,托尼·法戴尔和Wavemaker Partners跟投。至该轮融资完成后,CashShield已募得投资额共达2550万美元。首批投资者托尼·法戴尔和GGV纪源资本在本次融资中投资加倍,增持了公司股份。全球投资企业淡马锡新加入本次CashShield融资。募得资金将被用于加强CashShield的全方位欺诈技术,为企业、金融机构和政府组织提供更全面的反欺诈审核技术。
CashShield是一家国际线上风控公司,专为企业防止交易欺诈与帐户盗用。CashShield的独特科技采用高频交易算法,实时模式识别以及被动生物识别分析,无需人工操控;审核的交易覆盖超过190个国家,来自各种行业,例如电子商业,数码业,电信公司以及网上旅游公司等。CashShield 的国际足迹包括美国,欧洲,中国与东南亚。
本文为 数据分析网 原创文章,转载或内容合作请联系我们,未经允许谢绝转载,本文链接:https://www.afenxi.com/56760.html 。
数据分析
2018-06-30 00:44:00

[导语]:
“革故鼎新,中国进入新时代;行至深处,商业面临再出发。“6月21日,中国商界高端人脉深度社交平台“正和岛”召开了“2018年创变者年会暨第六届岛邻大会”。 数据观 作为新一代商业分析平台,为正和岛提供了此次年会的 数据可视化 分析与大屏展示服务,让正和岛的商业价值被更多人看见、看懂,让中国最具商业价值的人群为数据之美所目眩神迷。
[正文]:
主会场入口,一架巨幕电视正在“迎宾”。屏幕中播放的就是数据观为正和岛制做的 数据可视化 大屏,展示着正和岛岛邻在地域、行业等各方面的分布,进入正和岛之后营收价值的转变,以及为社会创造的价值。
在入口的另一面,还有一个互动屏幕,以数据观独有的“交互式看板”展示数据。参与年会的企业家们可以直接在屏幕上与数据互动,实时探索正和岛的数据“岛情”。
“数据驱动+深度社交”:一个俱乐部向岛的“裂变”
正和岛拥有一个低调的名字,但它的“岛邻”(会员)却无法低调——马云、柳传志、张瑞敏、鲁冠球、王石、宁高宁、马蔚华、王健林、郭广昌、李书福、俞敏洪、曹国伟……各个都是引领着行业前进的超级巨鳄。
正和岛把自己称为一个“岛”,但它的职能却更像一个“hub”——让千万高端商务人群能够放心、自如地彼此连接。在这里,企业家拥有专属于自己的“朋友圈”——无论发布任何需求或资源,阅读、响应、参与、合作的,都是经过层层筛选、精准匹配的高端人士;在这里,企业家拥有专属于自己的“活动行”——每年上千场线上线下活动,皆是知识、机遇与人脉俱佳的盛宴。
是什么让全中国最有影响力的企业家愿意凝聚在一起?
答案或许是“人”——正和岛的创始人、首席架构师刘东华先生,在创办正和岛之前,曾经是《中国企业家》杂志社社长、中国企业家俱乐部创始人。2013年创办正和岛时,支持他的是20年来积累的资源与人脉——柳传志、马云、王健林、郭广昌、李书福等近30位国内知名企业家和他们代表的机构,联手投资近亿元,作为正和岛的启动资金。
答案或许是“时”——互联网时代来临,信息从稀缺转变为大爆炸,企业家作为时间最稀缺的群体,需要有人为他们提炼、加工最需要的、针对性最强的、价值浓度最高的信息,也需要一个低信任成本、低时间成本、高投资回报的圈子。
答案或许是“道”——利用标签、数据、线上线下结合的方式,正和岛解决了企业家之间的“信息对称、信任对称、供需对称”三大问题,真正达成了人与人、人与重要价值之间的深度、高效、精准链接——这些传统媒体做不了、普通社区做不到的,正和岛通过“数据驱动+深度社交”,做到了。
6年时间,正和岛岛邻从几百位发展到6000多位,成功运营29个省级区域岛邻机构和上百个部落社群,每年组织上千场线上线下活动。在2018年的这场盛会中,企业家们将在正和岛“重新定义小我和大我的关系,重新塑造企业与社会的关系”。
震撼:正和岛数据揭秘
正和岛究竟有多“厉害”?今年,数据观应邀成为此次年会的数据可视化分析与大屏展示服务商,第一次通过数据完整地梳理了正和岛的“岛情”,并制作了以下视频,呈现给全球岛邻。
正和岛用户体系一共涵盖四层会员:注册用户-认证用户-海客-岛邻。其中,海客必须是各个发展阶段企业副总裁以上决策层;而有资格成为“岛邻”的企业家,必须满足“企业成立3年以上、每年营业收入1亿人民币以上、且信誉良好”的严苛标准。
正和岛的岛邻来自五湖四海。其中,北京、上海、广东名列岛邻人数Top 3。
这些岛邻分布在各行各业,制造业、建筑房地产业、租赁和商务服务业、金融业与大健康等行业成绩斐然。
而这些岛邻为社会创造了巨大财富——其中超过50家企业的贡献都在500亿以上。
仅2018年5月,正和岛就被161篇文章报道,文章中正面词汇超过阈值93%。
根据岛邻热度值,2018年正和岛十大“岛红”分别是马云、刘东华、柳传志、黄丽陆、王健林、史船、颜艳春、曹秀华、梁信军、彭学平。
登岛后,正和岛会为岛邻提供一系列的产品与服务,促成企业家群体之间的商业合作。包括新三板企业服务与资源整合、深度FA服务、海外项目咨询与落地合作服务、TO B联盟企业级服务等。从2014~2016年的数据来看,岛邻在登岛三年之中,营收变化排名top5的行业是建筑房地产、制造业、IT及互联网、大健康与金融业。
最后,还有一个相当有趣的议题——哪个星座最容易当总裁?根据正和岛提供的岛邻生日数据,发现天蝎座、天枰座与处女座的总裁最多,双子座差点“颗粒无收”。从属相上看,狗、兔、猴年成绩最好,马、蛇、羊、牛则差强人意。
本文由 数据观 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/56572.html 。
数据分析
2018-06-27 23:51:00
2015年,中国股市经历了一次全民皆知的剧烈回调,“韭菜”被大面积收割,这让决策部门意识到,强化监管是维持中国金融稳定、防控金融风险的必要所在,中国金融政策导向由此转变。而这一年,也是监管科技(RegTech:Regulation & Technology)在全球萌芽兴起的时点。近期,国际市场上黄金、比特币、大宗商品等接连暴跌,美元指数逼近百点大关,中美贸易战火再起,外围经济环境并不平静,这就对国家金融稳定提出了更高的要求。我们希望在本文中探讨以下3个问题,并借此思考:新技术该如何更好地赋能金融监管,中国的监管科技又该如何市场化、资本化。
1.RegTech解决了谁的什么问题?在中国有哪些落地场景?
2.为何中国RegTech公司数量和投融资事件均远少于其他国家?
3.近期监管趋严的大环境下,是否意味着RegTech行业在中国将迎来拐点? 作者:任辰羽 指导:谭莹
Greed is good。
1987年,《Wall Street》中的这句话燃起了所有年轻人逐梦华尔街的念头。23年后,同一个导演,同样由道格拉斯饰演戈登,《金钱永不眠》展现了另一个新的金融纪元:更大规模的资金流量、更多样化的产品形态、更激烈的交易竞争、更复杂的监管体系……但是,人类对欲望的迷恋是永恒的,这点在金融市场中体现尤甚。欲望推动了变革。聪明人会千方百计地创新金融工具、寻找制度空白,以期获得超额收益,聪明钱也由此显得总能“领先一步”。举例来说,期货、期权等衍生品的出现,最早是基于风险厌恶者套期保值的需求,然而,投机者看到了风险中孕育的机会,高杠杆反倒成就了他们的造富神话。与此同时,金融创新过程中,不可避免地会出现不同形式的、波及面较广的恶性事件,比如郁金香炒作、庞氏骗局、次贷泡沫等,而这类事件的发生,往往是由于本该负起风控责任的监管制度存在漏洞导致的。因此,纵观整个金融发展历史,欲望驱使着创新,始终走在监管之前。对于国家决策机构来说,金融是一国的经济命脉所在,如何在监管和创新之间寻找平衡将是破局的关键。当下,技术革命浪潮再一次席卷全球,云计算、 大数据 、 人工智能 、区块链等技术成为新宠,监管科技这一概念也乘风而起。
01 .何时、何地、何种原因催生了RegTech?
2008年全球金融危机之后,经济环境愈加动荡和复杂,新技术陆续应用到金融场景,使原有的金融业务边界愈发模糊,对监管也提出了更高的要求和挑战。以中国为例,2003年银监会的成立,标志着一行三会的金融分业监管体制确立,但近年来,我国金融混业经营的趋势日益明显,涉足多项业务的综合性金融机构数量增多,分业监管的体制下,各监管部门之间沟通成本高、流程存在断裂和空白,无法监测真实的资金流向,出现了鱼龙混杂的互联网金融、野蛮的险资举牌、多层嵌套的资管产品等现象。2015年3月,英国首席科学顾问Mark Walport在递交给政府的金融科技报告中,首次提出将Fintech运用于监管与合规,从而建立起一种新的监管技术机制,也就是RegTech。同年11月,英国政府首创“监管沙盒”制度,并鼓励金融机构运用新技术降低合规成本,自此,RegTech进入各国监管部门及科技企业的视野,美国、加拿大、新加坡、澳大利亚等国家先后对RegTech表示了肯定和支持。
02 .解决了谁的什么问题?在中国有哪些落地场景?
RegTech作为一种创新工具,在监管者和市场玩家两种身份中自如地切换应用场景。一方面,站在监管部门的立场上,中国、美国等将RegTech定义为帮助监管部门提升对于交叉金融风险的甄别、管控和处置能力;另一方面,站在金融机构的角度,英国、西班牙等认为RegTech将提高企业的内控效率,降低企业的合规成本,促进金融企业更有效地达到监管要求。这样看来,RegTech涉及三方主体:负责制定政策规则的监管机构、行为需要满足监管合规要求的金融机构、为前两者提供技术服务的RegTech公司。根据参与主体的不同,RegTech也将有不同的发展路径:(1)由监管机构独立研究与开发RegTech系统;(2)在金融机构开发的RegTech系统基础上,由监管机构进行选择和整合;(3)监管机构将RegTech系统的研究与开发外包给第三方科技公司;目前,由于金融业务复杂、产生数据体量较大、涉及到大笔资金的流通,因此RegTech率先在金融行业应用落地。金融监管的流程主要由三个环节构成:事前对各种信号的统计监测、事中对交易风险的跟踪掌控、事后对报送资料的梳理分析。由此,我们勾画了RegTech公司可能在这三个环节落地的十余项细分场景。
中国虽然早在2000年左右就开始推动银行业务信息化的相关工作,但限于当时的IT技术发展水平,仅对数据标准化做出了统一的要求和监管。由此,衍生了一批第三方金融服务公司,帮助中小银行等金融机构加快数据标准化速度、降低合规成本,这也是技术与监管初步结合的雏形。
2013年,中国互联网金融元年爆发,覆盖了大量的长尾用户。由于存在诈骗套利空间和监管空白,聚集了巨额民间资本的互金行业陆续发生“平台倒闭”、“卷款跑路”等影响恶劣的社会性事件。在此背景下, 大数据 技术率先被金融机构运用到风控中,2014-2016年, 大数据风控 公司密集成立,主要落地场景为个人信贷的风险审核。
直至2017年,央行成立了金融科技委员会,并且明确提出要加强监管科技的研究与应用,这是RegTech首次出现在中国金融监管部门的正式对外表述中,也标志着这一行业在国内进入萌发期。对于监管部门来说,新一代RegTech首要应用的方向落在金融行业顶层设计的风险控制端,比如央行的反洗钱监测分析二代系统、银保监会用来做合规检查的EAST数据仓库、证监会根据大数据系统线索来打击内幕交易等。
03 .为何中国RegTech公司数量,和投融资事件均远少于其他国家?
据CB insights统计,2013年至2017年,全球RegTech领域股权融资合计约达53亿美元,涉及603次融资。其中,美国的RegTech交易数量占总量的74%。

而不管是投融资案例,还是全球RegTech公司数量统计,中国均未上榜。究其原因,首先还是因为中国的监管法规存在定义不清、范畴较小、颁布滞后等问题,对于RegTech行业来说,研发和应用主要就是依据监管法规的细则和解释,在无法可依的情况下,中国RegTech概念的兴起和发展均存在先天性落后基因。其次,中国与英美等国的数据环境也存在差异。RegTech的底层基础是全面、真实、及时的海量数据,包括工商数据、司法数据、业务数据、舆情数据,以及非结构化数据等。在欧美发达的金融市场环境下,数据的获取和共享已经不是难题,国家均支持和推出了符合各自国情的金融数据开放政策,比如英国的Open Banking、欧盟的PSD2、美国的金融数据共享指导意见等。而中国除了上市公司之外,政府、未上市企业、数据公司等各自掌握了部分独家数据,却不愿意建立共享机制,这也阻碍了RegTech在中国的落地。目前,中国实际上贴有RegTech标签的公司较少,更多传统的大数据风控公司正在赶往这一赛道的路上。如何在数据共享与数据安全之间寻找平衡,如何从个人端风控场景转而切入到企业端、政府端业务,是新入局创业公司和转型期公司共同面对的问题。
04 .金融监管趋严态势明显,RegTech是否将乘风而起?
1、以美国为例,监管红利驱动行业发展从全球RegTech格局来看,虽然英国率先提出这一概念并进行探索,但美国的RegTech行业市场化、资本化发展更为成熟,个中原因,与美国完备的金融监管制度是分不开的。08年全球金融危机后,美国开始着手推进从金融自由到监管加强的制度变革,这一变化主要体现在以下三个方面。由于美国金融监管制度十分完备、违规成本极高,因此,企业借助科技手段降低合规成本的意愿较强,驱动着RegTech在美快速发展。 反观中国,金融分业监管和政策后置的特性,导致金融机构和科技企业缺乏研发使用RegTech的动力,因此,中国RegTech行业的发展更需要监管机构自上而下的推动。
2、中国金融监管趋严,红利逐渐释放
开放需求和科技浪潮使金融底层架构发生了改变,导致传统的监管制度和工具不能覆盖日益复杂的风险,2017年至今,顶层会议陆续讨论通过了金融监管体系的变革决策,“一委一行两会”取代“一行三会”成为中国监管部门的新格局。
除此之外,金融从业者也普遍感受到近一年以来政策环境的明显转变:密集颁布、全面覆盖、态度明确、力度强化。举例来说,银行过去将大量资产放到了表外业务一栏,这种做法的本质是为了逃避监管约束,而在分业监管模式下,银监会也确实无法有效地监管位于券商、基金、信托等账户上的银行表外资产,“影子银行”迅速发展壮大。因此,2017年金融风险整治的重点就在于银行体系,尤其是同业、理财、表外等风险突出的领域。自2017年3月起,银监会发布一系列监管文件整治“三套利、三违反、四不当、十乱象”,掀起了一场监管风暴。
监管体系变革叠加监管环境趋严,为RegTech在中国的发展提供了最基础、也是最直接的驱动力量。但是,与美国、英国、加拿大等监管完备的国家相比,中国不管是在制度的覆盖范围、更新频率,还是处罚力度上,都存在着较大差距。
3、中国RegTech发展三大趋势
任何一个行业的业态创新都不是一蹴而就的,2018年将是中国金融监管继续强化的一年,也将是RegTech在中国开始普及用户教育、热度逐渐提升的一年,行业拐点仍需等待,同时需要警惕公司乱贴标签、概念炒作,形成“伪监管科技”。
基于对国内外RegTech发展情况的对比,除了提高监管合规效率、降低成本这一基础目标之外,未来中国的RegTech行业有望在细节上呈现三大趋势。
(1)新技术加入
除了已经采用的大数据、人工智能等技术之外,逐渐兴起的区块链技术有望赋能到RegTech行业。区块链技术具备去中心化、开放性、信息不可篡改性等颠覆性特征,应用于RegTech中,将改变传统金融数据的报送和产生流程,业务信息由被动报送变为自动生成,对于监管的真实性、完整性、及时性都将带来很大改善。
(2)应用场景扩大
RegTech有望脱离金融科技的范畴而独立存在,除了满足金融监管的应用场景之外,将可能下沉到更多的实体产业中。以2018年热议的中兴通讯事件为例,监管机构将愈发关注企业内部合规是否达标,尤其是对于在国外的大型中资企业来说,适应当地监管国情与合规要求,是RegTech能够帮助优化的场景之一。另外,国外已经有RegTech应用到税务、审计部门的案例,比如美国的Canopy公司,这一点在中国也同样适用,传统的统计方法主要为抽样调查,在大数据等新技术的应用下,可以做到全面覆盖。
(3)资本助力市场化
受监管红利驱动,未来中国的RegTech入局者将逐渐增加,包括创业公司、科技公司和互联网巨头,举例来说,2017年底,腾讯先后与北京市金融工作局、深圳市金融办签订合作协议,携手打造地区性的金融安全大数据监管平台;上市公司恒生电子也推出了专门辅助地方金融监管机构的智能监管产品——智能金盾。随着行业热度提升,RegTech的落地场景将逐渐扩展,变现模式也将逐渐清晰,VC资本将涌入真正有价值的企业,产业资本也有望进行并购整合,中国RegTech投融资的空白将被填补。
全球金融环境已经在发生改变,新的技术浪潮和中国崛起的趋势不可阻挡,步入2018年,中国金融创新开放与监管强化并行,使用大数据、人工智能、区块链等技术进行科技监管,将是一项长期的系统性工程,道阻且长,行则将至。
本报告为鲸准(ID:rong36kr)旗下专业的数据研究分析机构【鲸准研究院】原创作品,受《著作权法》保护,依法享有汇编权及注释权。
本文由 鲸准研究院 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/56321.html 。
数据分析
2018-06-22 12:12:00
Empirical Systems 是一家诞生于麻省理工学院的 人工智能 初创公司,其自动化统计分析技术未来将被集成到 Tableau 平台。
6 月 13 日,Tableau 公司宣布其收购 Empirical Systems 的消息。 Empirical Systems 是一家领先的 人工智能 初创公司,诞生于麻省理工学院概率计算实验室(Probabilistic Computing Project)。通过将 Empirical Systems 的自动化统计分析技术集成到 Tableau 平台,Tableau 的客户将更加轻松地从数据中获得见解,而不需要手工构建复杂的底层数据模型。
Tableau 公司首席产品官 Francois Ajenstat 表示:“我们对 Empirical 团队的加入表示欢迎和欣喜,他们会协助我们一起将人工智能助力的分析带给大众,并增强人们与数据交互的方式。”自动见解生成功能将使不具有专业数据科学背景的人们也能够轻松发现数据趋势,找寻进一步探索的领域,测试不同的假设,并模拟假设情景。“ Empirical 团队与我们具有相同的愿景,即通过智能分析向更多人提供更深刻的数据见解,我们迫不及待地期待这个极具才华的团队加入。”
Empirical Systems 的分析引擎能够实现自动 数据建模 – 这通常需要训练有素的统计学家才能完成,并让人们实时地进行数据探索,解释,预测和模拟。先进的统计算法不需要手动测试所有变量,也不需要对预先确定的假设进行限制性分析,它将增强用户体验,并引导人们发现以往容易被忽视的相关见解和趋势。这将使得人们能够解决常见的数据问题:比如洞察变量间的关系,发现未知的数据模式或数据峰值形成因素,并且在不需要数据科学专家或进行自定义统计建模的情况下推断数据缺失值。
Empirical Systems 的首席执行官 Richard Tibbetts 表示:“ Empirical 使复杂的数据建模和统计分析变得容易企及,让任何希望理解数据的人都可以基于深入分析做出全面的、数据驱动型决策,无论他们的技术专长是什么。” “ Empirical 的愿景与 Tableau 的使命和研究创新的方向是高度一致的。我们看到了无限的机会,让我们将更深入的数据见解带给广大的 Tableau 社区,和热情洋溢、高度参与的 Tableau 用户们。”
Empirical Systems 公司总部位于马萨诸塞州剑桥市,是一个由工程师和数据科学专家组成的团队,他们创建的分析平台帮助众多行业的客户通过自动分析理解结构化数据。作为收购的一部分,Empirical Systems 的员工将加入 Tableau,该团队会专注于将Empirical 现有技术集成到 Tableau 平台中,其功能将在 Tableau 未来的版本发布中亮相。
本文来自Tableau社区
本文为 数据分析网 原创文章,转载或内容合作请联系我们,未经允许谢绝转载,本文链接:https://www.afenxi.com/56254.html 。
数据分析
2018-06-21 06:30:00
虽然时间、地点、事件、人物四大要素随着技术的推移,会衍生出很多相关内容,但从营销角度来看,整体套路是不会变化的。因此,场景化数据走到现在已经是场景化营销2.0时代。
场景化的分析和营销是 大数据 未来发展趋势
从 营销角度 来看, 大数据 的价值主要体现在两个方面: 内部的管理价值和外部的营销价值 。郑泉表示,目前大数据的应用层级是从内部管理价值开始的,但是从未来发挥大数据价值角度来看,应用层级最终要实现从 内部管理价值向对外营销价值的转变 ,而场景化的分析与营销则是对外营销价值的最直接体验。
“如果一个用户平均每天上四个小时的网,其中三个小时都在你这儿,剩下的人可能都要饿死了。”99click郑泉认为,虽然数据看着够大,但其实已经在放缓增长了,无论是整个互联网还是用户平均使用时长,都已经到了一个饱和阶段,没有什么太多的增长空间了。
从互联网财富=用户数*平均在线时长*变现能力这个公式来看,最后的变现能力就是场景的入口和场景的转化。
虽然时间、地点、事件、人物四大要素随着技术的推移,会衍生出很多相关内容,但从营销角度来看,整体套路是不会变化的。因此,场景化数据走到现在已经是场景化营销2.0时代。 往后推移,会发现标签越来越多,标签之间的关联关系也越来越复杂,就会变生出一个更加丰富的场景。
以全新的AR技术营销为例,它就是通过营造一个场景让用户去接受,当用户决定带上AR眼镜的时候,其实就已经决定要找一些商品来试一试,这就是最典型的 场景营销 的案例。
场景数据的构成和分析
既然场景化的分析和营销是大数据未来的发展趋势,那么这些场景化数据是如何构成的呢 场景数据主要由用户数据、场景体验数据、商品数据三大部分构成。
在场景化数据中,数据只有两种走向: 一种是用户数据,一种是企业数据 。
无论用户数据还是企业数据,虽然看似最终都归企业所有,但实际上跟企业并没有太大的关系。如果一个网站上一个用户都没有,那么这个网站的数据就是零。
对于企业来讲,应该如何获取数据呢
实际上,企业可以通过做两件事情来充分获取数据: 首先在网站上放一些商品,其次是对网站做出一系列的营销动作 ,并通过推广让用户看到这些动作。
当用户收到营销线索后,就会做出一系列的动作,例如购买、评价等,最后就会生成很多的数据。
郑泉表示,在不同的场景应用当中,由于用户的行为不同,会产生不同的数据。
例如用户从进入目标站点开始,通过一步步注册,投资或是下订单等等,最终完成支付,这就是用户体验的一个过程,或者说是用户生命周期的一个过程。
因此, 触发(Trigger)-期望(Expectation)-接近(Proximity)-知晓(Awareness)-联系(Connection)-行动(Action)-响应(Response)-评价(Evaluation) 这一系列用户体验的过程,就是用户体验的生命周期。
只有当整个循环过程走完之后,对外产生的营销价值才会体现出来,才能达到营销的目的。中间哪个环节出现问题,就需要针对哪个环节去做进一步地规划和处理。
因此,从用户体验生命周期上可以将用户的体验场景构成划分为 功能、活动、内容和分类引导 四个大的版块,每一个场景下对应着不同的用户行为,就会产生不同的用户行为数据。通过不同的数据可以对场景进行分析,并根据分析的结果进行调整和优化场景应用,这就形成了一个良性循环的过程。
由于场景化 大数据营销 与分析的工程量比较大,因此建议通过使用第三方产品来快速建立自己数据体系,待业务方向定型并能够产生规模化效益时,再考虑根据企业当下的情况发展适合自己的个性化产品。
本文由 99click 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/56228.html 。
数据分析
2018-06-20 16:00:00
作者:George Seif
编译:ronghuaiyang
不是所有的数据都是完美的。实际上,如果你拿到一个真实的完全均衡的数据集的话,那你真的是走了狗屎运了。大部分的时候,你的数据都会有某种程度上的不均衡,也就是说你的数据集中每个类别的数量会不一样。
我们为什么想要数据是均衡的?
在我们开始花时间做 深度学习 项目之前,非常重要的一点是需要理解为什么我们要做这个事情,确保我们的投入是值得的。当我们真正关心的是少数的类别的时候,类别均衡技术就是真正的必须的了。
比如说,我们想预测基于当前的市场情况,房子的属性,自己的预算,是否应该买房子。在这种情况下,如果我们买了,那么这是个正确的决定是非常重要的,因为这个是很大的一笔投资。同时,如果你的模型说不要买,而事实上需要买的话,这也没什么大不了的。你错过了这个,总是有其他的房子可以买的。但是如果买错了的话,那就是个大事了。
在上面的情况中,我们当然需要我们的少数“买”的类别要特别的准确,而“不买”的类别则无关紧要。但是在实际情况中,由于买的情况比不买的情况要少得多,我们的模型预测会偏向“不买”的类别,而“买”的类别的准确率则可能会很差。这就需要数据均衡了,我们可以让“买”类别的权重变大,来让“买”类别的预测更加准确。
但是如果我们对少数类别不关心怎么办呢?例如,我要做一个图像的分类,而你的类别的分布看起来是这样的:
第一眼看上去似乎数据均衡是有好处的。但是也许我们对那些少数的类别并不关心。也许我们的目的就是得到最高的准确率。在这种情况下,做数据均衡并没什么意义,因为大多数的准确率来自于包含了大量样本的类别中。第二,交叉熵的损失即使是在不均衡的数据的时候,也是趋向于得到最高的准确率。总的来说,我们的少数类别并没有对准确率有多少贡献,所以说,数据均衡并不需要。
综上所述,当我们遇到需要均衡数据的时候,有两个方法可以帮助我们办到:
权值均衡
权值均衡是在训练样本的时候,在计算loss的时候,通过权值来均衡数据的分布。正常情况下,每个类别在损失函数中的权值是1.0。但是有时候,当某些类别特别重要的时候,我们需要给该类别的训练样本更大权值。参考我们的买房的例子,由于“买”的类别的准确率非常的重要,训练样本中的这个类别应该对损失函数有更大的影响。
可以直接给对应的类别的样本的loss乘上一个因子来设定权值。在Keras中,我们可以这样: import keras class_weight = {"buy": 0.75, "don't buy": 0.25} model.fit(X_train, Y_train, epochs=10, batch_size=32, class_weight=class_weight)
我们创建了一个字典,其中,“买”类别为75%,表示了占据了75%的loss,因为比“不买”的类别更加的重要,“不买”的类别设置成了25%。当然,这两个数字可以修改,直到找到最佳的设置为止。我们可以使用这种方法来均衡不同的类别,当类别之间的样本数量差别很大的时候。我们可以使用权值均衡的方式来使我们的所有的类别对loss的贡献是相同的,而不用取费力的收集少数类别的样本了。
另一个可以用来做训练样本的权值均衡的是Focal loss。如下所示,主要思想是这样:在数据集中,很自然的有些样本是很容易分类的,而有些是比较难分类的。在训练过程中,这些容易分类的样本的准确率可以达到99%,而那些难分类的样本的准确率则很差。问题就在于,那些容易分类的样本仍然在贡献着loss,那我们为什么要给所有的样本同样的权值?
这正是Focal loss要解决的问题。focal loss减小了正确分类的样本的权值,而不是给所有的样本同样的权值。这和给与训练样本更多的难分类样本时一样的效果。在实际中,当我们有数据不均衡的情况时,我们的多数的类别很快的会训练的很好,分类准确率很高,因为我们有更多的数据。但是,为了确保我们在少数类别上也能有很好的准确率,我们使用focal loss,给与少数类别的样本更高的权值。focal loss使用Keras是很容易实现的: import keras from keras import backend as K import tensorflow as tf # Define our custom loss function def focal_loss(y_true, y_pred): gamma = 2.0, alpha = 0.25 pt_1 = tf.where(tf.equal(y_true, 1), y_pred, tf.ones_like(y_pred)) pt_0 = tf.where(tf.equal(y_true, 0), y_pred, tf.zeros_like(y_pred)) return -K.sum(alpha * K.pow(1. - pt_1, gamma) * K.log(pt_1))-K.sum((1-alpha) *K.pow( pt_0, gamma) * K.log(1. - pt_0)) # Compile our model adam = Adam(lr=0.0001) model.compile(loss=[focal_loss], metrics=["accuracy"], optimizer=adam)
过采样和欠采样
选择合适的类别的权重有时候比较复杂。做一个简单的频率倒数可能有时候效果也不好。Focal loss有点用,但是仍然会对所有的正确分类的样本都做权值的下降。另外一个数据均衡的方法就是直接的采样。下面的图给出了一个大概的说明.
在图像的两边,蓝色的类别比橘黄色的类别的样本多得多。这种情况下,我们在预处理时,有两种选择。
欠采样意思是从多数的类别中只采样其中的一部分的样本,选择和少数类别同样多的样本。这种采样保持了该类别原来的数据分布。这很容易,我们只需要少用点样本就可以让数据变得均衡。
过采样的意思是我们复制少数类别中的样本,使得数量和多数样本一样多。复制操作需要保持少数样本的原有的数据分布。我们不需要获取更多的数据就可以让数据集变得均衡。采样的方法是一个很好的类别均衡的方法,如果你发现类别权值很难做而且效果不好的时候,可以试试!
英文原文:https://towardsdatascience.com/handling-imbalanced-datasets-in-deep-learning-f48407a0e758
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66239.html 。
数据分析
2019-09-10 05:29:00
RFM是客户分析及衡量客户价值的重要模型之一,其中的R表示最近一次消费(Recency),F表示消费频率(Frequency),M表示消费金额(Monetary)。依据这三个指标RFM可以将客户动态分组,并进一步指导客户运营的下一步工作。本篇文章使用python的聚类算法创建一个粗糙的 RFM模型 。

1. 开始前的准备工作
首先是开始前的准备工作,这里除了常用的numpy和pandas以外,有几个库文件单独说明下,pymysql是python连接mysql进行数据提取的库,cluster用于聚类,此外还有一些库文件在本篇文章中并没有使用到,例如DecisionTreeClassifier,grid_search和cross_validation等等。这些会在后面对RFM模型进行进一步分类预测,模型持久化和依据RFM模型做内容推荐时使用到。因此先一起放在这里,后面的系列文章会进行使用说明。 #导入库文件
import numpy as np
import pandas as pd
import pymysql
from sklearn.cluster import KMeans
from sklearn.tree import DecisionTreeClassifier
import os
from sklearn import cross_validation
import matplotlib.pyplot as plt
from sklearn.externals import joblib
from math import sqrt
from sklearn import grid_search
from sklearn.ensemble import RandomForestClassifier
2. 从mysql提取RFM指标数据
原始的用户数据存储在mysql中,因此需要使用python连接mysql进行数据提取。下面是具体的代码和数据提取过程。 #连接数据库连接
db = pymysql.connect(host=””,user=” “,passwd=” “,port=,db=” ” ) # 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor() #计算并提取RFM指标的SQL语句
sql=”SELECT a.`user_id`,ABS(TIMESTAMPDIFF(YEAR,NOW(),DATE_FORMAT(MID(b.`id_no`,7,8),’%Y-%m-%d’))) AS age, a.`client_type`,a.`acct_bal`,a.`amount`,TIMESTAMPDIFF(DAY,NOW(),MAX(FROM_UNIXTIME(trans_time,’%y-%m-%d %H:%i:%s’))) AS R,COUNT(id) AS F,SUM(a.`amount`)AS M FROM qb_account_detail AS a JOIN qb_user_info AS b ON a.`user_id`=b.`user_id` WHERE a.`trans_time`> ‘1498838400’ AND a.`trans_type`=’201′ AND NOT ISNULL(id_no) AND id_no <> ‘null’ GROUP BY b.`id_no`;” # 使用 execute()  方法执行 SQL 查询
cursor.execute(sql)
895 # 使用 fetchall() 方法获取全部数据.
data = cursor.fetchall() #查看数据
print(data)

使用提取的数据创建DataFrame数据表,取名为rfm。 #创建RFM数据表
columnlist=[‘user_id’,’age’,’client_type’,’acct_bal’,’amount’,’recency’,’frequency’,’monetary’]
rfm=pd.DataFrame.from_records(list(data),columns=columnlist)
查看数据表的前5行数据,这里除了创建RFM模型必要的指标以外,还保留了用户ID,年龄等信息,也是为了后面的分类和推荐使用。 #查看数据表前5行
rfm.head()

3. 使用K-Means进行RFM模型聚类
单独提取数据表中frequency,monetary,和recency三个字段进行聚类。首先转化为数组。 #转化为数组
rfm_new = np.array(rfm[[‘frequency’,’monetary’,’recency’]]) #设置随机数
seed=9
设置KMeans模型参数,并代入指标数据进行拟合。 #对数据进行聚类
clf=KMeans(n_clusters=8,random_state=seed) #拟合模型
clf=clf.fit(rfm_new)
查看KMeans聚类后的8个质心点的值。 #查看聚类质心点
clf.cluster_centers_

在原始数据表中对每个用户进行聚类结果标记。这样我们就可以知道每个用户ID在RFM模型中所属的类别。 #对原数据表进行类别标记
rfm[‘label’]= clf.labels_ #查看标记后的数据
rfm.head()

查看RFM模型8个类别中的用户数量。 #计算每个类别的数据量
c=rfm[“label”].value_counts()

本篇文章的内容到这里结束了,后面的系列文章我们还会使用决策树学习用户聚类的结果,然后对新用户进行价值分类的预测,或根据前端渠道数据更准确的捕获高价值客户。以及对现有聚类后的用户连接更多的行为数据,对不同类别的用户甚至新用户进行内容推荐,进一步提升用户的价值。更兴趣的朋友请继续关注。
本文为专栏文章,来自:蓝鲸,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/54830.html 。
数据分析
2018-06-01 06:04:00
大数据 文摘出品 编译:汪小七、张馨月、云舟
主成分分析 (PCA:Principal Component Analysis)非常有助于我们理解高维数据,我利用Stack Overflow的每日访问数据对主成分分析进行了实践和探索,你可以在rstudio :: conf 2018上找到其中一篇演讲的录音。演讲的重点主要是我对于PCA的理解,而这篇文章中,我将主要介绍我是如何实现PCA的,以及我是如何制作演讲中使用到的图表的。
rstudio :: conf 2018
https://www.rstudio.com/resources/videos/understanding-pca-using-shiny-and-stack-overflow-data/
高维数据
此次分析使用的是去年Stack Overflow上注册用户访问量前500的标签数据。为了简化处理,本文只使用了10%的注册流量数据进行分析,但实际上我已经对所有流量数据进行了类似的分析,并获得了几乎相同的结果。
标签数据
https://stackoverflow.com/tags
现在,把每个注册用户都想象成高维空间中的一个点,空间的坐标轴是R、JavaScript、C++等技术。那么,在这个高维空间中,做相似工作的人对应的点就会彼此接近。接下来PCA会把这个高维空间转变成一个新的具有特殊特征的“特殊”高维空间。
在数据库中适当地抽取数据后,最开始的数据看起来就像下面这样: library(tidyverse)
library(scales)
tag_percents
## # A tibble: 28 , 791 , 663 x 3
##     User Tag                      Value
##    < int >                    
##   1     1 exception-handling     0.000948
##   2     1 jsp                   0.000948
##   3     1 merge                 0.00284
##   4     1 casting               0.00569
##   5     1 io                     0.000948
##   6     1 twitter-bootstrap -3   0.00569
##   7     1 sorting               0.00474
##   8     1 mysql                 0.000948
##   9     1 svg                   0.000948
## 10     1 model-view-controller 0.000948
## # … with 28 , 791 , 653 more rows
可以看出,数据很干净,每行只有用户编号和技术标签。这里的User列是随机ID,而非Stack Overflow的标识符。在Stack Overflow中,我们公开了大量数据,但流量数据(即哪些用户访问过哪些问题)是没有公开的。
对高维数据进行真正的匿名化其实是非常困难的,而这里为了进行脱敏处理,我的做法是随机化数据顺序,并用数字替换Stack Overflow的标识符。Value列表示过去一年该用户对该标签的浏览量占该标签总浏览量的比例。
部分数据链接:
https://stackoverflow.blog/2010/06/13/introducing-stack-exchange-data-explorer/
https://cloud.google.com/bigquery/public-data/stackoverflow,
https://meta.stackexchange.com/questions/19579/where-are-the-stack-exchange-data-dumps
先不考虑脱敏的问题,我们首先看看用户主要浏览的技术标签有哪些,这张图表给了我们一个直观的概念。. tag_percents %>%
group_by(Tag) %>%
summarise(Value = mean(Value)) %>%
arrange(desc(Value)) %>%
top_n( 15 ) %>%
mutate(Tag = reorder(Tag, Value)) %>%
ggplot(aes(Tag, Value, label = Tag, fill = Tag)) +
geom_col(alpha = 0.9 , show.legend = FALSE) +
geom_text(aes(Tag, 0.001 ), hjust = 0 ,
color = “white” , size = 4 , family = “IBMPlexSans-Bold” ) +
coord_flip() +
labs (x = NULL , y = “Average % of a user’s traffic” ) +
scale_y_continuous(labels = percent_format(), expand = c( 0.015 , 0 )) +
theme(axis.text.y=element_blank())
实施PCA
我们喜欢干净的数据,一是因为它就是我们查询数据库的结果,二是因为它可用于实现PCA等机器学习算法的探索性 数据分析 。为了实现PCA,我们需要一个矩阵,在这个例子里稀疏矩阵(sparse matrix)就是最佳选择——因为大多数开发人员只访问一小部分技术标签,因此我们的矩阵中会有很多零。tidytext软件包中有一个函数cast_sparse(),它可以把上面的数据转换为稀疏矩阵。 sparse_tag_matrix <- tag_percents %>%
tidytext::cast_sparse(User, Tag, Value)
R中有几个实现PCA的算法是体会不到稀疏矩阵的美感的,比如prcomp()——此算法的第一步就是将刚刚制作好的稀疏矩阵强制转换成一个常规矩阵,然后你要在那里干坐一辈子等它运行完,因为在它运行的时候电脑根本没有内存让你去做其他事了(别问我是怎么知道的)。当然,R中也有一个程序包利用了稀疏矩阵的优势——irlba。
在建立模型前,也别忘记先用scale()函数将你的矩阵规范化,这对于PCA的实现非常重要。 tags_scaled <- scale(sparse_tag_matrix)
tags_pca <- irlba::prcomp_irlba(tags_scaled, n = 64 )
其中prcomp_irlba()函数的参数n代表我们想要得到的主成分个数。
那么这一步究竟发生了什么?我们会在接下来的章节中慢慢介绍。 class (tags_pca)
## [ 1 ] “irlba_prcomp” “prcomp”
names(tags_pca)
## [ 1 ] “scale”     “totalvar” “sdev”     “rotation” “center”   “x”
PCA的结果分析 我喜欢处理数据框格式的数据,所以接下来我要用tidy()函数来整理我的PCA结果,以便用dplyr包处理输出结果和用ggplot2绘图。 broom包并不能完美地处理irlba的输出结果,所以我会将它们与我自己的数据框经过一点修整后合并到一起。 library(broom)
tidied_pca <- bind_cols(Tag = colnames(tags_scaled),
tidy(tags_pca$rotation)) %>%
gather(PC, Contribution, PC1:PC64)
tidied_pca
## # A tibble: 39 , 232 x 3
##    Tag                   PC    Contribution
##                            
##   1 exception-handling    PC1       -0.0512
##   2 jsp                   PC1         0.00767
##   3 merge                 PC1       -0.0343
##   4 casting               PC1       -0.0609
##   5 io                    PC1       -0.0804
##   6 twitter-bootstrap -3   PC1         0.0855
##   7 sorting               PC1       -0.0491
##   8 mysql                 PC1         0.0444
##   9 svg                   PC1         0.0409
## 10 model-view-controller PC1         0.0398
## # … with 39 , 222 more rows
注意到这里我的数据框的每一行只有一个技术标签及它构成的主成分。
那么从整体来看,这些结果又是什么样子的呢?请见下图: tidied_pca %>%
filter(PC %in% paste0( “PC” , 1 : 6 )) %>%
ggplot(aes(Tag, Contribution, fill = Tag)) +
geom_col(show.legend = FALSE, alpha = 0.8 ) +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()) +
labs (x = “Stack Overflow tags” ,
y = “Relative importance in each principal component” ) +
facet_wrap(~ PC, ncol = 2 )
很漂亮吧有木有!我们上面看的是前六个主成分,图中x轴上是按字母顺序排列的单个Stack Overflow标签,纵轴表示该技术标签对这一PC的贡献度。我们也可以看出有关联的技术可能是以相同的字母开头,故而会排列在一起,例如PC4中的橙色等。
下面让我们主要分析一下第一个主成分的构成。 tidied_pca %>%
filter(PC == “PC1” ) %>%
top_n( 40 , abs (Contribution)) %>%
mutate(Tag = reorder(Tag, Contribution)) %>%
ggplot(aes(Tag, Contribution, fill = Tag)) +
geom_col(show.legend = FALSE, alpha = 0.8 ) +
theme(axis.text.x = element_text(angle = 90 , hjust = 1 , vjust = 0.5 ),
xis.ticks.x = element_blank()) +
labs (x = “Stack Overflow tags” ,
y = “Relative importance in principle component” )
现在我们可以看到哪些技术标签对这个成分有贡献。从贡献为正的标签来看,主要有前端Web开发技术,如HTML、JavaScript、jQuery、CSS等。从贡献为负的标签来看,主要有Python,C ++以及低级技术词汇,如字符串(strings)、列表(lists)等。这意味着Stack Overflow的用户之间最大的差异在于他们是使用前端Web技术更多一些还是Python和一些低级技术更多一些。
那么第二个主成分又是怎样的呢? tidied_pca %>%
filter(PC == “PC2” ) %>%
top_n( 40 , abs (Contribution)) %>%
mutate(Tag = reorder(Tag, Contribution)) %>%
ggplot(aes(Tag, Contribution, fill = Tag)) +
geom_col(show.legend = FALSE, alpha = 0.8 ) +
theme(axis.text.x = element_text(angle = 90 , hjust = 1 , vjust = 0.5 ),
axis.ticks.x = element_blank()) +
labs (x = “Stack Overflow tags” ,
y = “Relative importance in principle component” )
第一个主成分是两种软件工程的对比,但第二个主成分则更像是一个结果为是/否的二分类变量。它告诉了我们开发人员工作中是否使用C#、.NET、Visual Studio和Microsoft技术堆栈的其余部分。这意味着Stack Overflow的用户之间的第二大差异在于他们是否访问了这些类型的微软技术问题。
我们可以继续研究其他的主成分,了解更多关于Stack Overflow技术生态系统的知识,但其实我已经在视频中进行了相关内容的讲解,也研究了那些与我们数据科学人员相关的技术。我还制作了一个名叫Shiny的应用程序,在上面你可以随意选择你想研究的主成分。而且我敢打赌,只要你用过一次Shiny,你就能想象到我是如何开始这项研究的!
高维平面的映射PCA最酷的地方在于它能帮我们思考和推理高维数据,其中一项功能就是将高维数据映射到可绘图的二维平面上。接下来我们来看看它是如何做到这一点的。
其实这一步用broom :: augment()就能实现,并且还能计算出每个成分对整个数据集方差解释的百分比。 percent_variation <- tags_pca$sdev^ 2 / sum(tags_pca$sdev^ 2 )
augmented_pca <- bind_cols(User = rownames(tags_scaled),
tidy(tags_pca$x))
augmented_pca
## # A tibble: 164 , 915 x 65
##    User     PC1    PC2    PC3     PC4     PC5    PC6    PC7   PC8    PC9
##                    
##   1 1       2.16   5.70   1.63     0.967   0.0214 -1.37   -1.98   -2.94 -0.860
##   2 2       0.350   3.38   -6.12   -10.0     1.39     0.882   5.35   -3.30 -2.73
##   3 3       2.75   -3.91   0.801   1.73   1.24   -0.837   2.03   2.76   0.300
##   4 4       3.27   -3.37   -1.00     2.39   -3.59   -2.68   0.449 -2.82 -1.25
##   5 5       9.44   -4.24   3.88   -1.62   -2.96     4.01   -1.32   -3.54   3.25
##   6 6       5.47   -5.13   1.57     2.94   -0.170   0.342   3.34   6.09   1.72
##   7 7       4.30   -0.442 -1.52     0.329 -2.13     0.908 -3.30   -5.02 -1.39
##   8 8     -0.691   0.668 -1.76   -7.74   -2.94   -5.28   -9.71   5.28   0.732
##   9 9       3.84   -2.65   0.760   1.34   2.06   -0.927   1.35   5.11 -2.69
## 10 10     3.23   4.13   2.81     2.68   -1.12   -1.30   -0.319 -1.23 -0.723
## # … with 164 , 905 more rows, and 55 more variables: PC10 ,
## #   PC11 , PC12 , PC13 , PC14 , PC15 ,
## #   PC16 , PC17 , PC18 , PC19 , PC20 ,
## #   PC21 , PC22 , PC23 , PC24 , PC25 ,
## #   PC26 , PC27 , PC28 , PC29 , PC30 ,
## #   PC31 , PC32 , PC33 , PC34 , PC35 ,
## #   PC36 , PC37 , PC38 , PC39 , PC40 ,
## #   PC41 , PC42 , PC43 , PC44 , PC45 ,
## #   PC46 , PC47 , PC48 , PC49 , PC50 ,
## #   PC51 , PC52 , PC53 , PC54 , PC55 ,
## #   PC56 , PC57 , PC58 , PC59 , PC60 ,
## #   PC61 , PC62 , PC63 , PC64
注意到这里我其实有更广阔的数据框可供使用,并且我还没有使用gather()函数——为了便于绘图。对象percent_variation是一个矢量,它包含了每个主成分对整个数据集的方差解释的百分比。 augmented_pca %>%
mutate(User = as.integer(User)) %>%
filter(User %% 2 == 0 ) %>%
ggplot(aes(PC1, PC2)) +
geom_point(size = 1.3 , color = “midnightblue” , alpha = 0.1 ) +
labs (x = paste0( “Principal component 1 (“ ,  percent(percent_variation[ 1 ]), “)” ),
y = paste0( “Principal component 2 (“ ,  percent(percent_variation[ 2 ]), “)” ),
title = “Projection of Stack Overflow traffic on to the first two principal components” ,
subtitle = “The very high dimensional space can be projected down onto components we have explored” )
可以看出,为了尽量减少过度绘图,这个图里我把每两个人用一个点表示。还记得第一个主成分是前端开发人员到Python和低级技术人员的横向拓展,而第二个主成分则全部是关于微软技术堆栈的。由上我们可以看到描述Stack Overflow标签的高维数据是如何投影到前两个主成分的。可以注意到我已在每个轴中添加了方差百分比,同时这些数字并不是很高,这也与我们现实生活中的情况相吻合,即事实上Stack Overflow的用户之间差异很大,如果你想将这些主成分中的任意一个用于降维或作为模型中的预测变量,请慎重考虑。
应用
说到现实生活,我发现PCA非常有助于我们理解高维数据集。比如说,基于完全相同的数据,我最近在使用PCA探索的另一个问题是亚马逊可能考虑让哪些城市成为其第二总部。实际上,PCA给出的主成分结果以及不同技术对其的贡献率已经不尽相同——因为几个月已经过去了,而且用户们在高维空间中也不是完全静止的。如果你有任何问题或反馈,请及时联系我。
相关报道:
https://juliasilge.com/blog/stack-overflow-pca/
本文为专栏文章,来自:大数据文摘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/54816.html 。
数据分析
2018-06-01 06:00:00
原文地址:Analysing 1.4 billion rows with python 原文作者:Steve Stagg 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Ryden Sun 校对者:luochen1992 allen
Google Ngram viewer是一个有趣和有用的工具,它使用谷歌从书本中扫描来的海量的数据宝藏,绘制出单词使用量随时间的变化。举个例子,单词  Python  (区分大小写) :
这幅图来自:books.google.com/ngrams/grap…,描绘了单词 ‘Python’ 的使用量随时间的变化。
它是由谷歌的 n-gram  数据集 驱动的,根据书本印刷的每一个年份,记录了一个特定单词或词组在谷歌图书的使用量。然而这并不完整(它并没有包含每一本已经发布的书!),数据集中有成千上百万的书,时间上涵盖了从 16 世纪到 2008 年。数据集可以免费从这里下载。
我决定使用 Python 和我新的数据加载库 PyTubes 来看看重新生成上面的图有多容易。
挑战
1-gram 的数据集在硬盘上可以展开成为 27 Gb 的数据,这在读入 python 时是一个很大的数据量级。Python可以轻易地一次性地处理千兆的数据,但是当数据是损坏的和已加工的,速度就会变慢而且内存效率也会变低。
总的来说,这 14 亿条数据(1,430,727,243)分散在 38 个源文件中,一共有 2 千 4 百万个(24,359,460)单词(和词性标注,见下方),计算自 1505 年至 2008 年。
当处理 10 亿行数据时,速度会很快变慢。并且原生 Python 并没有处理这方面数据的优化。幸运的是,numpy 真的很擅长处理大体量数据。 使用一些简单的技巧,我们可以使用 numpy 让这个分析变得可行。
在 python/numpy 中处理字符串很复杂。字符串在 python 中的内存开销是很显著的,并且 numpy 只能够处理长度已知而且固定的字符串。基于这种情况,大多数的单词有不同的长度,因此这并不理想。
Loading the data 下面所有的代码/例子都是运行在  8 GB 内存  的 2016 年的 Macbook Pro。 如果硬件或云实例有更好的 ram 配置,表现会更好。
1-gram 的数据是以 tab 键分割的形式储存在文件中,看起来如下: Python 1587 4 2 Python 1621 1 1 Python 1651 2 2 Python 1659 1 1
每一条数据包含下面几个字段: 1. Word 2. Year of Publication 3. Total number of times the word was seen 4. Total number of books containing the word
为了按照要求生成图表,我们只需要知道这些信息,也就是: 1. 这个单词是我们感兴趣的? 2. 发布的年份 3. 单词使用的总次数
通过提取这些信息,处理不同长度的字符串数据的额外消耗被忽略掉了,但是我们仍然需要对比不同字符串的数值来区分哪些行数据是有我们感兴趣的字段的。这就是 pytubes 可以做的工作: import tubes FILES = glob.glob(path.expanduser( "~/src/data/ngrams/1gram/googlebooks*" )) WORD = "Python" one_grams_tube = (tubes. Each (FILES)    .read_files()    .split()    .tsv(headers= False )    .multi( lambda row: (        row. get ( 0 ).equals(WORD.encode( 'utf-8' )),        row. get ( 1 ).to( int ),        row. get ( 2 ).to( int )    )) )
差不多 170 秒(3 分钟)之后,  one grams_ 是一个 numpy 数组,里面包含差不多 14 亿行数据,看起来像这样(添加表头部为了说明): ╒═══════════╤════════╤═════════╕ │   Is_Word │   Year │   Count │ ╞═══════════╪════════╪═════════╡ │         0 │   1799 │       2 │ ├───────────┼────────┼─────────┤ │         0 │   1804 │       1 │ ├───────────┼────────┼─────────┤ │         0 │   1805 │       1 │ ├───────────┼────────┼─────────┤ │         0 │   1811 │       1 │ ├───────────┼────────┼─────────┤ │         0 │   1820 │     ... │ ╘═══════════╧════════╧═════════╛
从这开始,就只是一个用 numpy 方法来计算一些东西的问题了:
每一年的单词总使用量
谷歌展示了每一个单词出现的百分比(某个单词在这一年出现的次数/所有单词在这一年出现的总数),这比仅仅计算原单词更有用。为了计算这个百分比,我们需要知道单词总量的数目是多少。
幸运的是,numpy让这个变得十分简单: last_year = 2008 YEAR_COL = '1' COUNT_COL = '2' year_totals, bins = np.histogram(    one_grams[YEAR_COL],    density= False ,    range=( 0 , last_year+ 1 ),    bins=last_year + 1 ,    weights=one_grams[COUNT_COL] )
绘制出这个图来展示谷歌每年收集了多少单词:
很清楚的是在 1800 年之前,数据总量下降很迅速,因此这回曲解最终结果,并且会隐藏掉我们感兴趣的模式。为了避免这个问题,我们只导入 1800 年以后的数据: one_grams_tube = (tubes. Each (FILES)    .read_files()    .split()    .tsv(headers= False )    .skip_unless( lambda row: row. get ( 1 ).to( int ).gt( 1799 ))    .multi( lambda row: (        row. get ( 0 ).equals(word.encode( 'utf-8' )),        row. get ( 1 ).to( int ),        row. get ( 2 ).to( int )    )) )
这返回了 13 亿行数据(1800 年以前只有 3.7% 的的占比)
Python 在每年的占比百分数
获得 python 在每年的占比百分数现在就特别的简单了。
使用一个简单的技巧,创建基于年份的数组,2008 个元素长度意味着每一年的索引等于年份的数字,因此,举个例子,1995 就只是获取 1995 年的元素的问题了。
这都不值得使用 numpy 来操作: word_rows = one_grams[IS_WORD_COL] word_counts = np.zeros(last_year+ 1 ) for >in one_grams[word_rows]:    word_counts[year] += ( 100 *count) / year_totals[year]
绘制出 word_counts 的结果:
形状看起来和谷歌的版本差不多
实际的占比百分数并不匹配,我认为是因为下载的数据集,它包含的用词方式不一样(比如:Python_VERB)。这个数据集在 google page 中解释的并不是很好,并且引起了几个问题: 人们是如何将 Python 当做动词使用的? ‘Python’ 的计算总量是否包含 ‘Python_VERB’?等
幸运的是,我们都清楚我使用的方法生成了一个与谷歌很像的图标,相关的趋势都没有被影响,因此对于这个探索,我并不打算尝试去修复。
性能
谷歌生成图片在 1 秒钟左右,相较于这个脚本的 8 分钟,这也是合理的。谷歌的单词计算的后台会从明显的准备好的数据集视图中产生作用。
举个例子,提前计算好前一年的单词使用总量并且把它存在一个单独的查找表会显著的节省时间。同样的,将单词使用量保存在单独的数据库/文件中,然后建立第一列的索引,会消减掉几乎所有的处理时间。
这次探索  确实  展示了,使用 numpy 和 初出茅庐的 pytubes 以及标准的商用硬件和 Python,在合理的时间内从十亿行数据的数据集中加载,处理和提取任意的统计信息是可行的,
语言战争
为了用一个稍微更复杂的例子来证明这个概念,我决定比较一下三个相关提及的编程语言: Python,Pascal,  和  Perl.
源数据比较嘈杂(它包含了所有使用过的英文单词,不仅仅是编程语言的提及,并且,比如,python 也有非技术方面的含义!),为了这方面的调整, 我们做了两个事情: 只有首字母大写的名字形式能被匹配(Python,不是 python) 每一个语言的提及总数已经被转换到了从 1800 年到 1960 年的百分比平均数,考虑到 Pascal 在 1970 年第一次被提及,这应该有一个合理的基准线。
结果:
对比谷歌 ( 没有任何的基准线调整 ):
运行时间: 只有 10 分钟多一点
代码: gist.github.com/stestagg/91…
以后的 PyTubes 提升
在这个阶段,pytubes 只有单独一个整数的概念,它是 64 比特的。这意味着 pytubes 生成的 numpy 数组对所有整数都使用 i8 dtypes。在某些地方(像 ngrams 数据),8 比特的整型就有点过度,并且浪费内存(总的 ndarray 有 38Gb,dtypes 可以轻易的减少其 60%)。 我计划增加一些等级 1,2 和 4 比特的整型支持(github.com/stestagg/py…)
更多的过滤逻辑 – Tube.skip_unless() 是一个比较简单的过滤行的方法,但是缺少组合条件(AND/OR/NOT)的能力。这可以在一些用例下更快地减少加载数据的体积。
更好的字符串匹配 —— 简单的测试如下:startswith, endswith, contains, 和 is one of 可以轻易的添加,来明显地提升加载字符串数据是的有效性。
一如既往,非常欢迎大家 patches!
本文为专栏文章,来自:编程派,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/54500.html 。
数据分析
2018-05-29 00:08:00
你已经听我说过很多次了:想要精通数据科学,你必须不断地实践。
你需要在单个技术或者功能上“小试牛刀”,但同样需要在大项目中工作来锻炼你的综合能力。
为了能够得到锻炼,我的建议是在网络上寻找合适大小的数据集并将它们绘制出来。
在维基百科上你能够找到近乎无穷的优质数据集。维基百科的优点是其中的许多数据集比较小而且保存得很好,同时它们又相对来说比较干净,这使得我们能够在处理这些数据的时候面对恰如其分的挑战。
本周,我们将绘制一些经济数据来作为一个快速的演示。
使用ggplot2绘制公共债务地图
在这个部分,我们将从维基百科上获取数据并使用ggplot2将它们绘制出来。
这听上去挺简单,但是千万不要小瞧了它的复杂程度。我们实际上使用了多个技术并将它们杂糅在一起来完成这个任务。
如果你是一个新手,那你需要非常仔细的钻研代码。你需要将代码拆分开来,识别其中使用到的具体的程序包和函数,并确保你了解它们(80%所涉及的部分与dplyr和ggplot2函数包有关,确保你熟练掌握它们)。
如果你已经处在进阶阶段并且了解绝大多数R中的数据科学工具包,那么你应该关注的是这些工具是如何被整合在一起的。
不要只是复制代码然后运行一遍。要去学习代码的撰写技巧和结构、代码中出现的函数的功能和作用。通过不断学习别人的代码,你能够成为一个更优秀的数据科学家。
在代码块的末尾我们创建了世界公共债务地图。接下来,我们将会以它为基础绘制出两张不同的地图。首先是世界范围的完整地图。
接着,我们把目光放在欧洲地区并只绘制出世界地图的对应部分。为了能够做到这一步,我们使用coord_cartesian()函数指定一个更加具体的经纬度坐标。这实际上是将世界地图的一个特定部分放大。
本文为专栏文章,来自:数据工匠,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/53657.html 。
数据分析
2018-05-24 18:29:00
本文为雷锋字幕组编译的技术博客,原标题 Matplotlib Plotting Guide, 作者为 Prince Grover。
翻译 | 李振   于志鹏    整理 |  凡江
大多数人不会花大量时间去学 matplotlib 库,仍然可以实现绘图需求,因为已经有人在 stackoverflow、github 等开源平台上提供了绝大多数画图问题的解决方案。我们通常会使用 google 来完成绘图需求。至少我是这样。
那学 matplotlib 库有什么用?答案是:可以节约搜索时间。掌握 matplotlib 的速查表并了解其基本接口,根据个性需求从众多资源中编辑我们的绘图,从长期来看会节约很多的时间。
大部分内容取自以下 2 个链接,建议也去阅读一下。
https://realpython.com/python-matplotlib-guide/#why-can-matplotlib-be-confusing
https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Python_Matplotlib_Cheat_Sheet.pdf
matplotlib 是一个基于 Python 的 2D 绘图库,其可以在跨平台的在各种硬拷贝格式和交互式环境中绘制出高图形。 一个有趣的现象。为什么引用库总采用 import matplotlib.pyplot as plt 的方式呢?
因为使用例如 pylab import * 或者 %pylab 是一个非常不好的方式,matplotlib 官方不建议这样使用,具体原因如下:
由于历史原因,from pylab import * 仍然存在,但是强烈建议不要这样使用。这样做会遮蔽 Python 的内置函数进而占用命名空间,导致难以追踪的 bugs。想要实现零输入获得 IPython 集成,推荐使用 %matplotlib 命令。 来源 : https://matplotlib.org/users/shell.html#using-matplotlib-in-a-python-shell 使用 matplotlib 绘制不同类型的图像是很容易的,有很多文档和教程。最重要的是,了解最佳的绘图方式。如何使用 axes,subplots 等。这篇文章主要针对这些问题。
1.内联绘图和 % matplotlib 
%matplotlib 命令可以在当前的 Notebook 中启用绘图。这个命令提供一个可选参数,指定使用哪个 matplotlib 后端。绝大多数情况下,Notebook 中都是使用 inline 后台,它可以在 Notebook 中嵌入绘图。另一个选项是 qt 后台,它在侧窗口打中打开 Matplotlib 交互 UI 。
Matlibplot 提供了多种绘图 UI ,可进行如下分类 : 弹出窗口和交互界面: %matplotlib qt 和 %matplot tk 非交互式内联绘图: %matplotlib inline 交互式内联绘图: %matplotlib notebook-->别用这个,它会让开关变得困难。
2.理解 matplotlib 对象结构
pyplot 是一个 matplotlib 面向对象的函数接口。
plt.gca()
它返回当前 plot() 关联的轴
如果不使用 plt.close(),则会显示出空的图形。因为在开始时使用了 inline 命令。
axis_id 仍然是相同的,但是当我们移动到另一个 Notebook 块时,plt.gca() 会发生变化。
Setter 和 Getter
Getter 和 Setter 方法用于捕获当前或任意 axies 以及对其进行修改。我们可能需要修改标题、颜色、图列、字体等。有两种方法:
1. 使用 fig.axes[i] 指定要抓取的 axes,使用 setter 的 getter 对 axies 对象进行调用。在上面的例子中,只有一个 axes,所以我们调用 axes[0]。
2. 我们可以直接使用 plt.bla()   调用当前 axis(其中,bla 可以是 title(),legend(),xlabel()等)。这是 matlibplot 面向对象的一种函数。这个函数让修改当前的 axes 变得容易。比 1 的方法更常用。
当我们使用 axes[i] 时,我们可以调用任何之前的代码块中的任何 axes 对象,但是调用 plt.bla(),会在每个代码块中创建新的 axes 对象,并只调用当前对象。因此,上面例子中,只在 plt.title() 被调用时,才创建新 plt 对象。
重要观察:我们通常在当前 axis 对象上调用 plt.bla(),这种语法使得每个代码块中的 axis 对象都是新创建的。但是通过调用 fig.axes[0],我们也可以从任何代码块中处理之前的 axes 对象。
这是 stateless(object oriented) 方法,并可以自定义,当图像变得复杂时,这样做很方便。
所以,我建议是使用 fig,ax = plt.subplots(_) 先解压 axes 和 figure,并给它们分配给一个新的变量。然后,可以对这些变量使用 Getter 和 Setter 方法进行绘图中的更改。此外,这使得我们能够在多个 axes 上做工作,而不是只在一个当前 axes 上。pyplot 使用 1 次创建子图,然后使用 OO 方法。
结论:从现在开始,我使用 plt.subpots() 来完成不同的绘图。 (如果有人认为这个观点是错误的,请纠正我)
3.matplotlib 图像剖析
来自: https://matplotlib.org/faq/usage_faq.html
4.绘图的基本例子
如何作图的基本例子,涵盖面向对象绘图的各个方面。请仔细阅读。

总结上面的例子: 我们创建 1 行和 2 列的图形。即,1 行和 2 列中的 2 个 axes 对象。 我们分别自定义 ax1 和 ax2。可以看到,我们可以将 Y-ticks 移动到右边的第二图形中。
5.二维网格的绘制
subplot2grid
需要做什么?
观察下面的绘图格式。
思路是把上面的图形考虑成为 2×4 网格。然后将多个网格分配给单个图以容纳所需的图形。

重点: 我们可以使用 subplot2grid 定制我们的绘图布局。 我们可以用 plt.figure() 创建无 axes 对象的图形,然后手动添加 axes 对象。 我们可以使用 fig.suptitle() 来设置整个图形的总标题。
6.颜色,颜色条,RGB 数组和颜色图谱
我们已经介绍了 ax.plot(),ax.scatter(),ax.bar() 和 ax.hist() 等基本图形操作,另一个更常用的函数是 ax.imshow(),它用来显示彩色图或图像/RGB 数组。

7.线条样式和线条宽度
改变线条宽度、颜色或风格。

8.基本的数据分布
EDA 过程中的必要操作。
9.二维数组的等高线图和颜色网格图
热像图(颜色网格图)和等高线图在很多情况下都有助于可视化 2D 数据。
10.图像的调整、修改边缘坐标和标度
最后调整细节,让绘图变得更好看。
11.标度的限制和自动调整

需要注意的事情: 填充(padding)自动设置 X 轴或 Y 轴网格标度 我们可以使用 xlim,ylim 设置 x,y 的刻度限制
12.技巧

13.轴线
14.结束
博客原址:  https://www.kaggle.com/grroverpr/matplotlib-plotting-guide/notebook
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2018-05-22 23:43:00
本次将为大家简单分享介绍几个GitHub上 数据分析 相关的项目库,包括 图像处理项目库、数据集项目库 以及 学习资源项目库 。
首先介绍一下GitHub:GitHub是一个通过Git进行版本控制的软件源代码托管服务托管平台,于2008年4月正式上线,截止上个月已经成立十周年。目前,GitHub上有超过两千七百万用户以及超过八千万代码库,是一个大家学习、分享和创建软件的社区。
在GitHub,用户可以十分轻易地找到海量的开源代码并下载到本地或添加到自己的GitHub项目库中。项目库涉及的题材种类丰富,譬如比特币和众多区块链项目代码库也托管在GitHub。
除了软件开发方面的代码库,机器学习也是GitHub 上的热门话题,在machine learning的话题下有近一万七千个开源项目库(传送门:https://github.com/topics/machine-learning),从谷歌的tensorflow,到机器学习方面的scikit-learn再到微软的Cognitive Toolkit (CNTK),众多广受好评的项目,都可以找到。
下面开始本次 数据分析 相关的项目库的介绍:
  1  图像处理库
想要遮挡住合影中意外闯入的不慎闯入的陌生人?想要消除桌子上意外多出的水杯?在图像处理库这方面随缘推荐person-blocker项目库帮您实现这项功能。
person-blocker于2018年3月份发布,是基于python的图像处理代码库。person-blocker库可以自动识别图像中物体进行识别并遮挡,该功能的实现是基于Mask_RCNN库对于常见物体进行识别区分,预训练模型则使用了Microsoft COCO: Common Objects inContext数据集。下图中的实例代码实现了遮挡斑马群旁边的长颈鹿的功能。
除了长颈鹿,还有80种元素(例如,人物、鸟类、电脑、等等)也可以用这可库进行识别和遮挡,而且代码运行过程中不需要使用图形处理器(GPU),需要修图的用户考虑一下哟~
地址:https://github.com/minimaxir/person-blocker
  2  数据集库
想要做好数据分析,高质量的数据集也是必不可少的,紧贴时事又干净清晰的数据集,在GitHub各种项目库中也有不少,您值得拥有。本次数据集方面推荐的项目库是 fivethirtyeight。
fivethirtyeight项目库由FiveThirtyEight网站提供(传送门:http://fivethirtyeight.com)。FiveThirtyEight,又称538,是一个专注于发布舆情调查、政治、经济和体育等相关题材博客的网站,曾先后被ESPN和ABCNews收购。
网站于2008年由 Nate Silver创办,命名灵感来自于美国大选中的选举团成员数目,网站初期用于发布美国总统选举的投票结果预测,后逐渐增加体育、经济生活等板块的数据分析类博客。创办人Nate Silver成功预测了2008年的美国总统选举中50个州的49个州的投票结果,在2009年被时代(Time)杂志列全球最有影响的100个人之一。
目前,除了总统选举结果预测项目,538网站上还有MLB,NBA等各大赛事的结果预测的项目,和诸多时事数据分析。点击下图看示例。
(图源:https://projects.fivethirtyeight.com/)
(图源:https://projects.fivethirtyeight.com/soccer-predictions/)
在GitHub上的FiveThirtyEight中,可以找到FiveThirtyEight网站里的博客以及项目中使用的数据和部分数据分析代码。数据库里的数据都是整理清洗好的,着重推荐给爱好时事,但苦于缺少数据来源的用户。此外,希望练习一下自己 数据可视化 展示能力的用户,这个库不要错过哟。
地址:https://github.com/fivethirtyeight/data
  3  数据分析学习资源库
Coursera、Stack Overflow、慕课网……随着互联网的发展及推广,各种开源在线学习资源层出不穷,GitHub上同样也有很多数据分析方面的学习资源可供大家参考。
数据分析学习资源库方面本次主要推荐两个库:data-science-ipython-notebooks(主要包含使用python进行数据分析的代码示例和解释说明)和The OpenSource Data Science Masters(数据科学相关知识的整合资源库)。
data-science-ipython-notebooks是由Donne Martin发布的数据科学代码库,该库以Jupyter Notebook(过去称为I Python Notebook)形式发布,用户可以清晰看到各种数据分析库所涉及的代码的应用实例,目前获得点赞数目超过一万二千次。下图中的示例展示了如何利用pandas对数据进行选择的代码,代码输入和输出结果以IPython Notebook形式呈现,方便阅读。
(图源:https://github.com/donnemartin/data-science-ipython-notebooks/blob/master/pandas/03.02-Data-Indexing-and-Selection.ipynb)
data-science-ipython-notebooks库中涉及的数据分析题材广泛,从数据处理方面的pandas,到机器学习方面的scikit-learn,深度学习方面的TensorFlow,Theano, Caffe, Keras也在持续更新。这个库很适合常用python进行数据分析处理的用户去了解代码功能。地址:https://github.com/donnemartin/data-science-ipython-notebooks
The Open Source DataScience Masters由数据科学家Clare Corthell维护的开源教学资源库,是一个比较全面地整合了数据科学方面各种学习资源的项目库。该库包含机器学习, 数据挖掘 方向的从入门到精通、从理论到操作技术所需的各种技能包以及相应的资源(例如在线课程、书籍、编程资料,等等)。下图中为在数据科学方面较为必须的数学技能列表(例如线性代数、线性规划、矩阵运算,等等),以及相应的线上课程学习资源和书籍推荐。
这个库推荐给想要比较系统的学习数据科学理论知识或者需要查找某些特别知识点的用户。地址:https://github.com/datasciencemasters/go
以上就是本次要分享的项目库,祝各位读者探索愉快!
本文为专栏文章,来自:KPMG大数据挖掘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/52851.html 。
数据分析
2018-05-20 07:40:00
写过论文或者正在写论文的人都知道,文献综述是论文的重要组成部分,也是导师审查的重点之一,要完成好这一部分的写作,免不了阅读大量文献,通常还会要求中英文献都要有,而且尽量参考权威期刊同时避免参考学位论文。下载文献的时候,在知网上点点点,选选选,翻翻翻,是不是还挺麻烦的?笔者在这里分享给大家一个相对轻松的方法。
在校时,有很多免费的学术资源供大家使用,但随着毕业,这些资源基本都得花钱啦(在校生们要好好珍惜这些资源)。没有免费资源怎么办呢?笔者在这里推荐百度学术,因为这里的外文文献相对还是比较多的。
那么,我们现在开始示范如何利用python批量下载文献。
配置: Python 3.6+Chrome
获取搜索结果页信息
打开百度学术(xueshu.baidu.com),输入关键词。
笔者这次主要是想阅读神经网络之父Geoffrey Hinton的论文,所以直接搜索关键词Geoffrey Hinton,在搜索结果页面右键选择检查,就可以查看到页面各部分的HTML标签。
找到每一个想要爬取的信息的HTML标签,就可以开始写 爬虫 了。
先导入需要用到的包,如果你是直接安装的anconda,那你只需要单独再安装一下bs4,打开终端使用安装命令:pip install beautifulsoup4即可安装。若只单独安装了python3.6,那么同样通过pip的方式安装pandas。re、os、requests、collections都是python的内置模块。
接着,创建一个名为paper的namedtuple,包含三个属性:title用来存放论文标题,author用来存放作者,abstract用来存放论文摘要
paper=namedtuple(‘paper’,[‘title’,’author’,’abstract’])
爬取论文主要用到BeautifulSoup中的find_all方法。find_all方法接收的参数实际是筛选条件。如find_all(‘div’,{‘class’:’abstract’})意味着寻找标签为div并且满足class标签等于‘abstract’的内容。返回的结果可能有多个,选取想要的结果的索引,然后用text属性获取其文本内容。
通常搜索结果会有多页,这里介绍两种方法来实现自动爬取多页结果: 在搜索结果页来回翻几页,观察网页url的变化,找到规律,写循环,直接访问各页面。
笔者找到的规律是:地址中有一个参数表示了第几页。于是根据你想爬取的页面数量,写一个简单的循环就可以实现。 通过审查页面上“下一页”的审查元素,获取其链向的地址,在爬取完当前页面内容后,继续爬取下一页。(这里不提供代码,有兴趣的读者可以自己实践,很简单)
对代码进行简单修改可以实现对爬取文献数量的精确控制。
获取文献详情页信息
上一步获取的url是每一篇文献的详情页,我们现在要在详情页获取文献标题,作者,摘要,以及免费下载地址。再把以上信息都放到一个DataFrame里面,便于管理。
免费下载地址中,有时会存在无法访问的情况,为了能够成功下载到文献,这段代码会获取文献详情页的所有免费下载地址。
如此,一个管理文献库的DataFrame的基本结构就做好了,由于存在重复的情况,需要按论文标题去一下重。最终得到去重后的DataFrame长这个样子:
下载文献到本地
现在可以利用下面这段代码开始自动下载文献到本地啦:
新建一个专门存放文献的文件夹 在python里直接用os里面的mkdir就可以:
如:os.mkdir(‘E://文献’)
打印出来的内容告诉我们有些链接确实下载不了,于是尝试其他链接,文献成功下载。打开文件夹,你就能看到文献啦!
文献管理表分析
至此,我们其实可以针对这张管理表做一个简单的分析。
比如,文献库里,都包含了哪些年份的文献,各年份有多少篇文献。
简单利用文献标题做一个词云图,看一下Hinton都在研究些什么主题。
(深度,神经网络,玻尔兹曼机,信念网络…)
在笔者所下载的这35篇文献中,Hinton一共和37位作者合作过,其中与
Roland Memisevic (蒙特利尔大学MILA机器学习机构计算机科学的教授)
Ilya Sutskever (openAI实验室的联合创始人) 都合作过3次,与大部分学者都只合作了一次。
此外,你还可以做很多有趣的分析,自己动手尝试尝试吧!
读完本文,你应该可以动手尝试下载相关主题的文献。后续,我们还将示范如何提取pdf中的文献内容,并进行分析和总结,进一步帮助大家写论文!
本文为专栏文章,来自:KPMG大数据挖掘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/52346.html 。
数据分析
2018-05-14 23:04:00
策划 & 编辑 | Natalie 组稿 | Natalie,Vincent 文章来源| AI前线公众号(ID:ai-front),转载请联系公众号负责人取得授权
Ladies and 乡亲们,争夺 数据分析 领域最好用编程语言的两大重量级选手: Python 和 R 语言,竟然宣布:合!作!了!
如果你身处 数据分析 领域,那么你一定遇到过或者听说过这个两难抉择——在进行数据分析时,到底使用哪种语言更好,R 还是 Python?
“最好的编程语言”之争旷日持久, 数据科学 领域也不例外。网上经常出现诸如“我想学习机器学习,我应该用哪个编程语言”或者“我想快速解决问题,我应该用 R 还是 Python”等这类问题。尽管这两种编程语言目前都是数据分析社区的佼佼者,但是它们仍然深陷“哪一种才是数据科学家的首选编程语言”的争论之中。
但是各位,从今往后,你们可以不用再纠结这个问题了。
数据科学领域最强编程语言之争
在介绍合作相关事宜之前,我们照例先回顾一下这两种编程语言的前世今生,以及他们在编程江湖当中的恩怨情仇。
前世今生
Ross Ihaka 和 Robert Gentleman 于 1995 年基于 S 语言创造了开源语言 R,目的是专注于提供更好和更人性化的方式做数据分析、统计和图形模型。
起初 R 主要是在学术和研究中使用,但近来工业界也发现了 R 的好,这使 R 成为在企业中使用的全球发展最快的统计语言之一。
而 Python 由 Guido van Rossem 创建于 1991 年,主要强调效率和代码的可读性。希望深入的数据分析或应用统计技术的程序员是 Python 的主要用户。
当你越需要在工程环境中工作,你会越喜欢 Python。它是一种灵活的语言,在处理一些新东西上表现很好,并且注重可读性和简单性,学习曲线比较平缓。
恩怨情仇
这两种编程语言是怎么结下梁子的?还得从机器学习和数据分析说起。
机器学习和数据分析之间的差异有些难以言明,但二者最主要的不同就在于:比起模型的可解释性,机器学习更加强调预测的准确性;而数据分析则更加看重模型的可解释性以及统计推断。
于是乎 ,由于 Python 更看重预测结果的准确性,它成为了机器学习的一把利器。而 R 作为一种以统计推断为导向的编程语言,在数据分析界也得到广泛应用。
但是,这并不是就给这二位定了性,除了各自的领域别的都干不成了。实际上,Python 也可以高效地完成数据分析工作,R 在机器学习中也具有一定的灵活性。它们都拥有相当多的资源库去实现彼此特定的函数功能,比如 Python 就有很多资源库来提高自己统计推断的能力,R 也有很多包可以提升预测的准确率。
由于二者的这些特性,网络上对于 Python 和 R 到底谁强谁弱的争论一直没有定论,就连在学界和业界的使用率也一直你追我赶。
不过,随着近几年 人工智能 的普及,越来越多学校开展了 Python 语言的编程课,转型人工智能的企业也加大了对 Python 语言的投入力度。根据 Stack Overflow 2018 年开发者调研报告显示:Python 的排名有所上升,今年已经超过了 C#,正如它去年超过了 PHP。Python 坚定主张要成为「最快速成长的主流编程语言」,至于 R 语言,则被远远甩在后面。
看似人气差距越来越大,有人戏称他们一个当季网红,一个“过气网红”。但也有技术大佬对于这种谁是最佳编程语言的争论感到不满,进而提出了一个想法:为什么不让他俩合作呢?
这次合作由谁发起?
技术大佬 Hadley Wickham 和 Wes McKinney 共同促成了这次合作。
Hadley Wickham 是编程语言 R 最重要的开发人员,Wes McKinney 则是编程语言 Python 最重要的开发人员之一。
Wes McKinney 在 2008 年创建了 pandas project,pandas 是一个开源的 BSD 许可的库,为 Python 编程语言提供了高性能、易用的数据结构和数据分析工具(对,就是你在 Python 里超级常用的那个 pandas 库)。此外,他还撰写了 Python for Data Analysis 一书,帮助推广 Python 在数据科学领域的应用。他是 Apache Software Foundation 的成员,并且是 Apache Arrow 和 Apache Parquet 的 PMC 成员,曾任 DataPad 的首席执行官和共同创始人。
Hadley Wickham 则是许多在数据科学领域使用最广泛的 R 软件包的创建者,如 ggplot2、dplyr 和其他许多软件包。他写了几本关于 R 语言的书,如 R for Data Science 和 Advanced R。Hadley 是 RStudio 的首席科学家,同时也是 Ursa Labs 关于 R 语言支持和一般 API 设计和可用性的技术顾问。
上个月,McKinney 宣布成立 USRA 实验室——一个致力于改进数据科学工具的创新组织。本次 Python 和 R 的合作就是 USRA 实验室与 Wickham 所在的公司 RStudio 之间的合作项目,RStudio 目前负责维护 R 语言最受欢迎的用户界面。USRA 实验室的主要目标是让使用不同编程语言的数据科学家能够更轻松地协作,避免不同语言开发人员的过多重复工作。 除了改进 R 和 Python,他们还希望其工作能够改进其他开源编程语言的用户体验,比如 Java 和 Julia 。
Python 和 R 都可以免费使用,并且经常被认为是数据科学领域中的竞争对手。但 Wickham 和 McKinney 都认为 这种竞争是没有必要的 。事实上,他们认为通过合作可以使这两种编程语言对数百万用户更加有用。
Python 和 R 强强联手
对于在科技公司(如谷歌、Facebook 等)工作的数据科学家、研究人员和数据记者来说,Python 和 R 都是必不可少的工具。开发者最头痛的问题是,当他们的同事使用另一种不同的编程语言时,协作往往难于上青天。URSA 实验室将通过打造适用于所有编程语言的新标准,使与使用其他数据科学语言的人共享数据和代码变得更加容易。开发者们将这一行动称作为对“互操作性”的改进。Wickham 和 McKinney 已经一起创建了一个在 Python 和 R 中都可以使用的文件格式。
Wickham 和 McKinney 表示,除了想让协作变得更容易,还有另外一个原因促使他们展开这个合作项目:使用不同编程语言的开发者总是在重复解决同一个问题,却没能把他们从中学到的经验教训分享给其他人。
Wickham 举了一个例子,在每一种编程语言中,开发人员都要会计算平均值。这对于用户来说非常简单,不管是在 Python 还是 R 中都只需要一行代码。但是对于语言的开发人员来说,找到用一行代码执行计算的最佳方法却是一个棘手的问题。R 和 Python 的开发人员都倾向于用 C++ 和 C 语言来解决这个问题,这两种语言对于开发人员来说很好用,但对普通用户来说却很棘手。Wickham 认为,在理想情况下,如果一种编程语言的开发人员找到了做某事的最佳方法,那么这个方法应该应用于其他所有语言。这也是 USRA 实验室的核心任务。
Wickham 和 McKinney 补充道,这个合作项目除了解决技术问题,也希望让不同的编程语言社区和平共处。他们认为使用这些语言的人合作得越多,数据科学领域就能发展得越好。
“我希望这次合作能结束 R 和 Python 之间毫无意义的争斗,”Wickham 说,“因为这两种语言都很棒。”
参考资料: http://wesmckinney.com/blog/announcing-ursalabs/
https://qz.com/1270139/r-and-python-are-joining-forces-in-the-most-ambitious-crossover-event-of-the-year-for-programmers/
本文为专栏文章,来自:AI前线,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/51873.html 。
数据分析
2018-05-10 21:45:00
因为现在项目在开发新的API,我需要根据API方法论去校验这个API的计算逻辑和计算结果是否正确,而且需要将计算逻辑用 Excel 记录下来,所以就用了Excel的VBA。
1. 什么是VBA?
具体含义大家可以看百度百科,我就直接上图了,每个单元格都是调用了VBA的宏计算语言函数,我就简称这个Excel含有macro计算逻辑吧。
2.问题是什么?
大家都知道要比较一个API的准确性,我们需要自己根据方法论去把所有原始数据都推演计算一遍,得到结果。然后在跟开发做的API response做下对比,如果两个结果相同,则表示这个API计算正确。
现在我们PO不让我重写一遍开发的计算逻辑了,规定所有计算相关的逻辑都在Excel里面做好计算模板sheet,然后我将所有原始数据都放到计算模板同一个文件夹下。在含有Marco计算逻辑的那个excel(计算模板sheet)里面完成数据的引用和计算。
然后将API返回的Response也写入到同目录下的一个Excel中(样式跟计算模板计算出来的结果相同),模板里面将比较API response和Excel中的计算结果,然后输出一个如上图一样的一个sheet页(二维矩阵,单元格里的内容是TRUE或者FALSE)。
我要做的就是:将原始数据放到规定名字和格式的Excel中,将最终API的response也放到Excel中,然后打开这个含有macro函数的excel,查看sheet页中是否含有FALSE,如果有,告诉对应的行和列名称并输出。若是没有FALSE,这说明比对通过,API pass。
难点是:
我用 Python 写函数,现在Python用pandas打开这个含有Macro函数的Excel后,读出的数据永远都是Nan,因为它不能识别那些macro函数。。。所以我无法判断该API是否pass。
3. 手动操作Excel的时候要怎样看到是TRUE或FALSE呢?
在打开这个有macro函数的Excel之前,我们需要打开所有它引用的其他Excel。然后回到这个Excel的时候,这些宏会自动引用其他excel相应的数据,并得出计算结果。
4. 用Python要怎样实现这一手动逻辑呢?
在Python中调用VBA去控制这些Excel即可。
5. 具体要怎样实现呢?
a. 下载Python扩展包: pywin32 (这个有32和64位之分)
可以直接去下载zip文件,然后安装;
但我建议直接用命令: pip install pywin32
b. 在自己python文件中引用:  from win32com import client
from win32com import client
c. 在python中写VBA:
#打开Excel应用,并且依次打开该计算模板Excel依赖的所有excel文件,然后打开最终计算模板excel
xlApp = client.Dispatch(‘Excel.Application’)
# xlApp.visible默认是0,就是不显示所有Excel文件窗口哦
xlApp.visible = 1
# Open original excels in the given absolute path one by one
suite_name = suite_path.split(“.”)[-1]
file_names = filter(lambda x: x.find(“File”) > -1, input_params.keys())
for file_name in file_names:
# excel = pd.ExcelFile(“OutputExcel/%s/%s” % (suite_name, input_params[file_name]))
xlApp.Workbooks.Open(r”%s\APG_API_RobotFramework\OutputExcel\%s\%s” % (workspace_path, suite_name, input_params[file_name]))
# Open the result excel and check data
xlBook = xlApp.Workbooks.Open(“%s\APG_API_RobotFramework\OutputExcel\%s\%s” % (workspace_path, suite_name, RESULT_EXCEL))
xlsheet = xlBook.Worksheets(“Result”)
# 操作Excel可能会出错,所以需要用到try, finally结构块
try:
# Store calculation result into result_list
rows = xlsheet.UsedRange.Rows.Count
columns = xlsheet.UsedRange.Columns.Count
# 读取做好的比较数据模板sheet页中的数据并放入二维数组中
result_list = []
for row in range(1, rows):
temp_list = []
for column in range(1, columns):
temp_list.append(str(xlsheet.Cells(row, column)))
result_list.insert(row-1, temp_list)
# print result_list
# Get row and column title, then remove titles’ values and put left values into new_list
row_title = [x[0] for x in result_list][1:]
column_title = [y for y in result_list[0]][1:]
# print(“row title : “, row_title)
# print(“column title :”, column_title)
new_list = []
for x in result_list[1:]:
new_list.append(x[1:])
# print new_list
# 因为最终要提示用户FALSE单元格对应的行和列名称,所以我用pandas来构造DataFrame,这样效率很高
# Put data into DataFrame then select values which are “FALSE”
df = pd.DataFrame(data=new_list, index=row_title, columns=column_title)
fail_list = []
for index, row in df.iterrows():
if row[0] == “False”:
fail_list.extend([index, row[0]])
# 若找到FALSE单元格,则提示具体错误信息,否则打印比较成功的提示
assert fail_list.__len__() == 0, “Failed cells are : “+str(fail_list)
print “Compare successfully !”
finally:
# Don’t let the save dialog pop up when close (Since the result excel shouldn’t be saved)
xlApp.DisplayAlerts = 0
# xlBook.Save()
xlBook.Close()
xlApp.Workbooks.Close()
# xlApp.visible = 0
xlApp.Quit()
finally中的语句非常关键,相当于open一个文件之后进行读写,最终一定要关闭对应的io流一样!
那个计算模板是不允许改动的,所以在关闭那个xlBook的时候总是提示是否需要保存,在Jenkins上配置这个Project之后,所有相关操作肯定是无法手动干预的。所以我就采取了最直接的方式:
xlApp.DisplayAlerts = 0
就是不弹出所有提示框。
先关闭计算模板Excel,然后关闭该Excel依赖的所有其他Excel。
最后退出Excel应用程序。
(若是最后退出程序以后发现还有一个空白的Excel窗口,这时候可以用 xlApp.visible=0 来隐藏)
所有这些都执行完了以后,这些被操作过的文件就不会被锁住了。(若是被锁住,以后用python读取的时候都会提示IOException哦~~)
最终的表现是:
系统会在运行该函数的时候先打开所有依赖的Excel文件,并打开最终的计算模板,在后台读出模板中比较数据,然后查看是否有FALSE单元格,并关闭所有打开过的Excel,一切都是自动化的哦~
RobotFramework Test Case如下:
因为项目太忙了,所以写的都是流水账,如果大家有什么更好的建议或者疑问,可以给我留言哦,谢谢阅读~~ 作者:Vicky_习惯做唯一
链接:https://www.jianshu.com/p/9bd71087772f
來源:简书
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2018-05-06 07:41:00
大数据 文摘作品
编译:傅一洋、吴双、龙牧雪
本文要讲的是Matplotlib,一个强大的 Python 可视化库。一共5小段代码,轻松实现散点图、折线图、直方图、柱状图、箱线图,每段代码只有10行,也是再简单不过了吧!
数据可视化 是数据科学家工作的一项主要任务。在项目早期阶段,通常会进行探索性 数据分析 (EDA)以获取对数据的理解和洞察,尤其对于大型高维的数据集, 数据可视化 着实有助于使数据关系更清晰易懂。
同时在项目结束时,以清晰、简洁和引人注目的方式展示最终结果也是非常重要的,因为受众往往是非技术性客户,只有这样,他们才更容易去理解。
Matplotlib是个很流行的Python库,可以轻松实现数据可视化。但是,每次执行新项目的绘图时,设置数据、参数、图形的过程都非常的繁琐。 在本文中,我们将着眼于5种数据可视化方法,用Python的Matplotlib库实现一些快速而简单的功能。
首先,请大家看看这张大的地图,它能指引你根据不同情况,选择正确的可视化方法:
根据情况选择适当的数据可视化技术
散点图
散点图非常适合展现两个变量间关系,因为,图中可以直接看出数据的原始分布。还可以通过设置不同的颜色,轻松地查看不同组数据间的关系,如下图所示。那如果想要可视化三个变量之间的关系呢?没问题!只需再添加一个参数(如点的大小)来表示第三个变量就可以了,如下面第二个图所示。
以颜色分组的散点图
加入新维度:圆圈大小
现在来写代码。首先导入Matplotlib库的pyplot子库,并命名为plt。使用 plt.subplots()命令创建一个新的图。将x轴和y轴数据传递给相应数组x_data和y_data,然后将数组和其他参数传递给ax.scatter()以绘制散点图。我们还可以设置点的大小、颜色和alpha透明度,甚至将y轴设置成对数坐标。最后再为该图设置好必要的标题和轴标签。这个函数轻松地实现了端到端的绘图! import matplotlib. pyplot as plt
import numpy as np
def scatterplot(x_data, y_data, x_label=””, y_label=””, title=””, color = “r”, yscale_log=False):
# Create the plot object
_, ax = plt.subplots()
# Plot the data, set the size (s), color and transparency (alpha)
# of the points
ax.scatter(x_data, y_data, s = 10, color = color, alpha = 0.75)
if yscale_log == True:
ax.set_yscale( ‘log’ )
# Label the axes and provide a title
ax.set_title(title)
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
折线图
如果一个变量随着另一个变量的变化而大幅度变化(具有很高的协方差),为了清楚地看出变量间的关系,最好使用折线图。例如,根据下图,我们能清楚地看出,不同专业获得学士学位的人群中,女性所占的百分比随时间变化产生很大变化。
此时,若用散点图绘制,数据点容易成簇,显得非常混乱,很难看出数据本身的意义。而折线图就再合适不过了,因为它基本上反映出两个变量(女性占比和时间)协方差的大体情况。同样,也可使用不同颜色来对多组数据分组。
女性获得学士学位的百分比(美国)
代码与散点图类似,只是一些微小的参数改动。 def lineplot(x_data, y_data, x_label=””, y_label=””, title=””):
# Create the plot object
_, ax = plt.subplots()
# Plot the best fit line, set the linewidth (lw), color and
# transparency (alpha) of the line
ax.plot(x_data, y_data, lw = 2, color = ‘#539caf’, alpha = 1)
# Label the axes and provide a title
ax.set_title(title)
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
直方图
直方图适合查看(或发现)数据分布。下图为不同IQ人群所占比例的直方图。从中可以清楚地看出中心期望值和中位数,看出它遵循正态分布。使用直方图(而不是散点图)可以清楚地显示出不同组数据频率之间的相对差异。而且,分组(使数据离散化)有助于看出“更宏观的分布”,若使用未被离散化的数据点,可能会产生大量数据噪声,从而很难看出数据的真实分布。
正态分布的IQ
下面是用Matplotlib库创建直方图的代码。这里有两个参数需要注意。第一个参数是n_bins参数,用于控制直方图的离散度。一方面,更多的分组数能提供更详细的信息,但可能会引入数据噪声使结果偏离宏观分布;另一方面,更少的分组数能提供更宏观的数据“鸟瞰”,在不需要太多细节的情况下能更全面地了解数据整体情况。第二个参数是累积参数cumulative,是一个布尔值,通过它控制直方图是否累积,也就是选择使用概率密度函数(PDF)还是累积密度函数(CDF)。 def histogram(data, n_bins, cumulative=False, x_label = “”, y_label = “”, title = “”):
_, ax = plt.subplots()
ax.hist(data, n_bins = n_bins, cumulative = cumulative, color = ‘#539caf’ )
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
如果要比较数据中两个变量的分布情况该怎么办呢?有些人可能会认为,必须要制作两个独立的直方图将它们并排放在一起进行比较。但实际上,有更好的方法:用不同透明度实现直方图的叠加。比如下图,将均匀分布透明度设置为0.5,以便看清后面的正态分布。这样,用户就可以在同一张图上查看两个变量的分布了。
叠加直方图
在实现叠加直方图的代码中需要设置以下几个参数: 设置水平范围,以适应两种可变分布; 根据这个范围和期望的分组数量,计算并设置组距; 设置其中一个变量具有更高透明度,以便在一张图上显示两个分布。 # Overlay 2 histograms to compare them
def overlaid_histogram(data1, data2, n_bins = 0, data1_name=””, data1_color=”#539caf”, data2_name=””, data2_color=”#7663b0″, x_label=””, y_label=””, title=””):
# Set the bounds for the bins so that the two distributions are fairly compared
max_nbins = 10
data_range = [min(min(data1), min(data2)), max(max(data1), max(data2))]
binwidth = (data_range[ 1 ] – data_range[ 0 ]) / max_nbins
if n_bins == 0
bins = np.arange(data_range[ 0 ], data_range[ 1 ] + binwidth, binwidth)
else :
bins = n_bins
# Create the plot
_, ax = plt.subplots()
ax.hist(data1, bins = bins, color = data1_color, alpha = 1 , label = data1_name)
ax.hist(data2, bins = bins, color = data2_color, alpha = 0.75 , label = data2_name)
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
ax.legend(loc = ‘best’ )
柱状图
柱状图适用于对类别较少(<10个)的分类数据进行可视化。但在类别太多时,图中的柱体就会容易堆在一起,显得非常乱,对数据的理解造成困难。柱状图适合于分类数据的原因,一是能根据柱体的高度(即长短)轻松地看出类别之间的差异,二是很容易将不同类别加以区分,甚至赋予不同颜色。以下介绍三种类型的柱状图:常规柱状图,分组柱状图和堆积柱状图。参考代码来看详细的说明。
常规柱状图,如下图所示。代码中,barplot()函数的x_data参数表示x轴坐标,y_data代表y轴(柱体的高度)坐标,yerr表示在每个柱体顶部中央显示的标准偏差线。
分组柱状图,如下图所示。它允许对多个分类变量进行对比。如图所示,两组关系其一是分数与组(组G1,G2,…等)的关系,其二是用颜色区分的性别之间的关系。代码中,y_data_list是一个列表,其中又包含多个子列表,每个子列表代表一个组。对每个列表赋予x坐标,循环遍历其中的每个子列表,设置成不同颜色,绘制出分组柱状图。
堆积柱状图,适合可视化含有子分类的分类数据。下面这张图是用堆积柱状图展示的日常服务器负载情况统计。使用不同颜色进行堆叠,对不同服务器之间进行比较,从而能查看并了解每天中哪台服务器的工作效率最高,负载具体为多少。代码与柱状图样式相同,同样为循环遍历每个组,只是这次是在旧柱体基础上堆叠,而不是在其旁边绘制新柱体。
以下是三种堆积柱状图的代码: def barplot(x_data, y_data, error_data, x_label=””, y_label=””, title=””):
_, ax = plt.subplots()
# Draw bars, position them in the center of the tick mark on the x-axis
ax.bar(x_data, y_data, color = ‘#539caf’ , align = ‘center’ )
# Draw error bars to show standard deviation, set ls to ‘none’
# to remove line between points
ax.errorbar(x_data, y_data, yerr = error_data, color = ‘#297083’ , ls = ‘none’ , lw = 2 , capthick = 2 )
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
def stackedbarplot(x_data, y_data_list, colors, y_data_names=””, x_label=””, y_label=””, title=””):
_, ax = plt.subplots()
# Draw bars, one category at a time
for i in range(0, len(y_data_list)):
if i == 0 :
ax.bar(x_data, y_data_list[i], color = colors[i], align = ‘center’ , label = y_data_names[i])
else :
# For each category after the first, the bottom of the
# bar will be the top of the last category
ax.bar(x_data, y_data_list[i], color = colors[i], bottom = y_data_list[i – 1 ], align = ‘center’ , label = y_data_names[i])
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
ax.legend(loc = ‘upper right’ )
def groupedbarplot(x_data, y_data_list, colors, y_data_names=””, x_label=””, y_label=””, title=””):
_, ax = plt.subplots()
# Total width for all bars at one x location
total_width = 0.8
# Width of each individual bar
ind_width = total_width / len(y_data_list)
# This centers each cluster of bars about the x tick mark
alteration = np.arange(-(total_width/ 2 ), total_width/ 2 , ind_width)
# Draw bars, one category at a time
for i in range( 0 , len(y_data_list)):
# Move the bar to the right on the x-axis so it doesn’t
# overlap with previously drawn ones
ax.bar(x_data + alteration[i], y_data_list[i], color = colors[i], label = y_data_names[i], width = ind_width)
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
ax.legend(loc = ‘upper right’ )
箱线图
前文介绍的直方图非常适合于对变量分布的可视化。但是,如果想要将更多的变量信息可视化呢?比如要清楚地看出标准差,或者一些情况下,中位数与平均值存在很大差异,因此是存在很多异常值呢还是数据分布本身就向一端偏移呢?
这里,箱线图就可以表示出上述的所有信息。箱体的底部和顶部分别为第一和第三四分位数(即数据的25%和75%),箱体内的横线为第二四分位数(即中位数)。箱体上下的延伸线(即T型虚线)表示数据的上下限。
由于箱形图是为每个组或变量绘制的,因此设置起来非常容易。x_data是组或变量的列表,x_data中的每个值对应于y_data中的一列值(一个列向量)。用Matplotlib库的函数boxplot()为y_data的每列值(每个列向量)生成一个箱形,然后设定箱线图中的各个参数就可以了。 def boxplot(x_data, y_data, base_color=”#539caf”, median_color=”#297083″, x_label=””, y_label=””, title=””):
_, ax = plt.subplots()
# Draw boxplots, specifying desired style
ax.boxplot(y_data
# patch_artist must be True to control box fill
, patch_artist = True
# Properties of median line
, medianprops = { ‘color’ : median_color}
# Properties of box
, boxprops = { ‘color’ : base_color, ‘facecolor’ : base_color}
# Properties of whiskers
, whiskerprops = { ‘color’ : base_color}
# Properties of whisker caps
, capprops = { ‘color’ : base_color})
# By default , the tick label starts at 1 and increments by 1 for
# each box drawn. This sets the labels to the ones we want
ax.set_xticklabels(x_data)
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)
这就是可供你使用的Matplotlib库的5个快速简单的数据可视化方法了!将功能和方法包装成函数,总是会使代码的编写和阅读都变的更简单!希望这篇文章能对你有所帮助,希望你能从中学到知识!如果喜欢就点个赞吧! 原文链接:https://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f
本文为专栏文章,来自:大数据文摘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/50817.html 。
数据分析
2018-04-27 13:16:00
考虑到 数据库 的数据读取相比于其他数据复杂,本文将进一步给大家介绍 SPSS Modeler与数据的链接问题。
本文将使用1月份广州地区某移动监测站点PM2.5数据作为示例(该数据仅作示例使用,并非真实数据)。如果你对如何通过odbc链接读取数据库还有疑问请查看如下内容:
整个 数据流 如下图所示:
1数据库源节点,使用 SQL 查询
在前面,我们介绍了如何读取整个表格的数据,但是在实际项目当中,可能由于数据量较大或者我们只需要其中的部分数据,那么直接全表读取就显得低效了。
在【数据库源节点】中,我们可以进一步使用SQL查询数据,只需要在“模式”中选择“SQL查询”即可:
当然,考虑到用户方便,我们可以直接导入缺省值,并在缺省值上直接进行修改:
这里我们重新修改一下语句,选择广州白云区的PM2.5数据进行查询:
select date_time, zone, pm25from d.gz_pm25where zone = '白云区'
读取后接入表格节点,查看数据。
2数据库导出节点,使用SQL建表
要将数据导回数据库当中,我们可以使用导出选项卡中的【数据库】节点。
值得注意的是,由于我们是要建表,除了按照Modeler默认建表设置外,我们还可以进一步指定,在【导出】节点中,选择模式,将进一步设定建表的内容。在模式中,除了可以使用定制的creat table命令外,我们依然可以通过图形化界面的方式定义主键和字段的类型。
设定完成后,点击运行,即可完成数据的导出。
本文为专栏文章,来自:浩彬老撕,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/54133.html 。
数据分析
2018-04-26 21:39:00
对于任何数据科学家来说,速度和时间都是一个关键因素。在商业活动中,通常不会使用仅仅有数千个样本的玩具数据集。大部分时候你的数据集包括数百万或数亿个样本。客户订单,网络日志,帐单活动,股票价格等 – 现在的数据集非常庞大。
我猜你不会想花几个小时或几天,等待你的 数据处理 完成。迄今为止,我所使用的最 大数据 集包含超过3000万条记录。当我第一次运行数据处理脚本时,预估的完成时间约为4天!我没有非常强大的机器(Macbook Air与i5和4 GB的RAM),但我可以保证一晚上运行完脚本而不是数天。
感谢一些聪明的技巧,我能够将这个运行时间缩短到几个小时。这篇文章将解释实现良好数据处理性能的第一步 – 为您的数据集选择正确的库/框架。
下图显示了我的实验结果(详情如下),与纯 Python 的处理速度做出对比。
如你所见,Numpy的表现比Pandas的表现要好几倍。我个人喜欢用Pandas来简化许多繁琐的数据科学任务,它是我的首选工具。但是如果预计的处理时间超过多个小时,那么很遗憾,我只能使用Numpy来替代Pandas。
我非常清楚实际的性能可能会有很大的不同,这取决于任务和处理类型。所以请把这些结果仅仅作为参考。没有任何一个单独的测试可以全面对比所有软件工具的性能。
简介
在下面的 Notebook 中你将会比较 Python 原生方法, Pandas 和 Numpy 处理数据的速度。
导入模块
制作模拟随机数据集

Dataset size 54818 records


Python 原生方法
Pandas 方法
Numpy 方法
检查是否所有的方法生成同样的结果

比较运行时间

Python average time: 38.77917420864105 seconds
Pandas average time: 10.483694124221802 seconds
Numpy average time: 2.914765810966492 seconds
展示结果

本文为专栏文章,来自:数据工匠,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/48937.html 。
数据分析
2017-11-15 09:00:00