viii
基于 ISLR 的替代方案。因此,这本书《统计学习引论:Python 应用》(ISLP),涵盖了与 ISLR 相同的内容,但实验室是用 Python 实现的——这是通过增加一位新合著者,乔纳森·泰勒(Jonathan Taylor)而实现的。其中一些实验室使用了我们编写的 ISLP Python 包,以便在 Python 中执行每章中涵盖的统计学习方法。这些实验室对于 Python 新手以及有经验的用户都很有用。
ISLP(以及 ISLR)的目的是更注重方法的应用而不是数学细节,因此它适合统计学或相关定量领域的本科生或研究生,或者希望使用统计学习工具分析数据的其他学科人员。它可以作为跨越两个学期的课程的教科书。
我们对这些读者为 ISLR 第一版提供宝贵意见表示感谢:Pallavi Basu、Alexandra Chouldechova、Patrick Danaher、Will Fithian、Luella Fu、Sam Gross、Max Grazier G’Sell、Courtney Paulson、Xinghao Qiao、Elisa Sheng、Noah Simon、Kean Ming Tan、Xin Lu Tan。我们感谢这些读者为 ISLR 第二版提供有益意见:Alan Agresti、Iain Carmichael、Yiqun Chen、Erin Craig、Daisy Ding、Lucy Gao、Ismael Lemhadri、Bryan Martin、Anna Neufeld、Geoff Tims、Carsten Voelkmann、Steve Yadlowsky 和 James Zou。我们对 Balasubramanian “Naras” Narasimhan 在 ISLR 和 ISLP 上的帮助表示由衷的感谢。
我们很荣幸和自豪地看到 ISLR 对统计学习实践方式产生的重大影响,无论是在学术环境内还是外。我们希望这个新的 Python 版本将继续为今天的和未来的应用统计学家和数据科学家提供他们在数据驱动世界中取得成功所需的工具。
预测很困难,尤其是关于未来的预测。
- yogi berra
序言
内容
序言
vii
1
简介
1
2
统计学习
15
2.1
什么是统计学习
15
2.1.1
为什么估计 f
17
2.1.2
我们如何估计 f
20
2.1.3
预测准确性与模型可解释性之间的权衡
23
2.1.4
监督学习与无监督学习
25
2.1.5
回归与分类问题
27
2.2
评估模型准确性
27
2.2.1
衡量拟合质量
28
2.2.2
偏差-方差权衡
31
2.2.3
分类设置
34
2.3
实验室:Python 简介
40
2.3.1
开始使用
40
2.3.2
基本命令
40
2.3.3
数值 Python 简介
42
2.3.4
图形
48
2.3.5
序列和切片表示法
51
2.3.6
索引数据
51
2.3.7
加载数据
55
2.3.8
for 循环
59
2.3.9
附加图形和数值摘要。
61
2.4
练习
63
3
线性回归
69
3.1
简单线性回归
70
3.1.1
估计系数
71
3.1.2
评估系数估计的准确性
72
3.1.3
评估模型的准确性
77
3.2
多重线性回归
80
3.2.1
估计回归系数
81
ix
x
内容
3.2.2
一些重要问题
83
3.3
其他回归模型考虑因素
91
3.3.1
定性预测指标
91
3.3.2
线性模型的扩展
94
3.3.3
潜在问题
100
3.4
市场营销计划
109
3.5
线性回归与 K 近邻比较
111
3.6
实验室:线性回归
116
3.6.1
导入包
116
3.6.2
简单线性回归
117
3.6.3
多重线性回归
122
3.6.4
多元拟合优度
123
3.6.5
交互项
124
3.6.6
非线性预测因子变换
. . .
125
3.6.7
定性预测指标
126
3.7
练习
127
4
分类
135
4.1
分类概述
135
4.2
为什么不使用线性回归
136
4.3
逻辑回归
138
4.3.1
逻辑模型
139
4.3.2
估计回归系数
140
4.3.3
制作预测
141
4.3.4
多重逻辑回归
142
4.3.5
多项逻辑回归
144
4.4
生成模型用于分类
146
4.4.1
线性判别分析,p = 1
147
4.4.2
线性判别分析(p>1)
150
4.4.3
二次判别分析
156
4.4.4
朴素贝叶斯
158
4.5
分类方法比较
161
4.5.1
一个分析比较
161
4.5.2
实证比较
164
4.6
广义线性模型
167
4.6.1
线性回归在共享单车数据上
167
4.6.2
泊松回归分析共享单车数据
169
4.6.3
广义线性模型在更一般的情况下
.
172
4.7
实验室:逻辑回归、LDA、QDA 和 KNN
173
4.7.1
股市数据
173
4.7.2
逻辑回归
174
4.7.3
线性判别分析
179
4.7.4
二次判别分析
181
4.7.5
朴素贝叶斯
182
4.7.6
K-最近邻
183
4.7.7
线性与泊松回归在共享单车数据上
4.8
练习
193
内容
xi
5
重采样方法
201
5.1
交叉验证
202
5.1.1
验证集方法
202
5.1.2
留一法交叉验证
204
5.1.3
k 折交叉验证
206
5.1.4
偏差-方差权衡对于 k 折交叉验证
208
5.1.5
交叉验证在分类问题中的应用
209
5.2
The Bootstrap 引导框架
212
5.3
实验室:交叉验证和自助法
215
5.3.1
验证集方法
216
5.3.2
交叉验证
217
5.3.3
The Bootstrap 引导框架
220
5.4
练习
224
6
线性模型选择与正则化
229
6.1
子集选择
231
6.1.1
最佳子集选择
231
6.1.2
逐步选择
233
6.1.3
选择最佳模型
235
6.2
收缩方法
240
6.2.1
岭回归
240
6.2.2
拉索
244
6.2.3
选择调整参数
252
6.3
降维方法
253
6.3.1
主成分回归
254
6.3.2
偏最小二乘法
260
6.4
高维度的考虑
262
6.4.1
高维数据
262
6.4.2
什么是高维空间中的问题?
263
6.4.3
高维回归
265
6.4.4
高维结果解释
266
6.5
实验室:线性模型与正则化方法
267
6.5.1
子集选择方法
268
6.5.2
岭回归与 Lasso
273
6.5.3
PCR 和 PLS 回归
280
6.6
练习
283
7
超越线性
289
7.1
多项式回归
290
7.2
步骤函数
292
7.3
基础函数
293
7.4
回归样条
294
7.4.1
分段多项式
294
7.4.2
约束和样条曲线
296
7.4.3
样条基表示
296
7.4.4
选择结点的数量和位置
297
7.4.5
比较多项式回归
299
xii
内容
7.5
平滑样条
300
7.5.1
平滑样条概述
300
7.5.2
选择平滑参数λ
301
7.6
局部回归
303
7.7
广义加性模型
305
7.7.1
GAMs 用于回归问题
306
7.7.2
GAMs 用于分类问题
308
7.8
实验室:非线性建模
309
7.8.1
多项式回归和阶梯函数
310
7.8.2
样条曲线
315
7.8.3
平滑样条和广义加性模型
317
7.8.4
局部回归
324
7.9
练习
325
8
基于树的方法
331
8.1
决策树基础
331
8.1.1
回归树
331
8.1.2
分类树
337
8.1.3
树木与线性模型
341
8.1.4
树木的优缺点
341
8.2
装袋,随机森林,提升,贝叶斯加性回归树
343
8.2.1
打包
343
8.2.2
随机森林
346
8.2.3
提升
347
8.2.4
贝叶斯加性回归树
350
8.2.5
树集成方法概述
353
8.3
实验室:基于树的方法
354
8.3.1
拟合分类树
355
8.3.2
拟合回归树
358
8.3.3
装袋和随机森林
360
8.3.4
提升
361
8.3.5
贝叶斯加性回归树
362
8.4
练习
363
9
支持向量机
367
9.1
最大间隔分类器
367
9.1.1
什么是超平面
368
9.1.2
使用分离超平面进行分类
. . .
368
9.1.3
最大间隔分类器
370
9.1.4
最大边缘分类器构建
. .
372
9.1.5
不可分情况
372
9.2
支持向量分类器
373
9.2.1
支持向量机分类器概述
373
9.2.2
支持向量机分类器细节
374
9.3
支持向量机
377
9.3.1
非线性决策边界分类
378
9.3.2
支持向量机
379
内容
xiii
9.3.3
一个关于心脏病数据的应用
382
9.4
支持多类别的 SVM
383
9.4.1
一对一分类
384
9.4.2
一对一分类
384
9.5
关系到逻辑回归
384
9.6
实验室:支持向量机
387
9.6.1
支持向量机分类器
387
9.6.2
支持向量机
390
9.6.3
ROC 曲线
392
9.6.4
支持向量机多分类
393
9.6.5
基因表达数据分析应用
394
9.7
练习
395
10 深度学习
399
10.1
单层神经网络
400
10.2
多层神经网络
402
10.3
卷积神经网络
406
10.3.1
卷积层
407
10.3.2
池化层
410
10.3.3
卷积神经网络架构
410
10.3.4
数据增强
411
10.3.5
使用预训练分类器的结果
412
10.4
文档分类
413
10.5
循环神经网络
416
10.5.1
序列模型用于文档分类
. .
418
10.5.2
时间序列预测
420
10.5.3
RNNs 总结
424
10.6
何时使用深度学习
425
10.7
适配神经网络
427
10.7.1
反向传播
428
10.7.2
正则化和随机梯度下降
429
10.7.3
dropout 学习
431
10.7.4
网络调优
431
10.8
插值与双重下降
432
10.9
实验室:深度学习
435
10.9.1
单层网络在打击者数据上
437
10.9.2
多层网络在 MNIST 数字数据集上...
444
10.9.3
卷积神经网络
448
10.9.4
使用预训练的 CNN 模型
452
10.9.5
IMDB 文档分类
454
10.9.6
循环神经网络
458
10.10 练习
465
生存分析和截尾数据
469
11.1
生存与删减时间
470
11.2
更深入地了解审查
470
11.3
卡普兰-梅耶生存曲线
472
11.4
对数秩检验
474
11.5
回归模型与生存响应
476
xiv
内容
11.5.1
危害函数
476
11.5.2
比例风险
478
11.5.3
脑癌数据
482
11.5.4
示例:出版物数据
482
11.6
模型收缩
484
11.7
附加主题
486
11.7.1
曲线下面积(生存分析)
486
11.7.2
时间尺度选择
487
11.7.3
时间依赖协变量
488
11.7.4
检查比例风险假设...
488
11.7.5
生存树
488
11.8
实验室:生存分析
489
11.8.1
脑癌数据
489
11.8.2
出版物数据
493
11.8.3
呼叫中心数据
494
11.9
练习
498
无监督学习
503
12.1
无监督学习的挑战
503
12.2
主成分分析
504
12.2.1
什么是主成分
505
12.2.2
另一种主成分分析的解释
.
508
12.2.3
解释方差的比例
510
12.2.4
更多关于主成分分析的内容
512
12.2.5
其他主成分的用途
515
12.3
缺失值与矩阵补全
515
12.4
聚类方法
520
12.4.1
K-均值聚类
521
12.4.2
层次聚类
525
12.4.3
聚类中的实际问题
532
12.5
实验室:无监督学习
535
12.5.1
主成分分析
535
12.5.2
矩阵补全
539
12.5.3
聚类
542
12.5.4
NCI60 数据示例
546
12.6
练习
552
13 多重测试
557
13.1
假设检验快速回顾
558
13.1.1
测试一个假设
558
13.1.2
I 型和 II 型错误
562
13.2
多重检验的挑战
563
13.3
家庭错误率
565
13.3.1
什么是家庭错误率?
565
13.3.2
控制家族错误率的途径
567
13.3.3
权衡错误发现率(FWER)和功效
572
13.4
假发现率
573
13.4.1
直觉对于假发现率
573
13.4.2
本雅明-霍赫伯格方法
575
2
1.
简介
20
40
60
80
50
100
200
300
Age
Wage
2003
2006
2009
50
100
200
300
Year
Wage
1
2
3
4
5
50
100
200
300
教育水平
Wage
图 1.1. 工资数据,包含美国中大西洋地区男性收入调查信息。左侧:工资随年龄变化。平均而言,工资在约 60 岁时达到峰值,之后开始下降。中间:工资随年份变化。2003 年至 2009 年间,平均工资缓慢但稳定地增长约 10000 美元。右侧:箱线图显示工资随教育水平变化,其中 1 表示最低水平(无高中文凭)和 5 表示最高水平(高级学位)。平均而言,工资随教育水平提高而增加。
我们也有关于每位员工教育水平的资料
该年份为工资所得年份。图 1.1 的中心和右侧面板显示了工资作为年份和教育程度的函数,表明这两个因素都与工资相关。工资在 2003 年至 2009 年间大致呈线性(或直线)增长,大约增加 10000 美元,但相对于数据的变异性,这种增长非常微小。通常,教育水平较高的人工资也更高:教育水平最低的人(1 级)的工资通常比教育水平最高的人(5 级)的工资低得多。显然,通过结合一个人的年龄、教育和年份,可以最准确地预测他的工资。在第 3 章中,我们讨论了线性回归,它可以用来从数据集中预测工资。理想情况下,我们应该以考虑工资和年龄之间非线性关系的方式预测工资。在第 7 章中,我们讨论了解决这个问题的方法类别。
股市数据
工资数据涉及预测一个连续或定量输出值。这通常被称为回归问题。然而,在某些情况下,我们可能更希望预测一个非数值值——即分类或定性输出。例如,在第 4 章中,我们研究了一个包含 2001 年至 2005 年 5 年间标准普尔 500(S&P)股票指数每日变动情况的股票市场数据集。我们将其称为 Smarket 数据。目标是预测在给定的一天,指数是上涨还是下跌,使用过去 5 天指数的百分比变化。在这里,统计学习问题不涉及预测数值。相反,它涉及预测给定