精华内容
下载资源
问答
  • SPSS统计分析教程高级篇 张文彤 第一部分 一般线性与混合线性模型 第二部分 回归分析 第三部分 多元统计分析方法 第四部分 其他高级统计分析方法 第四部分 其他高级统计分析方法
  • spss统计分析基础 高级教程

    热门讨论 2012-06-09 02:12:56
    SPSS经典教材之一。本书主要针对SPSS 的中、高级用户,定位为应用统计专业的研究生教材和其他专业的统计...除作为各专业研究生的统计教材和参考书外,本书还适用于各行业中希望深入学习和应用高级统计分析方法的读者。
  • 经典的spss的高级教程,详细介绍了各种多变量统计模型、多元统计分析模型的方法原理和软件实现技术。其内容涵盖了各种有广泛应用、经典或现代的模型和方法。全书分20章,作者在书中结合自身多年的统计分析实践和spss...
  • 张文彤《SPSS统计分析高级教程第2版》经典统计方法高级部分 经典统计方法论:试验设计、数据收集、数据获取、数据准备、数据分析、结果报告、模型发布
  • 一般线性与混合线性模型 回归分析 多元统计方法 其它高级统计方法
  • 本书是spss统计分析的高级教程,全书分为一般线性和混合线性模型、回归分析、多元统计分析方法和其他高级统计分析方法四大部分,是一本比较好的书
  • SPSS 统计分析 高级教程 张文彤 文字版 pdf 432页 SPSS是最为优秀的统计软件之一,深受各行业用户的青睐。...行业中希望深入学习和应用高级统计分析方法的读者以及资深统计分析师作为参考书或工作手册使用。
  • SPSS 是最为优秀的统计软件之一,深受各行业用户的青睐。为满足广大读者学习和掌握高级统计分析方 ...行业中希望深入学习和应用高级统计分析方法的读者以及资深统计分析师作为参考书或工作手册使用。
  • 本书内容共6 篇, 第1 篇包括第1 ~4 章, 回答了4 个基础性问题, 即"如何确保数据是值得分析的冶、"如何选择统计图并用SAS 绘制冶、"如何给统计分析方法分类与合理选用统计分析方法冶和"如何基于偏好数据确定多因素的...
  • 蒙特卡洛统计方法 适用于初学者与高级用户。做数值分析的人,对于最大似然估计和贝叶斯估计都很熟悉吧,蒙特卡洛采样法包括其扩展的mcmc,mcmcmc都是重要的数值估计方法
  • 第6章 多元统计分析 教案 课程名称大数据数学基础Python语言...配套PPT 引导性提问 探究性问题 拓展性问题 教学目标与基本要求 教学目标 通过本章的学习主要掌握多元统计分析的应用主要了解多元分析方法中的回归分析聚
  • SPSS数据统计分析

    2012-02-26 22:10:56
    SPSS数据统计分析》结合...SPSS高级统计,包括因子分析、聚类分析、判别分析、时间序列分析等;案例部分,通过案例介绍SPSS在不同领域的综合应用,而且涉及数据搜集和调查方法、数据分析报告的撰写方法和技巧等内容。
  • 高级信息统计工具的用法 IO Graphs:借助该工具同时配搭预先定义的显示过滤器,便可生成各种易于阅读的信息统计图表 使用方法:Statistics菜单栏下IO Graphs选项 显示过滤器的配置:在Display filter项内输入需要...

    IO Graphs:借助该工具同时配搭预先定义的显示过滤器,便可生成各种易于阅读的信息统计图表


    使用方法:Statistics菜单栏下IO Graphs选项

    显示过滤器的配置:在Display filter项内输入需要配置的显示过滤器(不配置显示过滤器就是显示所有的数据包),然后勾选上前面的对勾就可显示图表



    IO Graphs应用


    1、测量设备之间的吞吐量:

    显示过滤器:ip.addr eq 10.100.235.172 and ip addr eq 10.100.235.172
    小技巧:右键一个源10.100.235.172目的10.100.235.172的IP包,Conversations Filter中IPv4,Filter中会自动生成表达式



    2、测量应用程序吞吐量:

    显示过滤器:tcp.stream eq 2
    小技巧:右键一个隶属该应用程序所触发的UDP/TCP数据包,Follow TCPstream,Filter中会自动生成表达式


    IO Graphs中的Y Axis高级选项:

    SUM():在Y Field中输入条件,统计每个计时单位内,实际传输IP数据包的总字节数,,并生成图像
    COUNT FRAMES():在Y Field中输入条件,统计每个计时单位内,匹配发生该条件次数,并生成图像
    COUNT FIELD():在Y Field中输入条件,统计每个计时单位内,数据包中该字段出现次数,并生成图像

    MAX():在Y Field中输入条件,统计每个计时单位内,数据包中相关参数最高值,并生成图像

    MIN():在Y Field中输入条件,统计每个计时单位内,数据包相关参数最低值,并生成图像
    AVG():在Y Field中输入条件,统计每个计时单位内,相关参数的平均值,并生成图像




    IO Graphs中的Y Axis高级选项应用:


    1.获悉网络中TCP重传次数:

    显示过滤器:tcp
    Y Axis:COUNT FRAMES():
    Y Field:tcp.analysis.retransmission



    2.生成数据帧接收时间间隔:

    显示过滤器:ip.src==10.100.235.172
    Y Axis:MAX()/MIN()
    Y Field:fram.time_delta
    补充:两个以“帧间间隔时间”为条件的显示过滤器:
               frame.time_delta:当前帧与上一帧之间的时间间隔
               rame.time_delta_displayed:当前帧与显示出的上一帧的时间间隔




    TCP StreamGraph:借助该工具可以深窥单条TCP流的内在


    Time Sequence(Stevens):单位时间受监控的TCP流在某个方向所传输的字节数




    Time Sequence(tcptrace):下方线代表TCP在某方向上所传数据字节数,上方线代表TCP接收窗口,若上下两条线近乎重叠,则表示TCP窗口已满(window-full)




    Throughput:了解TCP连接的吞吐量,判断TCP连接是否稳定




    Roud Trip Time:了解TCP连接某条方向上的所有TCP报文段的往返时间(RTT)




    Window Scaling :了解通过TCP连接传送数据时,由接收方所通告的窗口大小





    展开全文
  • 高级分析方法:以计量经济建模理论为主 数据挖掘类:以数据仓库、机器学习等符合技术为主 普遍使用的数据分析工具有:Excel、SPSS、SAS、Eview、R语言、MATLAB、Stata(强大)和Weka等。 数据挖掘工具:Weka、QUEST...

    数据分析的方法与技术

    数据分析是指采用准确适宜的分析方法和工具来分析经过处理的数据,提取有价值的信息,从而形成有效的结论并通过可视化技术展现出来的过程。

    数据分析的方法有:

    • 基本分析方法:主要以基础的统计分析为主
    • 高级分析方法:以计量经济建模理论为主
    • 数据挖掘类:以数据仓库、机器学习等符合技术为主

    普遍使用的数据分析工具有:Excel、SPSS、SAS、Eview、R语言、MATLAB、Stata(强大)和Weka等。

    数据挖掘工具:Weka、QUEST、MineSet、Clementine、Rapidminer、DBMiner、Mahout

    可视化设计工具:Many Eyes(免费)、D3、Protovis、Datawatch、Quadrigram、Tableau、Google Chart、JFreeChart

    一、基本数据分析方法:对比分析、趋势分析、差异显著性检验、分组分析法、结构分析法、交叉分析法、综合评价分析、漏斗图分析法等

    1.1 对比分析:分析对象一般为相互联系的两个指标数据,它主要展示与说明研究对象水平的高低、速度的快慢、规模的大小以及各关系之间是否协调。

    对比分类方法:横向对比、纵向对比、标准对比以及实际与计划对比。

    • 横向对比(静态对比):对比是同一时间条件下不同总体指标比较。
    • 纵向对比(动态对比):指同一总体条件不同时间指标数值的比较。
    • 标准对比:指实际指标与标准水平进行对比、了解当前指标与标准指标的差异。
    • 实际与计划对比:反映实际与目标值的差异,主要是利用当前实际值与目标的计划数、预算数、指标数等对比从而得到差异。

    指标包括总量指标、相对指标、平均指标,结果可用相对数如百分数、倍数、系数等来反映。

    应用:在了解财政收支数据特征方面很有优势,同时可用于差异分析。

    1.2 趋势分析:将实际达到的结果,通过比较同类指标不同时期的数据,继而明确该指标的变化趋势以及变化规律的一种分析方法。

    方法:定比和环比

    • 定比分析:分析期的水平比上某一特定时期的水平,描述该现象在不短的一段时期内总的变化水平,主要用于分析年度发展变化的速度情况。

    主要指标:定基动态比率=分析期数值/固定基期数值

    • 环比分析:分析期水平比上前一段水平,反映是逐期变化趋势的现象。通过本期与上期数据的对比,形成时间系列图。

    逐期变化情况受很多因素影响,其中最主要的是季节影响,会出现大幅度波动,因此环比分析适用于没有季节因素的时间序列数据

    主要指标:环比动态比率=分析期数值/前期数值

    应用:财务分析方面

    1.3 显著性检验:判断事先对总体的参数或分布形式做的假设与真实情况是否存在显著性差异,即检验总体所做的假设是否合理正确,原理是“小概率事件实际不可能性”

    方法:t检验、方差分析等

    • t检验:通过t分布来推断差异发生的概率,继而比较两个平均数之间是否存在显著性差异。它与z检验、卡方检验并列。主要分为单样本t检验、配对样本t检验
    • 方差分析(F检验、变异数分析):通过比较总体方差各种估计间的差异来检验方差的正态总体是否有相同的均值。分为单因素方差分析、多因素方差分析

    1.4 分组分析:对现象的内部结构或现象之间的依存关系的研究。

    方法:根据目的和客观现象的内在特点,按照某个标准将研究对象分为若干不同性质的小组,使得组内差异小,组建差异大

    原则:

    • 穷尽原则:全部都要分
    • 互斥原则:一个单位只能归属于一个组

    1.5 结构分析:通过指标来解释企业资源结构分布、生产布局的状况,便于经营者进行调整,投资者长期决策。

    方法:

    • 根据关注的(时间):静态结构分析、动态结构分析(当期同期、当期/某期、时间序列)
    • 根据关注的(对象):增量结构分析、元素的比重分析以及总量结构分析。
    • 两种分类间交叉结构分析
    • 结构内元素的结构差异分析

    指标:某一部分占总体的比重。 结构指标%=总体中某一部分/总体总量*100%

    1.6 因素分析法(斯皮尔曼剔提出,在心理学领域发展):根据分析指标与影响因素的关系,从而确定不同因素对分析指标影响程度以及影响方向的一种方法。

    方法:

    • 连环替代法:把分析指标拆分为多个计量因素,按照因素相互间的依存关系,依次用各因素的比较值(实际值)替换基准值,研究不同因素对指标的影响。
    • 差额分析法(绝对分析法):依据每个因素的实际值与基准值之间的差异
    • 定基替代法:用基准值替换实际值

    1.7 交叉(表)分析法:指将有一定联系的两个变量及其值交叉排列在一张表内,分析交叉表中变量之间的关系,常用的是二维交叉表分析法。描述变量间的关系,但不一定是因果关系。

    1.8(多变数)综合评价分析法:将多个指标转化为一个能反映综合情况的指标进行评价。

    1.9 漏斗图分析法: 直观 业务流程转化率和流失率,同时可反映流程中的重要环节。

    应用:业务流程,可以结合对比分析等方法对不同细分用户群的转化率进行对比,也可以对同一行业类似产品的转化率进行比较。

    二、高级分析方法

    2.1 时间序列:更偏重于对数据的相互依赖关系进行研究(可以进行谱分析、自相关分析等)。

    4种要素组成:趋势、季节变动、循环波动(非固定长度的变动)、不规则波动

    • 描述性时序分析:直观看长期趋势和周期变化,时间序列分析选取的时间刻度越小,越能表现变量的变动情况
    • 统计时序分析:频域分析方法和时域分析方法。
    • 频域分析方法:原理是假设任何一种无趋势的时间序列都可以分解为若干个不同频率的周期波动,重点是频率特征
    • 时域分析方法:原理是时间的发展经常都具有一定的惯性,这种惯性是指序列值之间存在一定的相关关系,它包含某些统计规律。

    模型:

    • ARMA自回归移动平均
    • ARIMA自回归求和移动平均模型

    步骤:做图分析(跳点是否为异常值、拐点是否要分段拟合)、曲线拟合和参数估计。

    扩展:当X(t)中的t取非负整数时,就是一种特殊的随机过程,可以看作是时间序列

    2.2 相关分析:研究变量间相关性,即变量是否有依存关系,依存关系的相关方向和程度等。

    方法:散点图直观观察、计算相关系数r

    • 线性相关分析(区间[没有,0.3,弱相关,0.8,强相关])
    • 偏相关分析(控制一两个影响变量)
    • 距离分析(样本间、变量间)

    注意:相关系数的计算是 以直线关系为前提的。

    2.3 回归分析

    步骤:

    • 变量的确定,确定因变量、再确定自变量
    • 回归模型的建立:最小二乘法或极大似然法计算参数
    • 相关分析:分析自变量和因变量之间的关系,计算相关系数
    • 模型的检验
    • 预测值的确定

    应用:预测、确定变量相关性及相关程度

    2.4 判别分析:判别新样本的分类

    原理:依据判别原则建立判别函数,确定判别函数的变量系数,计算判别指标得出分类结果。

    方法:

    • Fisher判别:投影
    • Bayes判别:概率
    • 距离判别:距离

    2.5 主成分分析与因子分析

    主成分分析:把多个变量进行线性变换,从而得到不相关的综合变量,再根据规则选择出少数较好反映原始变量信息的增和变量。

    因子分析:根据变量相关性,将多个具有重叠信息复杂关系的变量分解为几个具有代表性的少数变量。应用于寻找变量之间的潜在结构、内在结构的证实以及评估问卷的结构效度等。

    区别:

    • 原理不同:主成分利用降维(线性变换)的思想,从多个变量中提取出少数几个比原始变量更具优越的综合指标,因子分析利用降维将原始指标分解为公因子和特殊因子。
    • 求解方法不同:主成分分析从协方差和相关矩阵除法,采用主成分法。因子分析可以使用包括主成分法、极大似然法等
    • 解释重点不同:因子分析提取的公共因子比主成分提取的主成分更具有解释性
    • 结果不同:主成分分析提取的主成分结果唯一,因子分析可以通过因子旋转得到不同的因子
    • 提取变量数量不同:主成分是固定的,因子分析是根据用户指定个数做分解

    2.6 对应分析(关联分析,R—Q型因子分析):将一个列联表的行和列种各元素的比例结构以点的形式在较低维的空间中表示出来。

    主要组成:表格和关联图

    应用:市场研究分析(市场细分、竞争分析和广告分析)

    2.7多维尺度分析(MDS)看不懂,作图结合对应分析

    三、数据挖掘

    主要数据挖掘任务包括关联分析、分类与回归、聚类分析和离群点检测。

    3.1关联分析:Apriori、FPGrowth

    3.2分类与回归

    • 决策树:ID3,C4.5,SLIQ,SPRINT
    • 贝叶斯分类算法
    • 人工神经网络
    • 支持向量机
    • 其他分类方法

    3.3 聚类分析

    3.4 离群点检测

    展开全文
  • 输出结果美观漂亮(从国外的角度看),他使用Windows的窗口方式展示各种管理和分析数据方法的功能,使用对话框展示出各种功能选择项,只要掌握一定的Windows操作技能,粗通统计分析原理,就可以使用该软件为特定的...
  • 高级篇囊括了大量现代统计学分析方法,如决策树分析、多项分类logistic回归、Poisson回归、重复测量资料分析、混合效应模型分析、时间序列分析、信度分析、结合分析、对应分析等。 SPSS与统计分析编写特色在于:先...
  • 描述分析(描述性统计分析)就是用来概括、描述数据的整体状况以及数据各特征的统计方法。 描述的内容分为: 集中趋势:平均数,众数、中位数、四分位数 离散程度:方差、标准差、极差、变异系数、四分位差 分布...

    由于我目前还没有熟练掌握SPSS,Python等高级一点的工具,而且描述性分析过于简单,所以本文将介绍如何用Excel实现描述性分析。

    一、描述性分析基本概念

    描述分析(描述性统计分析)就是用来概括、描述数据的整体状况以及数据各特征的统计方法。

    描述的内容分为:

    1. 集中趋势:平均数,众数、中位数、四分位数
    2. 离散程度:方差、标准差、极差、变异系数、四分位差
    3. 分布形态:偏度、峰度

    其中峰度和偏度是用来测量数据正态分布特性的两个指标。

    拓展:一般在工作中还会使用环比和同比来进行描述性分析。

    环比增长率=(本期数-上期数) / 上期数 * 100% 

    如:(2019年10月销量-2019年9月销量 )/2019年9月销量*100%

    同比增长率=(本期数-上一同期数) / |上一同期数| *100%

    如:(2019年10月销量-2018年10月销量)/2018年10月销量*100%

    拓展:标准化及归一化

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

    1、标准化:

    公式:  x*=\frac{x-\mu }{\sigma }(其中μ为所有样本数据的均值,σ为所有样本数据的标准差)

    结果:数值的均值为0,标准差为1的正态分布

    应用:(1)数据不稳定,存在异常值和噪音的时候(2)距离计算,PCA降维,数据不符合正态分布的时候

    2、归一化:

    公式:x*=\frac{x-min}{max-min}

    结果:把数据变成[0,1]区间的数值

    应用:(1)输出结果范围有限定(2)数据稳定,不存在极端的最大值或最小值(3)数据符合正态分布

    二、用Excel的函数实现描述性分析

    1、平均数:从上图可以看出:老用户的平均消费额比新用户的平均消费额高;

    2、四分位数:

    用QUARTILE函数来返回一组数据的四分位数。

    语法:QUARTILE(array,quart)

    QUARTILE 函数语法具有下列参数:

    array:要求得四分位数值的数组或数字型单元格区域。

    quart:指定返回哪一个值。

    quart值 QUARTILE()函数返回

    0

    最小值

    1 第一个四分位数(25%处)
    2 中位数(50%处)
    3 第三个四分位数(75%处)
    4 最大值

    3、标准差

    用STDEVP 函数来计算参数给定的整个总体计算标准偏差。

    语法:STDEVP(number1,[number2],...)

    从上图可以看出:新用户标准差比一班的要低,说明新用户的销售额分布比较分散。

    4、箱线图

    箱线图的作用:

    1. 直观明了地识别数据批中的异常值
    2. 利用箱线图可以判断数据批的偏态和尾重
    3. 利用箱线图可以同时比较几批数据的形状

    三、用Excel自带的分析工具库完成描述分析

    1、首先判断是否已经加载分析工具库,如果你的Excel中有如下菜单,说明已经启用:

    2、如果未启用,请按如下方法启用:

    a、点击 [文件] > [选项]菜单

    b、选择左侧“加载项”,并在右侧底部管理位置,选择"Excel加载项",点击“转到”

    c、选择“分析工具库” 和 “分析工具库 - VBA”,确定完成

    d、完成上述步骤,Excel工具库加载完成

    3、开始分析工作

    点击“数据分析”后,步骤如下图,

     

     So easy~

    Excel自带的数据分析工具可以最快速地帮助我们完成描述性分析的工作,但是分析的结论需要我们数据分析师自己总结归纳,数据分析的核心不是软件的使用技能,而是业务能力,切记切记。

     

    展开全文
  • Spark 高级数据分析(第2版)

    千次阅读 2018-11-06 11:55:07
    本书由业内知名数据科学家执笔,通过丰富的示例展示了如何结合 Spark、统计方法和真实世界数据集来解决数据分析问题,既涉及模型的构建和评价,也涵盖数据清洗、数据预处理和数据探索,并描述了如何将结果变为生产...

    内容简介

    作为计算框架,Spark 速度快,开发简单,能同时兼顾批处理和实时数据分析,因此很快被广大企业级用户所采纳,并随着近年人工智能的崛起而成为分析和挖掘大数据的重要得力工具。

    本书由业内知名数据科学家执笔,通过丰富的示例展示了如何结合 Spark、统计方法和真实世界数据集来解决数据分析问题,既涉及模型的构建和评价,也涵盖数据清洗、数据预处理和数据探索,并描述了如何将结果变为生产应用,是运用 Apache Spark 进行大数据分析和处理的实战宝典。

    第2版根据新版 Spark 杰出实践,对样例代码和所用资料做了大量更新。

    本书涵盖模式如下:

    • 音乐推荐和 Audioscrobbler 数据集
    • 用决策树算法预测森林植被
    • 基于 K 均值聚类进行网络流量异常检测
    • 基于潜在语义算法分析维基百科
    • 用 GraphX 分析伴生网络
    • 对纽约出租车轨迹进行空间和时间数据分析
    • 通过蒙特卡罗模拟来评估金融风险
    • 基因数据分析和 BDG 项目
    • 用 PySpark 和 Thunder 分析神经图像数据

    作者简介

    桑迪 · 里扎(Sandy Ryza),Spark 项目代码提交者、Hadoop 项目管理委员会委员,Time Series for Spark 项目创始人。曾任 Cloudera 公司高级数据科学家,现就职于 Remix 公司从事公共交通算法开发。

    于里 · 莱瑟森(Uri Laserson),MIT 博士毕业,致力于用技术解决遗传学问题,曾利用 Hadoop 生态系统开发了可扩展的基因组学和免疫学技术。目前是西奈山伊坎医学院遗传学助理教授,曾任 Cloudera 公司核心数据科学家。

    肖恩 · 欧文(Sean Owen),Spark、Mahout 项目代码提交者,Spark 项目管理委员会委员。现任 Cloudera 公司数据科学总监。

    乔希 · 威尔斯(Josh Wills),Crunch 项目发起人,现任 Slack 公司数据工程主管。曾任 Cloudera 公司高级数据科学总监。

    本书内容

    推荐序

    数据的爆炸式增长和隐藏在这些数据背后的商业价值催生了一代又一代的大数据处理技术。十余年前 Hadoop 横空出世,Doug Cutting 先生将谷歌的 MapReduce 思想用开源的方式实现出来,由此拉开了基于 MapReduce 的大数据处理框架在企业中应用的序幕。近年来,Hadoop 生态系统又发展出以 Spark 为代表的新计算框架。相比 MapReduce,Spark 速度快,开发简单,并且能同时兼顾批处理和实时数据分析。Spark 起源于加州大学伯克利分校的 AMPLab,Cloudera 公司作为大数据市场上的翘楚,很早就开始将 Spark 推广到广大企业级客户并积累了大量的经验。Advanced Analysis with Spark 一书正是这些经验的结晶。另一方面,企业级用户在引入 Spark 技术时碰到的最大难题之一就是能够灵活应用 Spark 技术的人才匮乏。龚少成与图灵公司将 Advanced Analysis with Spark 翻译成中文,让国内读者第一时间用母语感受 Spark 这一新技术在数据分析和处理方面的魔力,实在是国内技术圈的幸事。能为本书作序推荐,也算是为国内企业更好地应用 Spark 技术尽自己的一份力量!

    本书开篇介绍了 Spark 的基础知识,然后详细介绍了如何将 Spark 应用到各个行业。与许多图书只着重描述最终方案不同,本书作者在介绍案例时把解决问题的整个过程也展现了出来。在介绍一个主题时,并不是一开始就给出最终方案,而是先给出一个最初并不完善的方案,然后指出方案的不足,引导读者思考并逐步改进,最终得出一个相对完善的方案。这体现了工程问题的解决思路,也体现了大数据分析是一个迭代的过程。这样的论述方式更能激发读者的思考,这一点实在难能可贵。

    本书英文版自第 1 版出版以来,在亚马逊网站大数据分析类图书中一直名列前茅,而且获得的多为五星级评价,可见国外读者对该书的喜爱。本书中文版译者龚少成技术扎实,在英特尔和 Cloudera 工作期间带领团队成功实施过许多国内标杆大数据平台项目,最近两年又转战万达科技集团大数据中心从零到一构建 PB 级大数据平台并支撑业务落地,而且其英语功底也相当扎实,此外我偶然得知他还是国内少数通过高级口译考试的专业人才。所以本书的中文版交给龚少成翻译实在是件让人欣慰的事情。本书中文版初稿也证实了我的判断,不仅保持了英文版的风格,而且语言也十分流畅。如果你了解 Scala 语言,还有一些统计学和机器学习基础,那么本书是你学习 Spark 时必备的图书之一!

    ——苗凯翔,思科中国研发公司首席技术官,前 Cloudera 公司副总裁

    译者序

    大数据是这几年科技和应用领域炙手可热的话题,而 Spark 又是大数据领域里最活跃的技术。随着人工智能的崛起,业内对大数据的需求不再局限于一般意义上的大数据存储、加工和分析,如何挖掘大数据的潜在价值成为新的热点。本书四位作者均在 Cloudera 公司担任过数据科学家,长期为客户提供专业的数据分析和挖掘服务。可以说,本书的出版将为 Spark 在数据分析和挖掘领域起到巨大的推动作用。

    同时我们也注意到,国内介绍 Spark 数据分析方面的图书还比较匮乏,而且许多图书都停留在源代码研究的层面上。当然,这些书中也不乏非常优秀的作品,但我们认为 Spark 真正的力量在于其开发的大数据应用。所以早在本书还处于初期编写过程中时,我们就自告奋勇和作者联系中文版事宜,希望以此为中国的大数据分析事业略尽绵力。

    本书在翻译过程中得到了许多人的帮助。首先要感谢我在 Cloudera 公司的前同事,也就是本书的 4 位作者。在本书的翻译过程中,由于不同语言的习惯问题,4 位作者桑迪 • 里扎、于里 • 莱瑟森、肖恩 • 欧文和乔希 • 威尔斯花了许多时间和我交流。本人之所以有幸负责本书的中文版翻译,也是承蒙肖恩 • 欧文的引荐。其次要感谢星环信息科技有限公司创始人孙元浩先生将我带入到大数据这个领域,让我的人生轨迹发生变化;感谢思科中国研发公司首席技术官苗凯翔博士在英特尔和 Cloudera 工作期间曾经给我的指导,让我有了端正的工作态度和价值观;感谢我的前同事田占凤博士和陈建忠的鼓励,中文版的翻译工作才得以开始。同时本书在翻译过程中还得到了 Cloudera 公司中国区前同事刘贺峰、糜君、陈飚、陈新江、李大超和张莉苹的鼎力帮助。感谢图灵公司的李松峰、岳新欣、温雪编辑在翻译过程中的指导和仔细审阅。由于本书的翻译都是在周末完成的,所以特别感谢我的妻子周幼琼在每个周末对我的照顾。

    龚少成


    首先非常感谢龚少成给我这次机会,使我有幸成为本书第 2 版的译者之一。

    其次要感谢英特尔大数据团队的同事们,是你们带领我走进了 Spark 的时代。

    最后要感谢我的妻子和孩子对我工作的理解和支持,让我腾出业余时间完成此次翻译工作。

    由于译者水平有限,同时本书涉及许多课题,所以现有译文中难免存在纰漏之处。希望读者能够不吝赐教,发现问题时麻烦和译者联系。邮件请发送至 gongshaocheng@gmail.comqiuxin2012cs@gmail.com

    邱鑫

    自从在加州大学伯克利分校创立 Spark 项目起,我就时常心潮澎湃。不仅因为 Spark 可以帮助人们快速构建并行系统,更因为 Spark 帮助了越来越多的人使用大规模计算。因此看到这本介绍 Spark 高级分析的书,我非常欣慰!该书由数据科学领域 4 位专家桑迪、于里、肖恩和乔希携手打造。4 位作者研习 Spark 已久,他们在本书中跟读者分享了关于 Spark 的大量精彩内容,同时本书的案例部分同样出众!

    对于这本书,我最钟爱的是它强调案例,而且这些案例都源于现实数据和实际应用。找到 1 个像样的、能在笔记本电脑上运行的大数据案例已经很难,更遑论 10 个了。但本书作者做到了!作者为大家准备好了一切,只等你在 Spark 中运行它们。更难能可贵的是,作者不仅讨论了核心算法,更倾心于数据准备和模型调优,没有这些工作,实际项目中就无法得到好的结果。认真研读此书,你应该可以吸收这些案例中的概念并直接将其运用在自己的项目中!

    大数据处理无疑是当今计算领域最激动人心的方向之一,发展非常迅猛,新思想层出不穷。愿本书能帮助你在这个崭新的领域中扬帆启航!

    Matei Zaharia

    Databricks 公司 CTO 兼 Apache Spark 项目副总裁

    前言

    作者:桑迪 • 里扎

    我不希望我的人生有很多遗憾。2011 年,某个慵懒的时刻,我正在绞尽脑汁地想如何把高难度的离散优化问题最优地分配给计算机集群处理,真是很难想到有什么好方法。我的导师跟我讲,他听说有个叫 Apache Spark 的新技术,可我基本上没当回事。Spark 的想法太好了,让人觉得有点儿不靠谱。就这样,我很快又回去接着写 MapReduce 的本科毕业论文了。时光荏苒,Spark 和我都渐渐成熟,不过令我望尘莫及的是,Spark 已然成为冉冉之星,这让人不禁感叹“Spark”(星星之火)这个双关语是多么贴切。若干年后,Spark 的价值举世皆知!

    Spark 的前辈有很多,从 MPI 到 MapReduce。利用这些计算框架,我们写的程序可以充分利用大量资源,但不需要关心分布式系统的实现细节。数据处理的需求促进了这些技术框架的发展。同样,大数据领域也和这些框架关系密切,这些框架界定了大数据的范围。Spark 有望更进一步,让写分布式程序就像写普通程序一样。

    Spark 能大大提升 ETL 流水作业的性能,并把 MapReduce 程序员从每天问天天不灵、问地地不应的绝望痛苦中解救出来。对我而言,Spark 的激动人心之处在于,它真正打开了复杂数据分析的大门。Spark 带来了支持迭代式计算和交互式探索的模式。利用这一开源计算框架,数据科学家终于可以在大数据集上高效地工作了。

    我认为数据科学教学最有效的方法是利用实例。为此,我和同事一起编写了这本关于实际应用的书,希望它能涵盖大规模数据分析中最常用的算法、数据集和设计模式。阅读本书时不必一页一页地看,可以根据工作需要或按兴趣直接翻到相关章节。

    本书内容

    第 1 章结合数据科学和大数据分析的广阔背景来讨论 Spark。随后各章在介绍 Spark 数据分析时都自成一体。第 2 章通过数据清洗这一使用场景来介绍用 Spark 和 Scala 进行数据处理的基础知识。接下来几章深入讨论如何将 Spark 用于机器学习,介绍了常见应用中几个最常用的算法。其余几章则收集了一些更新颖的应用,比如通过文本隐含语义关系来查询 Wikipedia 或分析基因数据。

    第2版说明

    自本书第 1 版出版以来,Spark 进行了一次重大的版本更新:使用了一个全新的核心 API; MLlib 和 Spark SQL 两个子项目也发生了翻天覆地的变化。第 2 版根据新版 Spark 的最佳实践,对样例代码和所使用的资料进行了大量更新。

    使用代码示例

    补充材料(代码示例、练习、勘误表等)可以从 https://github.com/sryza/aas 下载 {1[本书中文版勘误提交及资料下载,请访问本书图灵社区页面:

    http://www.ituring.com.cn/book/2039。——编者注]}。

    本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无须联系我们获得许可。比如,用本书的几个代码片段写一个程序就无须获得许可,销售或分发 O'Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无须获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

    我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和 ISBN。比如:“Advanced Analytics with Spark by Sandy Ryza, Uri Laserson, Sean Owen, and Josh Wills (O'Reilly). Copyright 2015 Sandy Ryza, Uri Laserson, Sean Owen, and Josh Wills, 978-1-491-91276-8.”

    如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。

    O'Reilly Safari

    {40%}

    Safari(前身为 Safari Books Online)是为企业、政府、教育机构和个人提供的会员制培训和参考平台。

    会员可以访问来自 250 多家出版商的上千种图书、培训视频、学习路径、互动教程和精选播放列表。这些出版商包括 O'Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology,等等。

    欲知更多信息,请访问 https://www.safaribooksonline.com/

    联系我们

    请把对本书的评价和问题发给出版社。

    美国:

      O'Reilly Media, Inc.

      1005 Gravenstein Highway North

      Sebastopol, CA 95472

    中国:

      北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

      奥莱利技术咨询(北京)有限公司

    O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

    http://shop.oreilly.com/product/0636920056591.do

    对于本书的评论和技术性问题,请发送电子邮件到:

      bookquestions@oreilly.com

    要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

      http://www.oreilly.com

    我们在 Facebook 的地址如下:

      https://facebook.com/oreilly

    请关注我们的 Twitter 动态:

      https://twitter.com/oreillymedia

    我们的 YouTube 视频地址如下:

      https://www.youtube.com/oreillymedia

    致谢

    如果没有 Apache Spark 和 MLlib,就没有本书。所以我们应该感谢开发了 Spark 和 MLlib 并将其开源的团体,也要感谢那些添砖加瓦的数以百计的代码贡献者。

    我们还要感谢本书的每一位审阅者,感谢他们花费了大量的时间来审阅本书的内容,感谢他们的专业视角,他们是 Michael Bernico、Adam Breindel、Ian Buss、Parvis Deyhim、Jeremy Freeman、Chris Fregly、Debashish Ghosh、Juliet Hougland、Jonathan Keebler、Nisha Muktewar、Frank Nothaft、Nick Pentreath、Kostas Sakellis、Tom White、Marcelo Vanzin 和另一位 Juliet Hougland。谢谢你们所有人!我们欠你们一个大人情!你们的努力大大改进了本书的结构和质量。

    我(桑迪)还要感谢 Jordan Pinkus 和 Richard Wang,你们帮助我完成了风险分析章节的原理部分。

    感谢 Marie Beaugureau 和 O'Reilly 出版社在本书出版和发行过程中贡献的宝贵经验和大力支持!

    第1章 大数据分析

    作者:桑迪 • 里扎

    (数据应用)就像香肠,最好别看见它们是怎么做出来的。

    ——Otto von Bismarck

    • 用数千个特征和数十亿个交易来构建信用卡欺诈检测模型
    • 向数百万用户智能地推荐数百万产品
    • 通过模拟包含数百万金融工具的投资组合来评估金融风险
    • 轻松地操作成千上万个人类基因的相关数据以发现致病基因

    5~10 年前想要完成上述任务几乎是不可能的。我们说生活在大数据时代,意思是指我们拥有收集、存储、处理大量信息的工具,而这些信息的规模以前我们闻所未闻。这些能力的背后是许多开源软件组成的生态系统,它们能利用大量普通计算机处理大规模数据。Apache Hadoop 之类的分布式系统已经进入主流,并被广泛部署在几乎各个领域的组织里。

    但就像锉刀和石头本身并不构成雕塑一样,有了工具和数据并不等于就可以做有用的事情。这时我们就需要数据科学了。雕刻是利用工具将原始石材变成普通人都能看懂的雕塑,数据科学则是利用工具将原始数据变成对不懂数据科学的普通人有价值的东西。

    通常,“做有用的事情”指给数据加上模式并用 SQL 来回答问题,比如:“注册过程中许多用户进入到第三个页面,其中有多少用户年龄超过 25 岁?”如何架构一个数据仓库,并组织信息来回答此类问题,涉及的面很广,本书不对其细节过多赘述。

    有时候“产生价值”需要多付出一些努力。SQL 可能仍扮演重要角色,但为了处理数据的特质或进行复杂分析,人们需要一个更灵活、更易用的,且在机器学习和统计方面功能更丰富的编程模式。本书将重点讨论此类型的分析。

    长久以来,人们利用 R、PyData 和 Octave 等开源框架可以在小数据集上进行快速分析和建模。只需不到 10 行代码,就可以利用数据集的一部分数据构建出机器学习模型,再利用该模型预测其余数据的分类。如果多写几行代码,我们还能处理缺失数据,尝试多个模型并从中找出最佳模型,或者用一个模型的结果作为输入来拟合另一个模型。但如果数据集巨大,必须利用大量计算机来达到相同效果,我们该怎样做呢?

    一个可能正确的方法是简单扩展这些框架,使之能运行在多台机器上,保留框架的编程模型,同时重写其内核,使之在分布式环境下能顺利运行。但是,分布式计算难度大,我们必须重新思考在单机系统中的许多基本假设,在分布式环境下是否依然成立。比如,由于集群环境下数据需要在多个节点间切分,网络传输速度比内存访问慢几个数量级,如果算法涉及宽数据依赖,情况就很糟糕。随着机器数量的增加,发生故障的概率也相应增大。这些实际情况要求编程模式适配底层系统:编程模式要防止不当选项,并简化高度并行代码的编写。

    当然,除了像 PyData 和 R 这样在软件社区里表现优异的单机工具,数据分析还用到其他工具。在科学领域,比如常常涉及大规模数据的基因学,人们使用并行计算框架已经有几十年的历史了。今天,在这些领域处理数据的人大多数都熟悉 HPC(high-performance computing,高性能计算)集群计算环境。然而,PyData 和 R 的问题在于它们很难扩展。同样,HPC 的问题在于它的抽象层次较低,难于使用。比如要并行处理一个大 DNA 测序文件,人们需要手工将该文件拆成许多小文件,并为每个小文件向集群调度器提交一个作业。如果某些作业失败,用户需要检查失败并手工重新提交。如果操作涉及整个数据集,比如对整个数据集排序,庞大的数据集必须流入单个节点,否则科学家就要用 MPI 这样底层的分布式框架。这些底层框架使用难度大,用户必须精通 C 语言和分布式 / 网络系统。

    为 HPC 环境编写的工具往往很难将内存数据模型和底层存储模型独立开来。比如很多工具只能从单个流读取 POSIX 文件系统数据,很难自然并行化,不能用于读取数据库等其他后台存储。最近,Hadoop 生态系统提供了抽象,让用户使用计算机集群就像使用单台计算机一样。该抽象自动拆分文件并在多台计算机上分布式存储,自动将工作拆分成若干粒度更小的任务并分布式执行,出错时自动恢复。Hadoop 生态系统将大数据集处理涉及的许多琐碎工作自动化,并且启动开销比 HPC 小得多。

    1.1 数据科学面临的挑战

    数据科学界有几个硬道理是不能违背的,Cloudera 数据科学团队的一项重要职责就是宣扬这些硬道理。一个系统要想在海量数据的复杂数据分析方面取得成功,必须明白这些硬道理,至少不能违背。

    第一,成功的分析中,绝大部分工作是数据预处理。数据是混乱的,在让数据产生价值之前,必须对数据进行清洗、处理、融合、挖掘和许多其他操作。特别是大数据集,由于人们很难直接检查,为了知道需要哪些预处理步骤,甚至需要采用计算方法。一般情况下,即使在模型调优阶段,在整个数据处理管道的各个作业中,花在特征提取和选择上的时间比选择和实现算法的时间还要多。

    比如,在构建网站欺诈交易检测模型时,数据科学家需要从许多可能的特征中进行选择。这些特征包括必填项、IP 地址信息、登录次数、用户浏览网站时的点击日志等。在将特征转换成适用于机器学习算法的向量时,每个特征可能都会有不同的问题。系统需要支持更灵活的转换,远远不止是将二维双精度数组转换成一个数学模型那么简单。

    第二,迭代是数据科学的基础之一。建模和分析经常需要对一个数据集进行多次遍历。这其中一方面是由机器学习算法和统计过程本身造成的。常用的优化过程,比如随机梯度下降和最大似然估计,在收敛前都需要多次扫描输入数据。数据科学家自身的工作流程也涉及迭代。在初步调查和理解数据集时,一个查询的结果往往给下一个查询带来启示。在构建模型时,数据科学家往往很难在第一次就得到理想的结果。选择正确的特征,挑选合适的算法,运行恰当的显著性测试,找到合适的超参数,所有这些工作都需要反复试验。框架每次访问数据都要读磁盘,这样会增加时延,降低探索数据的速度,限制了数据科学家进行试验的次数。

    第三,构建完表现卓越的模型不等于大功告成。数据科学的目标在于让数据对不懂数据科学的人有用。把模型以许多回归权值的形式存成文本文件,放在数据科学家的计算机里,这样做根本没有实现数据科学的目标。数据推荐引擎和实时欺诈检测系统是最常见的数据应用。这些应用中,模型作为生产服务的一部分,需要定期甚至是实时重建。

    在这些场景中,有必要区别是试验环境下的分析还是生产环境下的分析。在试验环境下,数据科学家进行探索性分析。他们想理解工作数据集的本质。他们将数据图形化并用各种理论来测试。他们用各种特征做试验,用辅助数据源来增强数据。他们试验各种算法,希望从中找到一两个有效算法。在生产环境下,构建数据应用时,数据科学家进行操作式分析。他们把模型打包成服务,这些服务可以作为现实世界的决策依据。他们跟踪模型随时间的表现,哪怕是为了将模型准确率提高一个百分点,他们都会精心调整模型并且乐此不疲。他们关心服务 SLA 和在线时间。由于历史原因,探索性分析经常使用 R 之类的语言,但在构建生产应用时,数据处理过程则完全用 Java 或 C++ 重写。

    当然,如果用于建模的原始代码也可用于生产应用,那就能节省每个人的时间。但像 R 之类的语言运行缓慢,很难将其与生产基础设施的技术平台进行集成,而 Java 和 C++ 之类的语言又很难用于探索性分析。它们缺乏交互式数据操作所需的 REPL(read-evaluate-print-loop,读取 - 计算 - 打印 - 循环)环境,即使是简单的转换,也需要写大量代码。人们迫切需要一个既能轻松建模又适合生产系统的框架。

    1.2 认识Apache Spark

    该介绍 Apache Spark 了。Spark 是一个开源框架,作为计算引擎,它把程序分发到集群中的许多机器,同时提供了一个优雅的编程模型。Spark 源自加州大学伯克利分校的 AMPLab,现在已被捐献给了 Apache 软件基金会。可以这么说,对于数据科学家而言,真正让分布式编程进入寻常百姓家的开源软件,Spark 是第一个。

    了解 Spark 的最好办法莫过于了解相比于它的前辈,即 Apache Hadoop 的 MapReduce,Spark 有哪些进步。MapReduce 革新了海量数据的计算方式,为运行在成百上千台机器上的并行程序提供了简单的编程模型。MapReduce 引擎几乎可以做到线性扩展:随着数据量的增加,可以通过增加更多的计算机来保持作业时间不变。而且 MapReduce 是健壮的。故障虽然在单台机器上很少出现,但在数千个节点的集群上却总是出现。对于这种情况,MapReduce 也能妥善处理。它将工作拆分成多个小任务,能优雅地处理失败的任务,并且不影响任务所属作业的正确执行。

    Spark 继承了 MapReduce 的线性扩展性和容错性,同时对它做了一些重量级扩展。首先,Spark 摒弃了 MapReduce 先 map 再 reduce 这样的严格方式,Spark 引擎可以执行更通用的有向无环图(directed acyclic graph,DAG)算子。这就意味着,在 MapReduce 中需要将中间结果写入分布式文件系统时,Spark 能将中间结果直接传到流水作业线的下一步。在这方面,它类似于 Dryad(https://www.microsoft.com/en-us/research/project/dryad/)。Dryad 也是从 MapReduce 衍生出来的,起源于微软研究院。其次,它也完善了这种能力,通过提供许多转换操作,用户可以更自然地表达计算逻辑。Dryad 更加面向开发人员,其流式 API 可以做到用几行代码表示复杂的流水作业。

    再次,Spark 扩展了前辈们的内存计算能力。它的 Dataset 和 DataFrame 抽象使开发人员将流水处理线上的任何点物化在跨越集群节点的内存中。这样后续步骤如果需要相同数据集就不必重新计算或从磁盘加载。这个特性使 Spark 可以应用于以前分布式处理引擎无法胜任的应用场景中。Spark 非常适用于涉及大量迭代的算法,这些算法需要多次遍历相同的数据集。Spark 也适用于反应式(reactive)应用,这些应用需要扫描大量内存数据并快速响应用户的查询。

    或许最重要的是,Spark 契合了前面提到的数据科学领域的硬道理。它认识到构建数据应用的最大瓶颈不是 CPU、磁盘或者网络,而是分析人员的生产率。通过将预处理到模型评价的整个流水线整合在一个编程环境中,Spark 大大加速了开发过程。这一点尤为值得称赞。Spark 编程模型富有表达力,在 REPL 下包装了一组分析库,省去了多次往返 IDE 的开销。而这些开销对诸如 MapReduce 等框架来说是无法避免的。Spark 还避免了采样和从 Hadoop 分布式文件系统(the Hadoop distributed file system,HDFS) 来回倒腾数据所带来的问题,这些问题是 R 之类的框架经常遇到的。分析人员在数据上做实验的速度越快,他们从数据中挖掘出价值的可能性就越大。

    在数据处理和 ETL 方面,Spark 的目标是成为大数据界的 Python 而不是大数据界的 MATLAB。作为一个通用的计算引擎,它的核心 API 为数据转换提供了强大的基础,它独立于统计学、机器学习或矩阵代数的任何功能。它的 Scala 和 Python API 让我们可以用表达力极强的通用编程语言编写程序,还可以访问已有的库。

    Spark 的内存缓存使它适用于微观和宏观两个层面的迭代计算。机器学习算法需要多次遍历训练集,可以将训练集缓存在内存里。在对数据集进行探索和初步了解时,数据科学家可以在运行查询的时候将数据集放在内存中,也很容易将转换后的版本缓存起来,这样就节省了访问磁盘的开销。

    最后,Spark 在探索型分析系统和操作型分析系统之间搭起一座桥梁。我们经常说,数据科学家比统计学家更懂软件工程,比软件工程师更懂统计学。基本上讲,Spark 比探索型系统更像操作型系统,比操作型系统中常见的技术更善于数据探索。Spark 从根本上是为性能和可靠性而生的。由于构建于 JVM 之上,它可以利用 Java 技术栈里的许多操作和调试工具。

    Spark 还紧密集成 Hadoop 生态系统里的许多工具。它能读写 MapReduce 支持的所有数据格式,可以与 Hadoop 上的常用数据格式,如 Apache Avro 和 Apache Parquet(当然也包括古老的 CSV),进行交互。它能读写 NoSQL 数据库,比如 Apache HBase 和 Apache Cassandra。它的流式处理组件 Spark Streaming 能连续从 Apache Flume 和 Apache Kafka 之类的系统读取数据。它的 SQL 库 SparkSQL 能和 Apache Hive Metastore 交互,而且通过 Hive on Spark,Spark 还能替代 MapReduce 作为 Hive 的底层执行引擎。它可以运行在 Hadoop 集群调度和资源管理器 YARN 之上,这样 Spark 可以和 MapReduce 及 Apache Impala 等其他处理引擎动态共享集群资源和管理策略。

    1.3 关于本书

    本书接下来的部分不会讨论 Spark 的优缺点。还有其他一些话题本书也不会涉及。本书会介绍 Spark 的流式编程模型和 Scala 基础知识,但它不是 Spark 参考书或参考大全,不会讲 Spark 技术细节。它也不是机器学习、统计学、线性代数的参考书,但在讲到这些知识的时候,许多章节会提供一些背景知识。

    另一方面,本书将帮助读者建立用 Spark 在大规模数据集上进行复杂分析的感觉。我们会讲述整个处理过程:不但涉及模型的构建和评价,也会讲述数据清洗、数据预处理和数据探索,并会花费笔墨描述怎样将结果变成生产应用。我们认为最好的教学方法是运用实例,所以在快速介绍完 Spark 及其生态系统之后,本书其余各章分别讨论了在不同领域使用 Spark 进行数据分析的实例,每个实例都自成一体。

    如果可能的话,我们要做的不只是提供解决方案。我们会描述数据科学的整个工作流程,包括它所有的迭代、无解以及需要重新开始的情况。本书将有助于读者熟悉 Scala、Spark、机器学习和数据分析。但这都是为了一个更大的目标服务,我们希望本书首先教会读者如何完成本章开头部分提到的任务。每一章虽然只有薄薄的 20 来页,但我们会力求把怎样构建一个此类数据应用讲清楚、讲透彻。

    1.4 第2版说明

    2015 年和 2016 年 Spark 变化很大,2016 年 7 月 Spark 发布了 2.0 版本。其中改变最大的是 Spark 的核心 API。在 Spark 2.0 以前的版本中,Spark 的 API 主要围绕一个可以跨节点分布的、延迟实例化对象集合的弹性分布式数据集(Resilient Distributed Dataset,RDD)而构建。

    虽然 RDD 使用了一套强大而富有表达力的 API,但是仍然存在两个主要的问题。第一,RDD 难以高效且稳定地执行任务。由于依赖 Java 和 Python 对象,RDD 对内存的使用效率较低,而且会导致 Spark 程序受长时间垃圾回收的影响。它们还将执行计划(execution plan)与 API 捆绑到了一起,给用户优化应用程序造成了沉重的负担。例如,传统 RDBMS(关系数据库管理系统)可以根据关联表的大小来选择最优的关联策略(join strategy),而 Spark 需要用户自己来做这个选择。第二,Spark 的 API 忽视了一个事实——数据往往能用一个结构化的关系形式来表示;当出现这种情况的时候,API 应该提供一些原语,使数据更加易于操作,比如允许用户使用列的名字来访问数据,而不是通过元组中的序数位置。

    Spark 2.0 用 Dataset 和 DataFrame 替换掉 RDD 来解决上述问题。Dataset 与 RDD 十分相似,不同之处在于 Dataset 可以将它们所代表的对象映射到编码器(encoder),从而实现了一种更为高效的内存表示方法。这就意味着 Spark 程序可以执行得更快、使用更少内存,而且执行时间更好预测。Spark 还在数据集和执行计划之间加入了一个优化器,这意味着 Spark 能对如何执行做出更加智能的决策。DataFrame 是 Dataset 的子类,专门用于存储关系型数据(也就是用行和固定列表示的数据)。为了理解列的概念,Spark 提供了一套更干净的、富有表达力的 API,同时也加入了很多性能优化。举个例子,如果 Spark 知道了仅其中一部分列会被用到,它就能避免将用不到的列载入内存中。还有许多转换操作之前需要使用用户定义函数(user-defined function,UDF)来表示,现在可以在 API 中直接调用了。这对于 Python 用户来说十分有用,因为 Spark 在内部执行这些转换操作比 Python 中定义的函数要快得多。DataFrame 还可以与 Spark SQL 互相操作,这意味着用户可以写一个 SQL 查询来获取一个 DataFrame,然后选择一种 Spark 支持的语言对这个 DataFrame 进行编程操作。尽管新 API 与旧 API 看起来十分相似,但是很多细节发生了改变,因此几乎所有的 Spark 程序都要更新。

    除了核心 API 的变化以外,Spark 2.0 还见证了机器学习 API 和统计分析 API 的巨大变化。在之前的版本中,每个机器学习算法都有一套自己的 API。如果用户想要准备算法需要的输入数据,或者将一个算法的输出提供给另外一个算法,都需要写一套它们自己的自定义编制代码。Spark 2.0 包含了 Spark ML API,它引入了一个框架,可以将多种机器学习算法和特征转换步骤管道化。这个 API 受 Python 的流行框架 Scikit-Learn API 启发,以评估器(estimator)和转换器(transformer)为中心,转换器从数据中学习参数,然后用这些参数来转换数据。Spark ML API 与 DataFrame API 高度集成,使得在关系型数据上训练机器学习模型变得更容易。例如,用户可以通过名字访问特征,而不用数组下标。

    总体来说,Spark 的这些变化导致本书第 1 版中的很多内容都过时了。因此,第 2 版更新了所有的章节,并尽可能地使用最新的 API。此外,我们还删除了一些无关的章节。例如,第 1 版附录介绍了 API 的细节,第 2 版中将其删除了,一定程度上是因为现在 Spark 可以自动处理,无须用户干预。随着 Spark 进入了一个成熟而稳定的新时代,我们希望通过第 2 版的这些更新,本书在今后几年内会保持对 Spark 数据分析的参考价值。

    第2章 用 Scala 和 Spark 进行数据分析(上)
    第2章 用 Scala 和 Spark 进行数据分析(下)
    第3章 音乐推荐和 Audioscrobbler 数据集
    第4章 用决策树算法预测森林植被
    第5章 基于 K 均值聚类的网络流量异常检测
    第6章 基于潜在语义分析算法分析维基百科
    第7章 用 GraphX 分析伴生网络
    第8章 纽约出租车轨迹的空间和时间数据分析
    第9章 基于蒙特卡罗模拟的金融风险评估
    第10章 基因数据分析和 BDG 项目
    第11章 基于 PySpark 和 Thunder 的神经图像数据分析
    封面介绍

    阅读全文: http://gitbook.cn/gitchat/geekbook/5b95f204780fdb5e97d39763

    展开全文
  • 在这里,我们采用这种方法来优化处理EEG数据集,并使用基于排列的统计数据来建立有效的统计分析。 此外,我们将结果与使用现实的模拟EEG信号当前可用的其他几种非参数和参数方法进行比较。 所显示的方法通常对EEG...
  • 一本关于数据分析方法的教科书,旨在为已经参加过概率,数理统计和线性回归课程的高级本科生提供为期一学期的课程。
  • 通过StatPlus 6可以获得一套强大的统计工具和图形分析方法,其界面简洁,无需专业培训即可使用。StatPlus6 被广泛应用与社会学,财务分析,生物统计学,经济学,保险业,医疗保健和临床研究中的数据分析,需要的朋友...
  • 高级软件需求分析

    千次阅读 2013-06-13 09:25:29
    一、培训要点  在高质量软件项目中,需求工程的...但是目前在软件需求分析领域,还存在着过程粗糙、方法随意、分析欠深入等问题,进而极大的影响产品质量,这正是在软件项目中,我们需要对需求分析下功夫的最大原因,
  • 数据采集之全埋点数据采集分析方法的一些整理,包含一些思路、方法逻辑的整理分析,供数据采集分析爱好者参考。 埋点的定义: 埋点分析,是网站分析的一种常用的数据采集方法。数据埋点分为初级、中级、高级三种...
  • 作者:胡良平 主编 出版社:电子工业出版社 出版时间:2015年09月 本书内容丰富且新颖, 适用面宽且可操作性强... 第5、 6篇共16章, 对定量与定性结果提供了数十种预测性分析方法, 包括定量和定性原因变量的判别分析。
  • 高级数据类型 Bitmaps Bitmaps类型的基础操作 获取指定key对应偏移量上的bit值 getbit key offset 设置指定key对应偏移量上的bit值,value只能是1或0 setbit key offset value Bitmaps类型的扩展操作 业务...
  • 数据分析的前提就是找到数据,只有找到数据我们才能够分析数据,在这篇文章中我们会给大家详细的解释一下R语言和Python语言、统计知识、分析思维以及业务知识。 先来给大家说一说编程语言各自的有点。再前面我们给...
  • 7.1 处理分类属性 二元化分类属性 7.2 处理连续属性 包含连续属性的关联规则通常称为量化关联...2.规则确认:当由规则覆盖的事务计算的统计量不同于未被规则覆盖的事务计算的统计量 7.2.3 非离散化方法 min...
  • 应用文献计量学方法,对《陕西师范大学学报》(自然科学版)2003-2007年发表的论文进行统计分析,为其发展提供决策依据。该刊5年20期共栽文617篇,年篇均页码3.79~4.35,平均4.02页。平均基金项目论文为112%(80.8%...
  • (2017)神经科学中的高级数据分析:集成统计和计算模型。 海德堡:施普林格。 所有文件都根据首先参考的章节分类为.zip文件夹(这意味着后面的章节中可能还会需要一些数据或代码文件)。 前缀“ MATL”指的是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 917
精华内容 366
关键字:

统计高级分析方法