从数据分析到数据洞察

数据用途和玩转数据的手段

数据分析通常用于商业决策,一般在大公司中,会养一个专门的商业分析部门,专门采集各种数据用于辅助董事会/CEO等决策层做核心的商业决策。但是,数据分析的需求无处不在,在各个业务线中也有对于数据分析的诉求,例如运营部分,一个运营活动的好坏、应该向哪个渠道投放资源,不能靠拍脑袋决定,要分析具体数据。同样对于开发运维也一样,线上系统是否稳定,各个模块指标怎么样,都需要数据得到反馈。对于董事会,可以养一个专门的机构搞数据分析;而对于普通的业务线,那只能自助分析了。今天我们就来总结一下数据分析的方法,如何洞察数据中的有效信息。
数据分析首先得有数据,从各个地方采集数据。所谓巧妇难为无米之炊,没有数据更谈不上数据洞察。有些公司,成立商业分析部门,干的活却是窃取其他公司的商业核心数据,愣是把一个高上大的技术名词搞成了间谍。20世纪上半叶,数学上的统计学在各行各业流行开来,数学家们,利用很少的数据,再加上统计学理论,推断一个结论。如经典的”女士品茶”这个故事,通过数据判定女士到底有没有某个超能力。至于把商业分析干成商业间谍的人,大概是不懂得需要如何合法的采集数据,以及分析数据的手段吧。
数据存储无需多讨论,要分析数据,首先要把数据存储下来,无论是存储在云端也好,还是excel也好,只有存储下来,才能方便后续的计算和分析。
数据有哪些使用方式呢?这里列举了四种用法,例如report,monitoring,analysis,exploration/mining。我们可以按照两个维度来划分,需求是否明确,分析方式是否成熟。

有些需求场景是明确的,例如老板需要每天看几个关键的业务指标,那么就需要每天跑个固定的脚本,生成报告。在这个过程中分析方法也是固定的,即运行固定的计算逻辑。有些需求需要经过一番分析,例如某天业务量降低了,要分析下原因是什么,就需要从多种指标里边去探索。
还有些需求场景是不明确的,给你一份数据,我们知道数据里边有金矿,关键是怎么把数据中的核心信息捞出来,也需要探索才能找到,但是探索的目标不确定。这就是个开放式的话题了,也就是探索式数据分析:有数据,尝试找信息。应该沿着怎么样的一条路是探索呢?我认为有两种方式:

  • 尝试不同的分析方法,例如统计方法/机器学习方,挨个尝试,看能得到什么结果。有哪些分析方法,会在下文列一下常用的手段。
  • 尝试不同的目标,比如,首先用一句话描述数据的总体分布,然后找出其中的一些异常点,最后通过拟合数据做未来预测等等,有哪些分析目标,也会在下文列出一下常用的。

洞察数据的目标

寻找common pattern

common pattern是数据中出现频率最高的特征,可用于概括行描述一个数据集的总体信息。

寻找outlier

outlier是离群点,即数据集合中某个偏离common pattern的数据。在一些异常监控中经常用到。

分类

把一个数据集合分成不同的子集合,分成不同的类别。

验证假设

首先给出一个假设,通过数据给出证明。

预测

拟合已有的数据,根据模型预测未来数据。

无论哪种目标,最终都是需要能过帮助完成决策,只有完成决策,才算完沉了闭环,否则就是无意义的数据分析。

洞察数据的方法

一个优秀的软件,必定是有灵魂的,他的灵魂就是背后的方法论。Saas的本质,就是输出管理的理念和方法论,并且提供解决方案的工具。具体到数据分析工具而言,一个优秀的数据分析工具一定以数据分析方法论的为基础的,融合集合常见的数据分析方法。而不是东一榔头、西一棒槌追加分析函数,永远跟着甲方的需求跑,面向客户开发,面向demo开发,这样的话永远不成体系。
我们先来看个数据分析的笑话:

手里有个锤子,看什么都是钉子,数据分析专业的同学,看到什么都要现象都要分析一把。疫情也要分析一把,强行刷存在感。不过笑归笑,外行看热闹,内行看门道。在这个简短的笑话中,我们看到一些常见的数据分析方法:相关性分析、假设检验、ab测试、z test、数据分布、标准差、显著性水平等。

那么常见的数据分析方法有哪些呢?这些我们在大学的各个数学课程中都学习过了。首先我们做个分类,按照实现方式,数据分析包括:

  • 基于统计算法的数据分析。
  • 基于机器学习的数据分析。

按照是否需要人工标注,数据分析分为:

  • 无监督学习,无需人工标注数据,根据已有数据直接分析。
  • 监督学习,需要标注数据,根据数据标签训练模型,再用于推断未知数据的结论。
  • 半监督学习,是无监督学习和监督学习的结合。

接下来将逐个介绍各种方法:

统计量分析

统计量用于评估数据的整体状况,统计量使用单一数字来描述数据的分布。例如估计位置信息:

  • 均值
  • 中位值

描述变异性:

  • 方差
  • 标准差

描述性统计量:

  • 方差/标准差
  • 离散系数
  • 峰度
  • 偏度
  • 绝对中位差
  • 中位数
  • 单调性

