美文网首页
Day7 数据分析理论基础 2019-06-16

Day7 数据分析理论基础 2019-06-16

作者: 迷途小球迷 | 来源:发表于2019-06-16 22:42 被阅读0次

数据分析部分,引用公众号‘秦路’ 的文章--《数据科学家成长指南》。原文链接:https://mp.weixin.qq.com/s/JkH1RywozHYDwCCDB1-a0Q

image.png

这是Swami Chandrasekaran所绘制的一张地图,名字叫做MetroMap to data scientist(数据科学家之路)。
数据科学家是最近几年火爆新起的职位,他是数据分析师的后续进阶,融合了统计、业务、编程、机器学习、数据工程的复合型职位。
该地图一共十条路线,分别是基础原理、统计学、编程能力、机器学习、文本挖掘/自然语言处理、数据可视化、大数据、数据获取、数据清洗、常用工具。条条路线都不是人走的。因为网上只有英文版,我将其翻译成中文,并对内容做一些解释和补充。
该指南主要涉及硬技能,数据科学家的另外一个核心业务能力,这里没有涉及,他并不代表不重要。


Fundamentals原理(基础原理)

算是多学科的交叉基础,属于数据科学家的必备素质。
Matrices & Linear Algebra矩阵和线性代数
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。涉及到的机器学习应用有svd、pca、最小二乘法、共轭梯度法等。
线性代数是研究向量、向量空间、线性变换等内容的数学分支。向量是线性代数的最基本内容。中学时,数学书告诉我们向量是空间(通常是二维的坐标系)中的一个箭头,他有方向和数值。在数据科学家眼中,向量是有序的数字列表。线性代数是围绕向量加法和乘法展开的。
矩阵和线性代数有什么关系呢?当向量进行线性变换时,这种变换可以想象成几何意义上的线性挤压和拉扯,而矩阵则是描述这种变换的信息,由变换后的基向量决定。
矩阵和线性代数是一体的,矩阵是描述线性代数的参数。他们构成了机器学习的庞大基石。

Hash Function,Binary Tree,O(n)哈希函数、二叉树,时间复杂度

哈希函数也叫散列函数,他能将任意的数据作为输入,然后输出固定长度的数据,这个数据叫哈希值也叫散列值,用h表示,此时h就输入数据的指纹。
哈希函数有一个基础特性,如果两个哈希值不相同,那么他的输入也肯定不相同。反过来,如果两个哈希值是相同的,那么输入值可能相同,也可能不同,故无法通过哈希值来判断输入。
哈希函数常用在数据结构、密码学中。
二叉树是计算机科学的一个概念,他是一种树形结构。在这个结构中,每个节点最多有两个子树(左子树和右子树),子树次序不能颠倒。二叉树又有多种形态。

image.png
二叉树是树这类数据结构的第一种树,后续还有红黑树等,很多语言的set,map都是二叉树写的。
时间复杂度是编程中的一个概念,他描述了执行算法需要的时间,不同算法有不同的时间复杂度,例如快排、冒泡等。
简便的计算方法是看有几个for循环,一个是O(n),两个是O(n2),三个是O(n3)。当复杂度是n3+n2时,则取最大的量级n^3即可。
与之相对应的还有空间复杂度,他代表的是算法占用的内存空间。算法通常要在时间和内存中取得一个平衡,即内存换时间,或者时间换内存。

Relational Algebra关系代数

他是一种抽象的查询语言。基本的代数运算有选择、投影、集合并、集合差、笛卡尔积和更名。
关系型数据库就是以关系代数为基础。在SQL语言中都能找到关系代数相应的计算。

Inner、outer、cross、theta join 内连接、外连接、交叉连接、θ连接

这是关系模型中的概念,也是数据库的查询基础。
内连接,只连接匹配的行,又叫等值连接。
外连接,连接左右两表所有行,不论他们是否匹配。
交叉连接是对两个数据集所有行进行笛卡尔积运算,比如一副扑克牌,其中有A集,是13个牌的点数集合,集合B则是4个花色的集合,集合A和集合B的交叉连接就是4*13共52个。
θ连接使用where字句引入连接条件,θ连接可以视作交叉连接的一个特殊情况。where可以是等值,也可以是非等值如大于小于。
不同数据库的join方式会有差异。

CAP Theorem CAP定理

指的是在一个分布式系统中,一致性、可用性、分区容错性三者不可兼得。
一致性:在分布式系统中的所有数据备份,在同一时刻是否同样的值。(感觉这个少用,先省略)

tabular data列表数据

即二维的表格数据,关系型数据库的基础。

DataFrame & Series Python Pandas数据结构

Series是一个一维数据对象,由一组numpy的array和一组与之相关的索引组成。python字典和数组都能转化成数组。Series以0为开始,步长为1作为索引。

x = Series([1,2,3,4,5])
>>>x
0  1
1  2
2  3
3  4
4  5

DataFrames是一个表格型的数据,是Series的多维表现。DataFrame即有行索引也有列索引,可以看做Series组成的字典。

Sharding分片

