产品特色
编辑推荐
畅销书《程序员的数学》第2弹!
机器学习、数据挖掘、模式识别必备基础知识
从入门到应用,结合大量实例和263张图表
1. 图文直观
穿插大量有趣的实例和263张图表
2. 通俗易懂
借助高中数学知识解释各类概率统计问题
3. 角度新颖
独特的编排思路,巧妙阐述了概率论与统计学的基本理论
4. 内容全面
从入门到应用,系统讲解概率统计的方方面面
内容简介
《程序员的数学2:概率统计》沿袭《程序员的数学》平易近人的风格,用通俗的语言和具体的图表深入讲解程序员必须掌握的各类概率统计知识,例证丰富,讲解明晰,且提供了大量扩展内容,引导读者进一步深入学习。
《程序员的数学2:概率统计》涉及随机变量、贝叶斯公式、离散值和连续值的概率分布、协方差矩阵、多元正态分布、估计与检验理论、伪随机数以及概率论的各类应用,适合程序设计人员与数学爱好者阅读,也可作为高中或大学非数学专业学生的概率论入门读物。
作者简介
平冈和幸(作者),
数理工程学博士,对机器学习兴趣浓厚。喜欢Ruby,热爱Scheme。被CommonLisp吸引,正在潜心研究。
堀玄(作者),
数理工程学博士,主要从事脑科学与信号处理领域的研究。喜欢Ruby、JavaScript、PostScript等语言。正在研究基于统计学理论的语言处理。
陈筱烟(译者),
毕业于复旦大学计算机科学与技术系。从大学时期开始接触Java、JavaScript程序开发,目前对Web应用及智能手机应用开发很感兴趣。译作有《JavaScript编程全解》《App,这样设计才好卖》《两周自制脚本语言》等。
内页插图
目录
第1部分 聊聊概率这件事
第1章 概率的定义 3
1.1 概率的数学定义 3
1.2 三扇门(蒙提霍尔问题) ——飞艇视角 4
1.2.1 蒙提霍尔问题 5
1.2.2 正确答案与常见错误 6
1.2.3 以飞艇视角表述 6
1.3 三元组(Ω, F, P) ——上帝视角 9
1.4 随机变量 13
1.5 概率分布 17
1.6 适于实际使用的简记方式 19
1.6.1 随机变量的表示方法 19
1.6.2 概率的表示方法 20
1.7 ?是幕后角色 21
1.7.1 不必在意?究竟是什么 21
1.7.2 ?的习惯处理方式 22
1.7.3 不含?(不含上帝视角)的概率论 23
1.8 一些注意事项 23
1.8.1 想做什么 23
1.8.2 因为是面积…… 24
1.8.3 解释 26
第2章 多个随机变量之间的关系 29
2.1 各县的土地使用情况(面积计算的预热) 29
2.1.1 不同县、不同用途的统计(联合概率与边缘概率的预热) 30
2.1.2 特定县、特定用途的比例(条件概率的预热) 31
2.1.3 倒推比例(贝叶斯公式的预热) 32
2.1.4 比例相同的情况(独立性的预热) 34
2.1.5 预热结束 38
2.2 联合概率与边缘概率 38
2.2.1 两个随机变量 38
2.2.2 三个随机变量 41
2.3 条件概率 42
2.3.1 条件概率的定义 42
2.3.2 联合分布、边缘分布与条件分布的关系 45
2.3.3 即使条件中使用的不是等号也一样适用 50
2.3.4 三个或更多的随机变量 51
2.4 贝叶斯公式 55
2.4.1 问题设置 56
2.4.2 贝叶斯的作图曲 57
2.4.3 贝叶斯公式 61
2.5 独立性 63
2.5.1 事件的独立性(定义) 64
2.5.2 事件的独立性(等价表述) 67
2.5.3 随机变量的独立性 70
2.5.4 三个或更多随机变量的独立性(需多加注意) 73
第3章 离散值的概率分布 79
3.1 一些简单的例子 79
3.2 二项分布 82
3.2.1 二项分布的推导 82
3.2.2 补充:排列nPk、组合nCk 83
3.3 期望值 85
3.3.1 期望值的定义 85
3.3.2 期望值的基本性质 87
3.3.3 期望值乘法运算的注意事项 91
3.3.4 期望值不存在的情况 93
3.4 方差与标准差 99
3.4.1 即使期望值相同 99
3.4.2 方差即“期望值离散程度”的期望值 100
3.4.3 标准差 102
3.4.4 常量的加法、乘法及标准化 104
3.4.5 各项独立时,和的方差等于方差的和 108
3.4.6 平方的期望值与方差 110
3.5 大数定律 112
3.5.1 独立同分布 114
3.5.2 平均值的期望值与平均值的方差 116
3.5.3 大数定律 117
3.5.4 大数定律的相关注意事项 118
3.6 补充内容:条件期望与最小二乘法 120
3.6.1 条件期望的定义 120
3.6.2 最小二乘法 121
3.6.3 上帝视角 122
3.6.4 条件方差 123
第4章 连续值的概率分布 127
4.1 渐变色打印问题(密度计算的预热) 128
4.1.1 用图表描述油墨的消耗量(累积分布函数的预热) 128
4.1.2 用图表描述油墨的打印浓度(概率密度函数预热) 129
4.1.3 拉伸打印成品对油墨浓度的影响(变量变换的预热) 133
4.2 概率为零的情况 136
4.2.1 出现概率恰好为零的情况 137
4.2.2 概率为零将带来什么问题 139
4.3 概率密度函数 140
4.3.1 概率密度函数 140
4.3.2 均匀分布 146
4.3.3 概率密度函数的变量变换 147
4.4 联合分布·边缘分布·条件分布 152
4.4.1 联合分布 152
4.4.2 本小节之后的阅读方式 155
4.4.3 边缘分布 155
4.4.4 条件分布 159
4.4.5 贝叶斯公式 162
4.4.6 独立性 163
4.4.7 任意区域的概率·均匀分布·变量变换 166
4.4.8 实数值与离散值混合存在的情况 174
4.5 期望值、方差与标准差 174
4.5.1 期望值 175
4.5.2 方差·标准差 179
4.6 正态分布与中心极限定理 180
4.6.1 标准正态分布 181
4.6.2 一般正态分布 184
4.6.3 中心极限定理 187
第5章 协方差矩阵、多元正态分布与椭圆 195
5.1 协方差与相关系数 196
5.1.1 协方差 196
5.1.2 协方差的性质 199
5.1.3 分布倾向的明显程度与相关系数 200
5.1.4 协方差与相关系数的局限性 206
5.2 协方差矩阵 208
5.2.1 协方差矩阵=方差与协方差的一览表 208
5.2.2 协方差矩阵的向量形式表述 209
5.2.3 向量与矩阵的运算及期望值 212
5.2.4 向量值随机变量的补充说明 215
5.2.5 协方差矩阵的变量变换 217
5.2.6 任意方向的发散程度 218
5.3 多元正态分布 220
5.3.1 多元标准正态分布 220
5.3.2 多元一般正态分布 223
5.3.3 多元正态分布的概率密度函数 228
5.3.4 多元正态分布的性质 230
5.3.5 截面与投影 232
5.3.6 补充知识:卡方分布 239
5.4 协方差矩阵与椭圆的关系 242
5.4.1 (实例一)单位矩阵与圆 242
5.4.2 (实例二)对角矩阵与椭圆 244
5.4.3 (实例三)一般矩阵与倾斜的椭圆 247
5.4.4 协方差矩阵的局限性 251
第2部分 探讨概率的应用
第6章 估计与检验 257
6.1 估计理论 257
6.1.1 描述统计与推断统计 257
6.1.2 描述统计 258
6.1.3 如何理解推断统计中的一些概念 260
6.1.4 问题设定 264
6.1.5 期望罚款金额 265
6.1.6 多目标优化 266
6.1.7 (策略一)减少候选项——最小方差无偏估计 267
6.1.8 (策略二)弱化最优定义——最大似然估计 269
6.1.9 (策略三)以单一数值作为评价基准——贝叶斯估计 272
6.1.10 策略选择的相关注意事项 275
6.2 检验理论 276
6.2.1 检验理论中的逻辑 276
6.2.2 检验理论概述 278
6.2.3 简单假设 279
6.2.4 复合假设 282
第7章 伪随机数 285
7.1 伪随机数的基础知识 285
7.1.1 随机数序列 285
7.1.2 伪随机数序列 286
7.1.3 典型应用:蒙特卡罗方法 287
7.1.4 相关主题:密码理论中的伪随机数序列·低差异序列 289
7.2 遵从特定分布的随机数的生成 291
7.2.1 遵从离散值分布的随机数的生成 292
7.2.2 遵从连续值分布的随机数的生成 293
7.2.3 遵从正态分布的随机数的生成 296
7.2.4 补充知识:三角形内及球面上的均匀分布 298
第8章 概率论的各类应用 305
8.1 回归分析与多变量分析 305
8.1.1 通过最小二乘法拟合直线 305
8.1.2 主成分分析 312
8.2 随机过程 319
8.2.1 随机游走 321
8.2.2 卡尔曼滤波器 326
8.2.3 马尔可夫链 331
8.2.4 关于随机过程的一些补充说明 342
8.3 信息论 343
8.3.1 熵 343
8.3.2 二元熵 347
8.3.3 信源编码 349
8.3.4 信道编码 352
附录A 本书涉及的数学基础知识 359
A.1 希腊字母 359
A.2 数 359
A.2.1 自然数·整数 359
A.2.2 有理数·实数 359
A.2.3 复数 360
A.3 集合 360
A.3.1 集合的表述方式 360
A.3.2 无限集的大小 361
A.3.3 强化练习 361
A.4 求和符号? 362
A.4.1 定义与基本性质 362
A.4.2 双重求和 364
A.4.3 范围指定 366
A.4.4 等比数列 366
A.5 指数与对数 368
A.5.1 指数函数 368
A.5.2 高斯积分 371
A.5.3 对数函数 374
A.6 内积与长度 377
附录B 近似公式与不等式 381
B.1 斯特林公式 381
B.2 琴生不等式 381
B.3 吉布斯不等式 384
B.4 马尔可夫不等式与切比雪夫不等式 385
B
精彩书摘
1.5为什么非要使用平行世界这样夸张的说法?会场与飞艇的比喻更加容易理解嘛 之所以这么做,是为了准备无限多的备选情况。例如,飞行距离与捕鱼量(重量)都是连续量,我们无法逐个数出这些值所有的可能情况。此时,无论我们准备多少会场,都无法对应所有的备选情况,因而无法模拟原本的概率。此外,如果概率是1/√2这样的无理数值(无法以整数/整数的形式表示的值),即使我们准备再多的会场,也不能准确表现这一概率。因此,我们必须改用更加通用的形式。 1.6我不太理解由所有平行世界组成的集合Q是什么概念。请再解释一下吧 读者只需暂且按照插图示例,将其理解为面积为1的正方形即可。1.7节将作更详细的解答。 1.7感觉我们是不是把问题过分简化了?去除了一些关键的要素后,还有讨论的价值吗 这不正是数学常用的解决方式吗? 例如,行星探测器与星体的距离时刻都在变化,如果我们以时间为横轴,以距离为纵轴作图,就能通过一张静态图像表示探测器从过去到未来的运动情况。于是,时间这种特殊概念,也能转换为数学形式,借助普通的数字与函数表述。 本节的内容也是如此。概率存在多种可能,如果我们以(Ω,F,P)表述概率,就能以一种静态的方式呈现所有的可能情况。于是,概率这种特殊概念就像这样转换为了数学形式,能通过普通的集合、数字与函数表述。 ……
前言/序言
《程序员的数学2:概率统计》 内容简介 在瞬息万变的数字时代,数据的洪流如同奔腾的河流,裹挟着信息,塑造着我们的决策。而在这股浪潮之下,隐藏着深刻的规律和必然。理解这些规律,便是驾驭数据、洞悉未来的关键。《程序员的数学2:概率统计》正是为致力于掌握这一力量的你而精心打造的指南。 本书并非枯燥乏味的理论堆砌,而是以程序员的视角,深刻剖析概率统计这门强大而优雅的数学分支,如何在实际的软件开发、数据分析、机器学习,乃至日常的决策中发挥着至关重要的作用。我们将从最基础的概率论概念出发,循序渐进,层层深入,最终抵达现代数据科学的核心。 第一部分:概率论的基石——理解随机性 我们首先将从概率论的基石——事件、样本空间和概率——开始。你将理解什么是随机事件,如何量化不确定性。我们将学习古典概率、统计概率和公理化概率,理解它们各自的应用场景。 事件与样本空间: 每一个程序都可能包含着不确定性,例如用户输入、网络延迟、传感器读数等等。我们如何描述这些不确定性?我们将学习如何定义事件,以及包含所有可能结果的样本空间。例如,在模拟一次网络请求时,成功或失败就是一个事件,而所有可能的结果(如成功、超时、连接错误)构成了样本空间。 概率的定义与性质: 如何量化一个事件发生的可能性?本书将详细介绍概率的几种主要定义方式,并阐述概率的基本公理和性质,例如加法法则(用于计算互斥事件或非互斥事件的联合概率)和乘法法则(用于计算多个事件同时发生的概率)。我们将探讨条件概率,这是理解因果关系和依赖关系的核心,例如“已知用户点击了广告,他购买商品的概率是多少?”。 随机变量: 在程序中,我们经常需要处理数值型的随机结果,例如一个函数的返回值、一个算法的运行时间。随机变量的概念将帮助我们将随机事件映射到数值,使我们能够进行更深入的数学分析。我们将区分离散随机变量(如抛硬币的正面次数)和连续随机变量(如一次网络请求的响应时间)。 概率分布: 不同的随机变量具有不同的概率分布规律。本书将深入介绍一些最重要、最常用的概率分布,包括: 伯努利分布与二项分布: 它们是描述独立重复的0/1试验(如成功/失败)的基础。理解二项分布对于分析用户行为(如转化率)、A/B测试结果等至关重要。 泊松分布: 适用于描述在固定时间或空间内发生随机事件的次数,例如网站每分钟的访问量、某个时间段内发生的错误数量。 均匀分布: 最简单的连续分布,表示所有结果发生的可能性均等,例如在一个时间窗口内随机生成一个数。 指数分布: 描述两次连续事件发生之间的时间间隔,常用于分析系统故障间隔、用户会话时长等。 正态分布(高斯分布): 概率统计中最核心、最强大的分布之一。许多自然现象和社会现象都近似服从正态分布,例如人的身高、测量误差、许多性能指标。我们将学习其概率密度函数(PDF)和累积分布函数(CDF),理解其“钟形曲线”的特性,以及标准正态分布的意义。 第二部分:统计推断的艺术——从样本到总体 有了概率论的坚实基础,我们便进入了统计推断的领域,这是从有限的观测数据中提取信息、做出关于未知总体的结论的科学。 描述性统计: 在开始推断之前,我们首先需要有效地描述和概括数据。我们将学习各种描述性统计量,包括: 均值、中位数、众数: 了解数据的中心趋势。 方差、标准差、均方差: 量化数据的离散程度和波动性。 百分位数、四分位数: 刻画数据的分布和分布范围。 直方图、箱线图、散点图: 通过可视化手段直观地展示数据特征。 抽样分布: 我们通常无法获取总体数据,只能通过抽样来获取信息。抽样分布是连接样本统计量和总体参数的关键桥梁。我们将重点关注样本均值的抽样分布,以及中心极限定理的强大威力。中心极限定理告诉我们,即使总体分布不服从正态分布,当样本量足够大时,样本均值的抽样分布也近似服从正态分布,这使得统计推断成为可能。 参数估计: 如何利用样本统计量来估计未知的总体参数?我们将学习: 点估计: 使用一个单一的数值来估计总体参数,例如使用样本均值估计总体均值。 区间估计(置信区间): 提供一个范围,我们有一定信心认为总体参数落在这个范围内。我们将学习如何计算均值、比例、方差等的置信区间,并理解置信水平的含义。例如,我们可以计算出“我们有95%的信心认为网站的用户平均停留时间在X到Y分钟之间”。 假设检验: 假设检验是统计推断的核心技术之一,用于在统计证据的支持下,对关于总体参数的某种假设做出判断。我们将学习: 零假设(H0)和备择假设(H1): 如何设定待检验的假设。 检验统计量: 用于量化样本数据与零假设之间差异的统计量。 P值: 衡量在零假设成立的情况下,观察到当前样本数据或更极端数据的概率。我们将深刻理解P值的含义,以及如何根据P值做出拒绝或不拒绝零假设的决定。 第一类错误(α)和第二类错误(β): 理解检验的风险。 常见的假设检验方法: 例如 t检验(用于比较两组均值)、卡方检验(用于分析分类变量的关联性)、Z检验等。这些检验在A/B测试、用户行为分析、错误率检测等场景中无处不在。 第三部分:概率统计在编程中的应用 理论知识固然重要,但《程序员的数学2:概率统计》更侧重于将这些概念与实际的编程任务相结合。 蒙特卡洛方法: 利用随机抽样来近似计算难以解析求解的问题。我们将看到如何使用概率统计工具来模拟复杂的系统行为,例如模拟复杂算法的性能、估算高维积分。 随机数生成器(RNG): 程序的许多方面都需要随机数,从游戏开发到科学计算。我们将探讨伪随机数生成器的原理,以及如何评估其质量。 概率模型在算法设计中的应用: 例如,随机化算法(如快速排序的随机化版本)如何通过引入随机性来提高平均性能和降低最坏情况发生的概率。 性能分析与优化: 利用统计方法分析程序运行时的性能指标,例如响应时间、内存占用,从而找出瓶颈并进行优化。 A/B测试的统计学基础: 如何科学地设计和评估A/B测试,确保实验结果的有效性和可靠性。我们将详细解析如何选择合适的统计检验方法,以及如何解读P值和置信区间。 数据科学与机器学习入门: 概率统计是机器学习的基石。我们将简要介绍朴素贝叶斯分类器(一个基于条件概率的经典分类算法),以及线性回归(利用统计学原理进行预测)等概念,为你深入学习更高级的机器学习模型打下坚实基础。 学习本书,你将获得: 清晰的数学概念: 从根本上理解概率统计的核心思想。 编程视角下的讲解: 将抽象的数学概念与具体的编程场景联系起来。 实用的算法与方法: 学习如何将概率统计技术应用于解决实际的编程问题。 数据驱动的思维方式: 培养用数据说话、用统计思维解决问题的能力。 为进阶学习打下坚实基础: 掌握概率统计,是你深入机器学习、人工智能、大数据等前沿领域的必备通行证。 无论你是在开发复杂的分布式系统,还是在设计用户友好的Web应用,亦或是在探索数据的无限可能,《程序员的数学2:概率统计》都将是你手中不可或缺的利器。让我们一起,用数学的力量,洞悉随机,掌控数据,创造更智能、更高效的未来!