分位统计量:

  • 最大值
  • 最小值
  • 中位值
  • 25分位
  • 75分位
  • 范围
  • 四分位距

数据分布

数据分布的目标主要是查看数据的分布频率(分布密度),针对不同的数据采取不同的分析方式,对于连续数据,采取散点图/箱线图(分位统计)描述。在散点图中,把所有的点都打印到图中,密度比较高的地方则说明分布比较多。对于离散数据,采取堆叠图/直方图描述。按照每个不同的类别,分桶后统计计数,然后用直方图绘出。同样的,对于连续数据也可以采取直方图的方式,把连续数据按照固定的桶大小分桶后再计数。

相关性

上文的统计量分析/数据分布分析,是用于分析单变量。 而对于多变量分析,则需要用到相关性分析。探索两个变量之间的相关性。在计算相关性时,主要计算两个数据集合的相关性系数。常见的相关性系数有皮尔逊系数、斯皮尔曼系数等。在计算好相关性系数后,可以绘制出一个相关性表如下:

抽样分布

抽样分布是用少量数据估算整体数据的分布情况,用途有三种:第一,可以概括性描述整体分布;第二可以根据整体分布预测未来的新数据;第三,可以利用分布系数来排查异常值。
常见的分布有:

  • 正态分布: 如果确定数据服从正态分布,估算出正态分布的sigma后,我们可以使用3sigma来排除异常值。
  • 长尾分布:大部分现实数据不是严格匹配正态分布的,数据的中心位置也许符合正态分布,但是在尾部常常有长尾效应。
  • T分布
  • 二项分布
  • 泊松分布
  • 指数分布

柏松分布和指数分布通常用于估算事件发生率,也可用于估算IT系统的故障发生率。或者用于估算系统的上限水位,例如一个IT系统,每分钟的流量是x qps,那么根据泊松分布,可以估算出最大值是多少qps,系统需要准备多少资源。

在现实的数据中,可能具备多种形状和类型,在特定场景下,应该首先确定数据集合服从哪种分布,求的分布系数后,再进行下一步的分析。

统计实验和假设性检验

假设检验有个很好的用途,例如我们的营销团队做了个活动,那么如何评估活动是否带来了客流量呢?我们都知道现实的数据可能是有波动的,可能有N天变高,M天变低。所以要评估是否活动的影响,可以使用假设检验来验证。
最常见的业务场景,例如A/B测试。两种算法,哪个效果更好,可以通过假设检验来完成。
常见的方法有T检验、卡方检验
例如

不同的标题下,有不同的点击率,那么这个点击率是随机造成的,还是标题起到了关键作用呢?可以通过卡方检验,计算皮尔逊残差,结果证明完全是随机作用。

回归和预测

在现实中,我们经常要回答的一个问题是,这两个指标之间是否有关联?如果有关联,是否可以通过其中一个指标预测另外一个指标。预测常见的一个使用场景是:根据预测的结果和实际的结果进行比对,然后判断是否有异常。

分类

在数据分析中,经常要回答一个问题,一个电子邮件是否是钓鱼邮件?一个客户是否会流失?这种情况就需要分类。分类是有监督的学习。
常用的分类算法有:

  • 朴素贝叶斯
  • 线性判别分析
  • KNN
  • 决策树
  • Bagging
  • 随机森林
  • boosting
  • SVM

聚类

聚类是无监督学习的分类方法,根据算法把数据集合分成几个类。常用的算法有:

  • 主成因分析
  • K-means
  • 层次聚类

神经网络

神经网络是有监督学习,通过标注数据训练出模型,然后推断新的数据结果,篇幅有限,这里不再展开详细介绍。常用的算法有:

  • 卷积神经网络CNN
  • 循环神经网络RNN
  • 深度神经网络DNN

数据分析工具和数据洞察解决方案

上文介紹了很多数据分析的方法算法。这些方法,归根结底是一个个工具,或者说是积木,用户可以使用这些积木组合成解决方案,解决自己特定的问题。市场上有很多系统提供类似的数据分析工具,例如Pandas,R,SQL,Tensorflow等等。 但是这依赖于使用者既要明确自己的分析目标,又要十分精通使用工具。 对于开放式的话题,在分析时需要不断尝试各种各样的手段进行分析,有些分析手段可能是无效的,因此需要不断尝试,在这个过程中浪费了太多的时间。如何能够快速洞察数据呢?
有些工具尝试集合数据分析的工具和数据洞察的解决方案,例如tableau,Knime等,而Pandas profiling则是一个纯粹的数据洞察方案。它自动的尝试上文描述的各种手段,把结论呈现给客户,减少了数据探索的时间,能过快速的完成数据洞察。

数据洞察工具的价值

针对开放式的课题,需要投入大量的人工时间在各个方向上探索,这存在几个问题:

  • 可能以后某些关键路径,例如在分钟级别的数据看不出信息,而秒级别数据才能看出信息。若没有想到该方式,那么将极大延长发现问题的时间。
  • 需要人工采用各种工具,在多个方向上探索。这无异需要大量的时间。

因此对于数据洞察工具的诉求就是:能过完全自动化的在各个方向上、尝试多种工具挖掘数据信息,达到最终对数据的insight。