第1章 数据挖掘者眼中的SQL 1
1.1 数据库、SQL和大数据 2
1.1.1 什么是大数据? 2
1.1.2 关系型数据库 3
1.1.3 Hadoop和Hive 3
1.1.4 NoSQL和其他类型的数据库 3
1.1.5 SQL 4
1.2 绘制数据结构 4
1.2.1 什么是数据模型? 5
1.2.2 什么是表? 5
1.2.3 什么是实体-关系图表? 8
1.2.4 邮政编码表 9
1.2.5 订阅数据集 10
1.2.6 订单数据集 11
1.2.7 关于命名的提示 12
1.3 使用数据流描述数据分析 12
1.3.1 什么是数据流? 13
1.3.2 数据流、SQL和关系代数 16
1.4 SQL查询 16
1.4.1 做什么,而不是怎么去做 16
1.4.2 SELECT语句 17
1.4.3 一个基础的SQL查询 17
1.4.4 一个基本的SQL求和查询 19
1.4.5 联接表的意义 20
1.4.6 SQL的其他重要功能 26
1.5 子查询和公用表表达式 29
1.5.1 用于命名变量的子查询 29
1.5.2 处理统计信息的子查询 32
1.5.3 子查询和IN 33
1.5.4 用于UNION ALL的子查询 37
1.6 小结 38
第2章 表中有什么?开始数据探索 39
2.1 什么是数据探索? 40
2.2 Excel中的绘图 40
2.2.1 基础图表:柱形图 41
2.2.2 单元格中的条形图 45
2.2.3 柱形图的有用变化形式 47
2.2.4 其他类型的图表 50
2.3 迷你图 53
2.4 列中包含的值 55
2.4.1 直方图 55
2.4.2 计数的直方图 58
2.4.3 计数的累积直方图 60
2.4.4 数字值的直方图(频率) 60
2.5 探索更多的值——最小值、最大值和模式 64
2.5.1 最小值和最大值 64
2.5.2 最常见的值(模式) 65
2.6 探索字符串值 66
2.6.1 长度的直方图 66
2.6.2 起始或结尾包含空白字符的字符串 66
2.6.3 处理大小写问题 67
2.6.4 字符串中存储的字符是什么? 67
2.7 探索两个列中的值 69
2.7.1 每个州的平均销售额是多少? 70
2.7.2 在一个单独的订单中,产品重复出现的频率是多少? 70
2.7.3 哪个州的American Express用户最多? 73
2.8 由一个列的数据扩展到所有列的数据汇总 73
2.8.1 针对单列的汇总 74
2.8.2 返回表中所有列的查询 76
2.8.3 使用SQL生成汇总编码 76
2.9 小结 78
第3章 不同之处是如何不同? 79
3.1 基本的统计学概念 80
3.1.1 虚拟假设 80
3.1.2 可信度和概率 81
3.1.3 正态分布 82
3.2 平均值的区别有多大? 85
3.2.1 方法 85
3.2.2 子集平均值的标准差 85
3.2.3 三个方法 87
3.3 对表做抽样 89
3.3.1 随机抽样 89
3.3.2 可重复的随机样本 90
3.3.3 分层比例抽样 91
3.3.4 平衡的样本 92
3.4 计数的可能性 93
3.4.1 有多少男性成员? 96
3.4.2 有多少加利福尼亚人? 98
3.4.3 虚拟假设和可信度 99
3.4.4 有多少客户仍然是活跃客户? 100
3.4.5 比率或数字? 103
3.5 概率和它们的统计 104
3.5.1 概率的标准差 104
3.5.2 概率的置信区间 105
3.5.3 概率的不同 106
3.5.4 保守的下限值 107
3.6 卡方检验 107
3.6.1 期望值 108
3.6.2 卡方计算 108
3.6.3 卡方分布 109
3.6.4 SQL中的卡方检验 111
3.6.5 州和产品之间的特殊关系 112
3.7 月份和支付类型与不同产品类型的特殊关系 114
3.7.1 多维卡方 114
3.7.2 使用SQL查询 115
3.7.3 结果 115
3.8 小结 116
第4章 发生的地点在何处? 119
4.1 纬度和经度 120
4.1.1 纬度和经度的定义 120
4.1.2 度数、分钟和秒 121
4.1.3 两个位置之间的距离 122
4.1.4 包含邮政编码的图片 128
4.2 人口统计 131
4.2.1 极端情况:最富有的和最贫穷的人 132
4.2.2 分别在使用订单和不使用订单的情况下比较邮政编码 137
4.3 地理等级 142
4.3.1 州中最富有的邮政编码 142
4.3.2 州中拥有最多订单的邮政编码 143
4.3.3 地理数据中有趣的层级结构 145
4.3.4 计算郡的财富 148
4.3.5 财富值的分布 150
4.3.6 在郡中,哪个邮政编码是相对最富有的? 151
4.3.7 拥有最高的相对订单占有份额的郡 152
4.4 在Excel中绘制地图 155
4.4.1 为什么绘制地图? 155
4.4.2 不能绘图 156
4.4.3 网络地图 156
4.4.4 邮政编码散点图之上的州边界 157
4.5 小结 159
第5章 关于时间 161
5.1 数据库中的日期和时间 162
5.2 开始调研日期 166
5.2.1 确认日期中没有时间 166
5.2.2 根据日期比较计数 167
5.2.3 订单数和订单大小 172
5.2.4 星期 175
5.3 两个日期之间有多长? 178
5.3.1 以天为单位的持续时间 178
5.3.2 以星期为单位的持续时间 180
5.3.3 以月为单位的持续时间 180
5.3.4 有多少个星期一? 181
5.3.5 下一个周年纪念日(或生日)是什么时候? 184
5.4 跨年比较 188
5.4.1 以天为单位比较 188
5.4.2 以星期为单位比较 189
5.4.3 以月为单位比较 190
5.5 以天计算活跃客户数量 196
5.5.1 某天的活跃客户数量 196
5.5.2 每天的活跃客户数量 196
5.5.3 有多少不同类型的客户? 198
5.5.4 不同任期时段的客户数量 198
5.5.5 只使用SQL计算活跃客户 201
5.6 Excel中的简单图表动画 203
5.6.1 从订单生成日期到运货日期 203
5.6.2 订单延时在每年中的变化 205
5.7 小结 208
第6章 客户的持续时间有多久?使用生存分析理解客户和他们的价值 209
6.1 生存分析 210
6.1.1 平均寿命 211
6.1.2 医学研究 212
6.1.3 关于风险率的示例 212
6.2 风险计算 213
6.2.1 数据调研 214
6.2.2 风险率 216
6.2.3 客户可视化:时间与任期 217
6.2.4 截尾 219
6.3 生存率和保留率 220
6.3.1 生存率的点的估计 220
6.3.2 计算任意任期的生存率 221
6.3.3 在SQL中计算生存率 222
6.3.4 简单的客户保留率计算 225
6.3.5 保留率和生存率的区别 226
6.3.6 风险率和生存率的简单示例 227
6.4 对比不同的客户分组 230
6.4.1 市场总结 230
6.4.2 市场分层 231
6.4.3 生存率比例 234
6.4.4 条件生存率 234
6.5 随时间变化的生存率 236
6.5.1 特定风险率随时间的变化 236
6.5.2 按照起始年份分类的客户生存率 238
6.5.3 之前的生存率什么样? 239
6.6 由生存率衍生出来的重要指标 241
6.6.1 估算生存点 241
6.6.2 客户任期的中间值 242
6.6.3 客户生命周期的中间值 242
6.6.4 风险率的置信度 243
6.7 使用生存率计算客户价值 245
6.7.1 估算收入 246
6.7.2 对个体的未来收入的估算 247
6.7.3 当前客户分组的收入估算 249
6.7.4 所有客户未来收入的估算 251
6.8 预测 253
6.8.1 对已有客户的预测 254
6.8.2 对新开始者的预测 258
6.9 小结 259
第7章 影响生存率的因素:客户任期 261
7.1 哪些因素是重要的,何时重要? 262
7.1.1 方法说明 262
7.1.2 使用平均值比较数字因素 264
7.1.3 风险比例 268
7.2 左截断 271
7.2.1 认识左截断 271
7.2.2 左截断的影响 273
7.2.3 如何从理论上解决左截断问题 274
7.2.4 估算一个任期的风险率 275
7.2.5 估算所有任期的风险率 276
7.2.6 在SQL中计算 277
7.3 时间窗 278
7.3.1 一个商业问题 278
7.3.2 时间窗=左截断+右截尾 278
7.4 竞争风险 283
7.4.1 竞争风险的示例 283
7.4.2 竞争风险的“风险率” 284
7.4.3 竞争风险的“生存率” 286
7.4.4 随着时间的变化,客户身上发生了什么? 287
7.5 事件前后 291
7.5.1 三种情况 291
7.5.2 使用生存率预测来理解一次性事件 293
7.5.3 比较前后风险率 294
7.5.4 基于对列的方法 294
7.5.5 基于对列的方法:完全队列 295
7.5.6 事件影响的直接估计 297
7.6 小结 301
第8章 多次购买以及其他重复事件 303
8.1 标识客户 304
8.1.1 谁是那个客户? 304
8.1.2 其他客户信息 313
8.1.3 每一年出现多少新客户? 316
8.2 RFM分析 325
8.2.1 维度 325
8.2.2 计算RFM单元格 329
8.2.3 RFM的有用程度 330
8.3 随着时间的变化,哪些家庭的购买金额在增长? 334
8.3.1 最早值和最晚值的比较 334
8.3.2 第一年和最后一年的值的比较 341
8.3.3 最佳拟合线的趋势 343
8.4 距离下一次事件的时间 344
8.4.1 计算背后的想法 344
8.4.2 使用SQL计算下一次购买日期 345
8.4.3 从下一次购买日期到时间至事件的分析 346
8.4.4 时间到事件分析的分层 347
8.5 小结 347
第9章 购物车里有什么?购物车分析 349
9.1 探索产品 349
9.1.1 产品的散点图 350
9.1.2 产品组的运输年份 351
9.1.3 订单中的重复产品 353
9.1.4 单位数量的直方图 358
9.1.5 在一个订单中,哪个产品可能出现多次购买的情况? 359
9.1.6 改变价格 361
9.2 产品和客户价值 362
9.2.1 订单大小的一致性 362
9.2.2 与一次性客户关联的产品 365
9.2.3 与最好的客户相关的产品 368
9.2.4 剩余价值 370
9.3 产品的地理分布 372
9.3.1 每一个州中最常见的产品 372
9.3.2 哪些产品广受欢迎,哪些产品只在本地受欢迎? 373
9.4 哪些客户购买了指定产品? 375
9.4.1 哪些客户拥有最受欢迎的产品? 375
9.4.2 客户拥有哪个产品? 376
9.4.3 哪些客户有3个特定的产品? 381
9.4.4 普遍的嵌套集合的查询 384
9.5 小结 385
第10章 关联规则 387
10.1 项集 388
10.1.1 两个产品的组合 388
10.1.2 更常见的项集 391
10.1.3 家庭,而不是订单 396
10.2 最简单的关联规则 399
10.2.1 关联和规则 400
10.2.2 零项关联规则 400
10.2.3 概率的分布情况 401
10.2.4 零项关联告诉了我们什么? 402
10.3 单项关联规则 402
10.3.1 单项关联规则的价值 402
10.3.2 生成所有的单项规则 404
10.3.3 包含评估信息的单项规则 405
10.3.4 基于产品组的单项规则 406
10.4 双项关联 407
10.4.1 计算双项关联 408
10.4.2 使用卡方找到最佳规则 409
10.4.3 异质相关 413
10.5 扩展关联规则 416
10.5.1 多项关联 416
10.5.2 一个查询中的多项关联 418
10.5.3 使用产品属性的规则 418
10.5.4 左右两侧项集内容不同的规则 419
10.5.5 之前和之后:有序关联规则 419
10.6 小结 422
第11章 SQL数据挖掘模型 423
11.1 定向数据挖掘介绍 424
11.1.1 定向模型 424
11.1.2 建模中的数据 425
11.1.3 建模应用示例 427
11.1.4 模型评估 429
11.2 相似性模型 429
11.2.1 模型是什么? 430
11.2.2 最好的邮政编码是哪个? 430
11.2.3 基础的相似性模型 431
11.2.4 使用Z分数计算相似性模型 433
11.2.5 邻近模型示例 434
11.3 最受欢迎产品的查找模型 435
11.3.1 最受欢迎的产品 435
11.3.2 计算最受欢迎的产品组 436
11.3.3 评估查找模型 437
11.3.4 使用调试查找模型做预测 437
11.3.5 使用二元分类 439
11.4 用于订单大小的查找模型 440
11.4.1 最基本的模型:无维度模型 440
11.4.2 添加一个维度 441
11.4.3 添加额外的维度 443
11.4.4 检查不稳定性 443
11.4.5 使用平均值图表评估模型 444
11.5 用于响应率的查找模型 445
11.5.1 将整体概率作为一个模型 445
11.5.2 探索不同的维度 446
11.5.3 模型的精准度 447
11.5.4 ROC图表和AUC 450
11.5.5 加入更多的维度 453
11.6 朴素贝叶斯模型(证据模型) 455
11.6.1 概率的一些概念 455
11.6.2 计算朴素贝叶斯模型 457
11.6.3 朴素贝叶斯模型:评分和提升度 463
11.6.4 朴素贝叶斯模型和查找模型的比较 465
11.7 小结 466
第12章 最佳拟合线:线性回归模型 467
12.1 最佳拟合线 468
12.1.1 任期和支付金额 468
12.1.2 最佳拟合线的属性 469
12.1.3 小心数据 473
12.1.4 图表中的趋势线 474
12.1.5 使用LINEST()函数的最佳拟合 479
12.2 使用R2衡量拟合程度 483
12.2.1 R2值 483
12.2.2 R2的局限性 484
12.2.3 R2的含义 484
12.3 直接计算最佳拟合线系数 485
12.3.1 计算系数 485
12.3.2 在SQL中计算最佳拟合线 486
12.3.3 价格弹性 487
12.4 加权的线性回归 492
12.4.1 在第一年停止的客户 492
12.4.2 加权的最佳拟合 493
12.4.3 图表中的加权最佳拟合线 494
12.4.4 SQL中的加权最佳拟合线 495
12.4.5 使用Solver的加权最佳拟合线 496
12.5 多个输入 498
12.5.1 Excel中的多维回归 498
12.5.2 建立包含三个变量的模型 500
12.5.3 使用Solver处理多维回归 501
12.5.4 逐个选择输入变量 501
12.5.5 SQL中的多维回归 502
12.6 小结 503
第13章 为进一步分析数据创建客户签名 505
13.1 什么是客户签名? 506
13.1.1 什么是客户? 506
13.1.2 客户签名的源数据 507
13.1.3 使用客户签名 510
13.2 设计客户签名 511
13.2.1 调试和预测 511
13.2.2 字段的角色 511
13.2.3 时间段 512
13.3 建立客户签名的操作 515
13.3.1 驱动表 515
13.3.2 查找数据 518
13.3.3 最初的交易 520
13.3.4 旋转 521
13.3.5 总结 528
13.4 抽取特征 530
13.4.1 地理位置信息 530
13.4.2 日期时间列 531
13.4.3 字符串中的模式 532
13.5 总结客户行为 534
13.5.1 计算时间序列的斜率 534
13.5.2 周末消费者 537
13.5.3 下降的使用行为 540
13.6 小结 541
第14章 性能问题:高效使用SQL 543
14.1 查询引擎和性能 544
14.1.1 用于理解性能的时间复杂度 544
14.1.2 一个简单的示例 545
14.1.3 与性能相关的思考 547
14.1.4 性能的含义和测量 549
14.1.5 性能提升入门 549
14.2 高效使用索引 553
14.2.1 什么是索引? 553
14.2.2 索引的简单示例 557
14.2.3 索引的限制 560
14.2.4 高效使用复合索引 562
14.3 何时使用OR是低效的? 566
14.3.1 有时UNIONALL比OR更好 566
14.3.2 有时LEFT OUTER JOIN比OR更高效 567
14.3.3 有时多个条件表达式更好 568
14.4 赞成和反对:表达一件事情的不同方法 569
14.4.1 在Orders表中,哪些州没有被识别? 569
14.4.2 一个关于GROUP BY的难题 571
14.4.3 小心COUNT(*)=0 573
14.5 窗口函数 576
14.5.1 窗口函数适用于什么地方? 576
14.5.2 窗口函数的灵活使用 576
14.6 小结 582
附录 数据库之间的等价结构 583