程序员的数学基础思想推荐书籍
「基础思想篇」推荐书籍
《离散数学及其应用》Kenneth H·Rosen 著
专栏的第一模块是“基础思想篇”。在这个模块中,我尝试用实际项目中的案例,把不同的离散数学知识点串起来,并加以解释。如果你对其中某些点有更深的兴趣,可以仔细研读这本书。
除此之外,这本书还有几个特点,我觉得非常好。
国外高校的教材。书中对离散数学的知识点介绍得很全面,专栏中讲的同余定理、数学归纳法、递归、分治算法、排列和组合、树和树的遍历、图和最短路径、逻辑以及集合等概念,在书里都有非常详细的介绍。
介绍了不少证明的方法,比如穷举证明、存在性证明等,可以让你更好地理解,为什么有些算法是对的,有些是有问题的,并帮你在理解、学习和设计算法时保证其正确性。
讲解了很多逻辑、集合和布尔代数的相关知识。这部分我在专栏里没有涉及太多,因为程序员经常接触各种条件和查询语句,对这些内容已经很熟悉了,所以没有花费更多篇幅。
和编程结合紧密。书中介绍了一些基于伪代码的算法,并对其进行了时间和空间复杂度的分析,例如常见的排序、搜索算法等,还讲解了离散数学在计算机科学中的应用场景,比如关系型数据库和 SQL 查询语言是如何设计的等等。
「概率统计篇」推荐书籍
《概率统计》Morris H. DeGroot,Mark J. Schervish 著
在专栏的“概率统计篇”,我会着重介绍概率统计及其在计算机领域中的主要应用。你可以预先阅读这本《概率统计》热热身。
我们再来聊聊这本书的几个特色。
对概念的解释非常清晰,比如充分统计量(sufficient statistic)的概念,其他书可能两句话就解释完了,紧接着就是公式的堆砌,而这本书用了差不多两页的篇幅来介绍,对自学者而言非常有帮助。
本书的两位作者,DeGroot 和 Schervish 都是贝叶斯统计理论的重量级人物。书中包含了概率论常用的知识点,比如随机变量及其分布、条件概率、期望值、贝叶斯理论、马尔科夫链等。在专栏的第二模块中,我也会介绍这些知识点及其在计算机领域,特别是机器学习中的应用。
总的来说,这是一本相当不错的概率统计专业书籍,尽管书中几乎没有涉及计算机算法和代码的部分,但你不用过于担心,在专栏中我会结合具体的机器学习算法和应用,为你展示这些理论知识是如何运用到实践中的。
如果你能预读本书,对概念有了些理解,再看专栏会更有感触。
「线性代数篇」推荐书籍
《线性代数及其应用》David C. Lay,Steven R. Lay 著
如今的机器学习模型,除了基于概率和统计,还会使用线性代数的知识,专栏的第三个模块就是“线性代数篇”。介绍线性代数的书籍不少,我推荐《线性代数及其应用》。
这本书的特色在于:
使用通俗的表达和大量的插图来阐述概念,比如线性方程、向量空间、特征向量、奇异值的分解等,都是在机器学习算法中常用的模型或技术。
书中内容的呈现形式,以提出一个具体问题再解决问题为主,最后进行定理的归纳和证明,既通俗易懂,又不乏数学的严谨性。