书籍作者:姜伟生 | ISBN:9787302632511 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2689 |
创建日期:2024-04-01 | 发布日期:2024-04-01 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
数据科学和机器学习已经深度融合到我们生活的方方面面,而数学正是开启未来大门的钥匙。不是所 有人生来都握有一副好牌,但是掌握“数学 + 编程 + 机器学习”绝对是王牌。这一次,学习数学不再是为了考试、分数、升学,而是投资时间、自我实现、面向未来。为了让大家学数学、用数学,甚至爱上数学, 在创作这套书时,作者尽量克服传统数学教材的各种弊端,让大家学习时有兴趣、看得懂、有思考、更自信、用得着。
鸢尾花书有三大板块——编程、数学、实践。数据科学、机器学习的各种算法离不开数学,本册《矩阵力量》是“数学”板块的第 2 本,主要介绍常用线性代数工具。任何数学工具想要从一元推广到多元,比如多元微积分、多元统计,都绕不开线性代数。
《矩阵力量:线性代数全彩图解 + 微课 + Python编程》共 25 章内容,可以归纳为 7 大板块:向量、矩阵、向量空间、矩阵分解、微积分、空间几何、数据。《矩阵力量:线性代数全彩图解 + 微课 + Python编程》在讲解线性代数工具时,会穿插介绍其在数据科学和机器学习领域的应用场景,让大家学以致用。《矩阵力量:线性代数全彩图解 + 微课 + Python编程》读者群包括所有在工作中应用数学的朋友,尤其适用于初级程序员进阶,大学本科数学开窍,高级数据分析师,人工智能开发者。
姜伟生 博士 FRM。
勤奋的小镇做题家,热爱知识可视化和开源分享。自2022年8月开始,在GitHub上开源“鸢尾花书”学习资源,截至2023年6月,已经分享3000多页PDF、3000多幅矢量图、约1000个代码文件,全球读者数以万计。
这是一套前所未见的数学书,更是一套具备极高颜值的书。姜伟生博士自谦“小镇做题家”,实际上他是国际著名金融企业的金融科技专家。很难想象一位以“术数”为业的金融家具备如此彻底的分享动机,同时,姜博士有着卓越的艺术品位和设计能力,不仅承担了这套书的精深内容,更承担了全系图书的整体设计。希望读者从枯燥的常规数学书中解脱出来,赏心悦目地慢慢走入缤纷的数学宇宙。
Preface
前言
感谢
首先感谢大家的信任。
作者仅仅是在学习应用数据科学和机器学习算法时,多读了几本数学书,多做了一些思考和知识整理而已。知者不言,言者不知。知者不博,博者不知。由于作者水平有限,斗胆把自己所学所思与大家分享,作者权当无知者无畏。希望大家在B站视频下方和Github多提意见,让这套书成为作者和读者共同参与创作的作品。
特别感谢清华大学出版社的栾大成老师。从选题策划、内容创作到装帧设计,栾老师事无巨细、一路陪伴。每次与栾老师交流,都能感受到他对优质作品的追求、对知识分享的热情。
出来混总是要还的
曾几何时,考试是我们学习数学的唯一动力。考试是头悬梁的绳,是锥刺股的锥。我们中的大多数人从小到大为各种考试埋头题海,数学味同嚼蜡,甚至让人恨之入骨。
数学给我们带来了无尽的“折磨”。我们甚至恐惧数学,憎恨数学,恨不得一走出校门就把数学抛之脑后,老死不相往来。
可悲可笑的是,我们很多人可能会在毕业的五年或十年以后,因为工作需要,不得不重新学习微积分、线性代数、概率统计,悔恨当初没有学好数学,甚至迁怒于教材和老师。
这一切不能都怪数学,值得反思的是我们学习数学的方法和目的。
再给自己一个学数学的理由
为考试而学数学,是被逼无奈的举动。而为数学而数学,则又太过高尚而遥不可及。
相信对于绝大部分的我们来说,数学是工具、是谋生手段,而不是目的。我们主动学数学,是想用数学工具解决具体问题。
现在,这套书给大家一个“学数学、用数学”的全新动力—数据科学、机器学习。
数据科学和机器学习已经深度融合到我们生活的方方面面,而数学正是开启未来大门的钥匙。不
是所有人生来都握有一副好牌,但是掌握“数学 + 编程 + 机器学习”的知识绝对是王牌。这次,学习数学不再是为了考试、分数、升学,而是投资时间、自我实现、面向未来。
未来已来,你来不来?
本套鸢尾花书如何帮到你
为了让大家学数学、用数学,甚至爱上数学,作者可谓颇费心机。在创作这套书时,作者尽量克服传统数学教材的各种弊端,让大家学习时有兴趣、看得懂、有思考、更自信、用得着。
为此,丛书在内容创作上突出以下几个特点。
虽然本书标榜“从加减乘除到机器学习”,但是建议读者朋友们至少具备高中数学知识。如果读者正在学习或曾经学过大学数学 (微积分、线性代数、概率统计),这套书就更容易读懂了。
聊聊数学
数学是工具。锤子是工具,剪刀是工具,数学也是工具。
数学是思想。数学是人类思想高度抽象的结晶体。在其冷酷的外表之下,数学的内核实际上就是人类朴素的思想。学习数学时,知其然,更要知其所以然。不要死记硬背公式定理,理解背后的数学思想才是关键。如果你能画一幅图、用大白话描述清楚一个公式、一则定理,这就说明你真正理解了它。
数学是语言。就好比世界各地不同种族有自己的语言,数学则是人类共同的语言和逻辑。数学这门语言极其精准、高度抽象,放之四海而皆准。虽然我们中大多数人没有被数学“女神”选中,不能为人类对数学认知开疆扩土;但是,这丝毫不妨碍我们使用数学这门语言。就好比,我们不会成为语言学家,我们完全可以使用母语和外语交流。
数学是体系。代数、几何、线性代数、微积分、概率统计、优化方法等,看似一个个孤岛,实际上都是数学网络的一条条织线。建议大家学习时,特别关注不同数学板块之间的联系,见树,更要见林。
数学是基石。拿破仑曾说“数学的日臻完善和国强民富息息相关。”数学是科学进步的根基,是经济繁荣的支柱,是保家卫国的武器,是探索星辰大海的航船。
数学是艺术。数学和音乐、绘画、建筑一样,都是人类艺术体验。通过可视化工具,我们会在看
II
似枯燥的公式、定理、数据背后,发现数学之美。
数学是历史,是人类共同记忆体。“历史是过去,又属于现在,同时在指引未来。”数学是人类的集体学习思考,它把人的思维符号化、形式化,进而记录、积累、传播、创新、发展。从甲骨、泥板、石板、竹简、木牍、纸草、羊皮卷、活字印刷、纸质书,到数字媒介,这一过程持续了数千年, 至今绵延不息。
数学是无穷无尽的想象力,是人类的好奇心,是自我挑战的毅力,是一个接着一个的问题,是看似荒诞不经的猜想,是一次次胆大包天的批判性思考,是敢于站在前人臂膀之上的勇气,是孜孜不倦地延展人类认知边界的不懈努力。
家园、诗、远方
诺瓦利斯曾说:“哲学就是怀着一种乡愁的冲动到处去寻找家园。”
在纷繁复杂的尘世,数学纯粹得就像精神的世外桃源。数学是,一束光,一条巷,一团不灭的希望,一股磅礴的力量,一个值得寄托的避风港。
打破陈腐的锁链,把功利心暂放一边,我们一道怀揣一分乡愁,心存些许诗意,踩着艺术维度,投入数学张开的臂膀,驶入它色彩斑斓、变幻无穷的深港,感受久违的归属,一睹更美、更好的远方。
前言 《矩阵力量》
III
Acknowledgement
致谢
To my parents.
谨以此书献给我的母亲父亲。
How to Use the Book
使用本书
丛书资源
鸢尾花书提供的配套资源如下:
本书约定
书中为了方便阅读以及查找配套资源,特别设计了如下标识。
数学家、科学家、艺术家等大家语录
配套Python代码完
成核心计算和制图
引出本书或本系列
其他图书相关内容
相关数学家生平贡献介绍
代码中核心Python
库函数和讲解
用Streamlit开发制作App应用
提醒读者需要格外注意的知识点
每章总结或升华本章内容
思维导图总结本章脉络和核心内容
介绍数学工具与
机器学习之间的联系
配套微课视频二维码
核心参考和推荐阅读文献
微课视频
本书配套微课视频均发布在B站—生姜DrGinger。
微课视频是以“聊天”的方式,和大家探讨某个数学话题的重点内容,讲解代码中可能遇到的难点,甚至侃侃历史、说说时事、聊聊生活。
本书配套微课视频的目的是引导大家自主编程实践、探究式学习,并不是“照本宣科”。
纸质图书上已经写得很清楚的内容,视频课程只会强调重点。需要说明的是,图书内容不是视频的“逐字稿”。
App开发
本书配套多个用Streamlit开发的App,用来展示数学动画、数据分析、机器学习算法。
Streamlit是个开源的Python库,能够方便快捷地搭建、部署交互型网页App。Streamlit简单易用,很受欢迎。Streamlit兼容目前主流的Python数据分析库,比如NumPy、Pandas、Scikit-learn、PyTorch、TensorFlow等等。Streamlit还支持Plotly、Bokeh、Altair等交互可视化库。
本书中很多App设计都采用Streamlit + Plotly方案。此外,本书专门配套教学视频手把手和大家一起做App。
大家可以参考如下页面,更多了解Streamlit:
实践平台
本书作者编写代码时采用的IDE (Integrated Development Environment) 是Spyder,目的是给大家提供简洁的Python代码文件。
但是,建议大家采用JupyterLab或Jupyter Notebook作为鸢尾花书配套学习工具。
简单来说,Jupyter集合“浏览器 + 编程 + 文档 + 绘图 + 多媒体 + 发布”众多功能于一身,非常适合探究式学习。
运行Jupyter无须IDE,只需要浏览器。Jupyter容易分块执行代码。Jupyter支持inline打印结果,直接将结果图片打印在分块代码下方。Jupyter还支持很多其他语言,如R和Julia。
使用Markdown文档编辑功能,可以编程同时写笔记,不需要额外创建文档。在Jupyter中插入图片和视频链接都很方便,此外还可以插入Latex公式。对于长文档,可以用边栏目录查找特定内容。
VI
Jupyter发布功能很友好,方便打印成HTML、PDF等格式文件。
Jupyter也并不完美,目前尚待解决的问题有几个:Jupyter中代码调试不是特别方便。Jupyter没有variable explorer,可以inline打印数据,也可以将数据写到CSV或Excel文件中再打开。Matplotlib 图像结果不具有交互性,如不能查看某个点的值或者旋转3D图形,此时可以考虑安装 (jupyter matplotlib)。注意,利用Altair或Plotly绘制的图像支持交互功能。对于自定义函数,目前没有快捷键直接跳转到其定义。但是,很多开发者针对这些问题正在开发或已经发布相应插件,请大家留意。
大家可以下载安装Anaconda。JupyterLab、Spyder、PyCharm等常用工具,都集成在Anaconda 中。下载Anaconda的地址为:
JupyterLab探究式学习视频:
代码文件
鸢尾花书的Python代码文件下载地址为:
同时也在如下GitHub地址备份更新:
Python代码文件会不定期修改,请大家注意更新。图书原始创作版本PDF(未经审校和修订,内容和纸质版略有差异,方便移动终端碎片化学习以及对照代码)和纸质版本勘误也会上传到这个GitHub 账户。因此,建议大家注册GitHub账户,给书稿文件夹标星 (Star) 或分支克隆 (Fork)。
考虑再三,作者还是决定不把代码全文印在纸质书中,以便减少篇幅,节约用纸。
本书编程实践例子中主要使用“鸢尾花数据集”,数据来源是Scikit-learn库、Seaborn库。要是给鸢尾花数学大系起个昵称的话,作者乐见“鸢尾花书”。
使用全书
《矩阵力量》
VII
学习指南
大家可以根据自己的偏好制定学习步骤,本书推荐如下步骤。
1
2
3
浏览本章思维导图,
下载本章配套
观看微课视频,阅
把握核心脉络
Python 代码文件
读本章正文内容
4
用Jupyter 创建笔
5
尝试开发数学动画、
6
翻阅本书推荐参
记,编程实践
机器学习 App
考文献
学完每章后,大家可以在社交媒体、技术论坛上发布自己的Jupyter笔记,进一步听取朋友们的意见,共同进步。这样做还可以提高自己学习的动力。
另外,建议大家采用纸质书和电子书配合阅读学习,学习主阵地在纸质书上,学习基础课程最重要的是沉下心来,认真阅读并记录笔记,电子书可以配合查看代码,相关实操性内容可以直接在电脑上开发、运行、感受,Jupyter笔记同步记录起来。
强调一点:学习过程中遇到困难,要尝试自行研究解决,不要第一时间就去寻求他人帮助。
意见建议
欢迎大家对鸢尾花书提意见和建议,丛书专属邮箱地址为:
也欢迎大家在B站视频下方留言互动。
VIII
绪论 1
第1章 不止向量 7
1.1 有数据的地方,必有矩阵 8
1.2 有矩阵的地方,更有向量 10
1.3 有向量的地方,就有几何 12
1.4 有几何的地方,皆有空间 17
1.5 有数据的地方,定有统计 20
第2章 向量运算 23
2.1 向量:多面手 25
2.2 行向量、列向量 27
2.3 向量长度:模,欧氏距离,L2范数 31
2.4 加减法:对应位置元素分别相加减 35
2.5 标量乘法:向量缩放 36
2.6 向量内积:结果为标量 37
2.7 向量夹角:反余弦 43
2.8 余弦相似度和余弦距离 45
2.9 向量积:结果为向量 47
2.10 逐项积:对应元素分别相乘 50
2.11 张量积:张起网格面 51
第3章 向量范数 57
3.1 Lp范数:L2范数的推广 58
3.2 Lp范数和超椭圆的联系 61
3.3 L1范数:旋转正方形 64
3.4 L2范数:正圆 66
3.5 L∞范数:正方形 69
3.6 再谈距离度量 71
第4章 矩阵 77
4.1 矩阵:一个不平凡的表格 79
4.2 矩阵形状:每种形状都有特殊用途 81
4.3 基本运算:加减和标量乘法 85
4.4 广播原则 86
4.5 矩阵乘法:线性代数的运算核心 88
4.6 两个视角解剖矩阵乘法 90
4.7 转置:绕主对角线镜像 92
4.8 矩阵逆:“相当于”除法运算 94
4.9 迹:主对角元素之和 95
4.10 逐项积:对应元素相乘 97
4.11 行列式:将矩阵映射到标量值 98
第5章 矩阵乘法 105
5.1 矩阵乘法:形态丰富多样 107
5.2 向量和向量 107
5.3 再聊全1列向量 112
5.4 矩阵乘向量:线性方程组 116
5.5 向量乘矩阵乘向量:二次型 120
5.6 方阵乘方阵:矩阵分解 123
5.7 对角阵:批量缩放 124
5.8 置换矩阵:调换元素顺序 127
5.9 矩阵乘向量:映射到一维 128
5.10 矩阵乘矩阵:映射到多维 130
5.11 长方阵:奇异值分解、格拉姆矩阵、张量积 133
5.12 爱因斯坦求和约定 136
5.13 矩阵乘法的几个雷区 138
第6章 分块矩阵 143
6.1 分块矩阵:横平竖直切豆腐 145
6.2 矩阵乘法第一视角:标量积展开 149
6.3 矩阵乘法第二视角:外积展开 150
6.4 矩阵乘法更多视角:分块多样化 154
6.5 分块矩阵的逆 160
6.6 克罗内克积:矩阵张量积 160
第7章 向量空间 165
7.1 向量空间:从直角坐标系说起 166
7.2 给向量空间涂颜色:RGB色卡 178
7.3 张成空间:线性组合红、绿、蓝三原色 179
7.4 线性无关:红色和绿色,调不出青色 183
7.5 非正交基底:青色、品红、黄色 184
7.6 基底转换:从红、绿、蓝,到青色、品红、黄色 187
第8章 几何变换 189
8.1 线性变换:线性空间到自身的线性映射 191
8.2 平移:仿射变换,原点变动 195
8.3 缩放:对角阵 196
8.4 旋转:行列式值为1 200
8.5 镜像:行列式值为负 205
8.6 投影:降维操作 207
8.7 再谈行列式值:几何视角 208
第9章 正交投影 215
9.1 标量投影:结果为标量 217
9.2 向量投影:结果为向量 218
9.3 正交矩阵:一个规范正交基 222
9.4 规范正交基性质 226
9.5 再谈镜像:从投影视角 229
9.6 格拉姆-施密特正交化 231
9.7 投影视角看回归 233
第10章 数据投影 241
10.1 从一个矩阵乘法运算说起 242
10.2 二次投影 + 层层叠加 245
10.3 二特征数据投影:标准正交基 249
10.4 二特征数据投影:规范正交基 254
10.5 四特征数据投影:标准正交基 259
10.6 四特征数据投影:规范正交基 263
10.7 数据正交化 269
第11章 矩阵分解 277
11.1 矩阵分解:类似因式分解 278
11.2 LU分解:上下三角 279
11.3 Cholesky分解:适用于正定矩阵 280
11.4 QR分解:正交化 282
11.5 特征值分解:刻画矩阵映射的特征 286
11.6 奇异值分解:适用于任何实数矩阵 290
第12章 Cholesky分解 295
12.1 Cholesky分解 296
12.2 正定矩阵才可以进行Cholesky分解 297
12.3 几何角度:开合 299
12.4 几何变换:缩放 → 开合 302
12.5 推广到三维空间 305
12.6 从格拉姆矩阵到相似度矩阵 309
第13章 特征值分解 313
13.1 几何角度看特征值分解 315
13.2 旋转 → 缩放 → 旋转 317
13.3 再谈行列式值和线性变换 320
13.4 对角化、谱分解 323
13.5 聊聊特征值 328
13.6 特征值分解中的复数现象 330
第14章 深入特征值分解 333
14.1 方阵开方 334
14.2 矩阵指数:幂级数的推广 335
14.3 斐波那契数列:求通项式 337
14.4 马尔科夫过程的平稳状态 339
14.5 瑞 利商 342
14.6 再谈椭圆:特征值分解 346
第15章 奇异值分解 353
15.1 几何视角:旋转 → 缩放 → 旋转 355
15.2 不同类型SVD分解 359
15.3 左奇异向量矩阵U 360
15.4 右奇异向量矩阵V 363
15.5 两个视角:投影和数据叠加 365
第16章 深入奇异值分解 369
16.1 完全型:U为方阵 371
16.2 经济型:S去掉零矩阵,变方阵 372
16.3 紧凑型:非满秩 373
16.4 截断型:近似 374
16.5 数据还原:层层叠加 375
16.6 估计与误差:截断型SVD 379
16.7 正交投影:数据正交化 382
第17章 多元函数微分 387
17.1 偏导:特定方向的变化率 388
17.2 梯度向量:上山方向 392
17.3 法向量:垂直于切平面 396
17.4 方向性微分:函数任意方向的变化率 398
17.5 泰勒展开:一元到多元 402
第18章 拉格朗日乘子法 407
18.1 回顾优化问题 408
18.2 等式约束条件 410
18.3 线性等式约束 414
18.4 非线性等式约束 415
18.5 不等式约束 417
18.6 再谈特征值分解:优化视角 420
18.7 再谈SVD:优化视角 423
18.8 矩阵范数:矩阵 → 标量,矩阵“大小” 426
18.9 再谈数据正交投影:优化视角 428
第19章 直线到超平面 437
19.1 切向量:可以用来定义直线 438
19.2 法向量:定义直线、平面、超平面 441
19.3 超平面:一维直线和二维平面的推广 443
19.4 平面与梯度向量 446
19.5 中垂线:用向量求解析式 451
19.6 用向量计算距离 453
第20章 再谈圆锥曲线 457
20.1 无处不在的圆锥曲线 459
20.2 正圆:从单位圆到任意正圆 460
20.3 单位圆到旋转椭圆:缩放 → 旋转 → 平移 463
20.4 多元高斯分布:矩阵分解、几何变换、距离 468
20.5 从单位双曲线到旋转双曲线 474
20.6 切线:构造函数,求梯度向量 476
20.7 法线:法向量垂直于切向量 479
第21章 曲面和正定性 481
21.1 正 定性 483
21.2 几何视角看正定性 485
21.3 开口朝上抛物面:正定 486
第22章 数据与统计 501
22.1 统计 + 线性代数:以鸢尾花数据为例 502
22.2 均值:线性代数视角 503
22.3 质心:均值排列成向量 505
22.4 中心化:平移 508
22.5 分类数据:加标签 510
22.6 方差:均值向量没有解释的部分 512
22.7 协方差和相关性系数 514
22.8 协方差矩阵和相关性系数矩阵 517
第23章 数据空间 523
23.1 从数据矩阵X说起 524
23.2 向量空间:从SVD分解角度理解 527
23.3 紧凑型SVD分解:剔除零空间 529
23.4 几何视角说空间 532
23.5 格拉姆矩阵:向量模、夹角余弦值的集合体 537
23.6 标准差向量:以数据质心为起点 540
23.7 白话说空间:以鸢尾花数据为例 543
第24章 数据分解 549
24.1 为什么要分解矩阵? 550
24.2 QR分解:获得正交系 555
24.3 Cholesky分解:找到列向量的坐标 557
24.4 特征值分解:获得行空间和零空间 559
24.5 SVD分解:获得四个空间 562
第25章 数据应用 567
25.1 从线性代数到机器学习 568
25.2 从随机变量的线性变换说起 572
25.3 单方向映射 574
25.4 线性回归 578
25.5 多方向映射 582
25.6 主成分分析 584
矩阵力量:线性代数全彩图解+微课+Python编程 线性代数是现代数学的重要分支之一,它在各个领域都有广泛应用。从计算机科学到物理学、经济学和工程学等领域,线性代数都扮演着至关重要的角色。而矩阵作为线性代数中最基本的概念之一,更是无处不在。 然而,对于初学者来说,线性代数可能会显得十分抽象和难以理解。因此,我们推出了一套名为“矩阵力量”的教材,旨在帮助读者轻松掌握线性代数的核心概念,并通过 Python 编程实践加深理解。 该教材包括三部分内容: 第一部分是全彩图解,通过生动形象的图片和简洁明了的文字,将线性代数中的概念和定理呈现给读者。例如,矩阵乘法、行列式、特征值与特征向量等内容都被详细讲解。这样的图文结合方式可以使读者更好地理解和记忆知识点。 第二部分是微课视频,由资深教师录制,涵盖了线性代数的核心内容。通过视频,读者可以更加深入地理解和掌握知识点,并且可以随时暂停、回放,方便自己的学习进度。 第三部分是 Python 编程实践,通过编写代码来应用所学的线性代数知识。Python 是一种易于上手的编程语言,而且在科学计算领域有着广泛的应用。通过编写代码,读者可以将抽象的概念转化为具体的操作,从而更好地理解和运用线性代数知识。 总之,“矩阵力量”教材旨在帮助初学者轻松掌握线性代数的核心概念,并通过 Python 编程实践加深理解。如果你对线性代数感兴趣,或者想要提高自己的科学计算能力,那么这套教材绝对不容错过!
2023-06-03 10:11:33