分片不是一种特点的功能或者工具,而是技术细节上的抽象处理,是水平拓展解决方法。一般数据库遇到性能瓶颈,采用的是Scale Up,即向上增加新能的方法,但单个机器总有上限,也是水平拓展应运而生。
分片是从分区的思想而来,分区通常针对表和索引,而分片可以跨域数据库和物理假期。比如我们将中国划分南北方,南方用户放在一个服务器上,北方用户放在另一个服务器上。实际形式上,每一个分片都包含数据库的一部分,可以是多个表的内容也可以是多个实例的内容。当需要查询时,则去需要的查询内容所在的分片服务器上查询。他是集群,但不同于hadoop的MR。
如果能够保证数据量很难超过现有数据库服务器的物理承载量,那么只需利用mysql5.1提供的分区功能来改善数据库性能即可;否则,还是考虑应用分片理念。另外一个流传很广的观点是:我们的数据也许没那么大,hadoop不是必需的,用分片即可。

OLAP(online analytical processing)联机分析处理

他是数据仓库系统主要的应用,主要用于复杂的分析操作。
针对数据分析人员,数据是多维数据。查询均是涉及到夺标的复杂关联查询,为了支持数据业务系统的搭建,OLAP可以想象成一个多维的立方体,以维度和度量为基础概念。我们用到的多维分析就是OLAP的具象化应用。
OLAP更偏向于传统企业,互联网企业会灵活变动一些。另外还有一个OLTP的概念。

Mutidimensional data model多维数据模型

他是OLAP处理生成后的数据立方体。他提供了最直观观察数据的方法。


image.png

涉及钻取、上卷、切片、旋转等操作,就是把上面的立方体变变。

ETL

ETL是抽取、转化、加载的过程。常用于数据仓库。
整个流程是从数据源抽取数据,结果数据清洗和转换,最终将数据以特定模型加载到数据仓库中区。


image.png

ETL是一个古老的概念,在以前SQL数据仓库时代和OLAP伴随而来,在现在日新月异的技术生态圈,会逐步演化进hadoop相关的技术了。

Reporting vs BI vs Analytics报表与商业智能与分析

这是BI的三个组成部分。reporting是数据报表。利用表格和图表呈现数据。报表通常是动态多样的。数个报表的集合统称为Dashboard(仪表盘)。
Bi是商业智能,是对企业的数据进行有效整合,通过数据报表快速作出决策。
Anayltics是数据分析,基于数据报表作出分析。包括趋势的波动,维度的对比等。

Json & XML

json是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。
json的语法规则是:

  • {}保存对象;
  • []保存数组;
  • 数据由逗号分隔;
  • 数据在键值对中;
    json范例:

{
'firstname': 'john',
'lastname': 'smith',
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
}
}

xml是可拓展标记语言,被设计用来传输和存储数据,与之对应的html则是显示数据。xml和html服务于不同目的,xml是不作为的。

<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

这个范例只是用来传输一段信息,本身不会有任何意义。

NoSQL

泛指非关系型数据库,意思是not only sql
NoSQL是随着大数据时代发展起来的,传统的关系数据库在高并发大规模多数据类型的环境下力不从心,而NoSQL就是为了解决这些问题而产生的。
NoSQL主要分为四大类:
键值keyValue数据库
这类数据库会使用哈希表,哈希表中有一个特定的键指向一个特定的值,keyvalue的特点是去中心化,不涉及业务关系。代表redis。


数据分析的思维和方法

为什么数据分析思维很重要?
如下图,遇到一个问题前,不知道从何下手,通过训练分析思维,在遇到问题前,能快速梳理出分析的切入点,甚至是分析的思路,这个很重要。

tu
常用的思维方式:

1、金字塔/结构化思维

把问题按不同方向或类型去分类,然后不断拆分细化,能全方位的思考问题,一般是把所有能想到的一些论点先写出来,然后在进行整理归纳成金字塔模型。可以借助思维导图来写分析思维:


image.png

2、公式化思维

在结构化的基础上,这些论点往往会存在一些数量关系,使其能进行+-x➗的计算,将这些论点进行量化分析,从而论证论点。所谓指标体系,就是这么梳理得来的。

3、业务化思维

业务化思维即深入了解业务情况,站在业务员的角度上去思考和分析问题。
方法:贴近业务,换位思考,积累经验。
这种思维模式在一些特定的业务场景下,衍生出一些基础的分析方法,比如象限法,多维法,假设法,二八法,对比法,漏斗法,这个对未来构建分析模型都有帮助。

数理统计学

统计学是数据分析必备的知识之一,是一组用于汇总数据和量化给定观测样本域属性的工具。
单独的原始观察数据只是数据,还不能变为我们想要的信息或知识。有了原始数据,那么接下来的问题是:

  • 什么是最常见或可预测的观测?
  • 观测的限制条件是什么?
  • 数据是什么样子的?
    回答这些问题,我们需要借助一些统计工具来得出一些结论,借助统计学,你的分析深度、专业度和科学性都会有很大提升。
    1、集中趋势(中数、众数、平均数)
    2、变异(四分位数、四分位距、异常值、方差)
    3、归一化(标准分数)
    4、正态分布
    5、抽样分布(中心极限、抽样分布)
    6、估计(置信度、置信区间)
    7、假设检验
    8、T检验

相关文章

网友评论

      本文标题:Day7 数据分析理论基础 2019-06-16

      本文链接:https://www.haomeiwen.com/subject/gwunfctx.html