Browsed by
标签:数学

《程序员的数学2:概率统计》阅读总结

《程序员的数学2:概率统计》阅读总结

这本《程序员的数学2:概率统计》有点蹭热点的感觉。首先作者换了,不是结城浩写的了,换成了平冈和幸;其次内容变得没有那么程序员思维了,更多的是偏向概率统计的概念,感觉像一本《概率统计》的书,蹭上了《程序员的数学》这个热门。只是鉴于目前学习和研究的方向确实是机器学习方面,所以还是挑选了这本书阅读以下,复习以下概率统计的知识。
还是简单介绍以下书的内容和知识点,涉及随机变量、贝叶斯公式、离散值和连续值的概率分布、协方差矩阵、多元正态分布、估计与检验理论、伪随机数以及概率论的各类应用。
说实话,读一本类似教材的书确实总结不出啥读后感,跟多的是细节上的体味和知识点的归纳。所以只好借阅读这本说谈谈自己对《概率统计》的理解,之前也提到过,概率统计不算是程序员的基础数学能力,只是针对做机器学习的程序员来说是比较重要的,但也不算是必不可少。自己程序员出身,半路出家做机器学习,对自己的数学基础一直耿耿于怀,虽然能用已有的开源机器学习库完成需求,也能对开源模型做一些简单的算法修改,但是一直觉得自己对概率统计的东西掌握不够扎实,很多东西理解起来很模糊。
后来有一次在知乎上看到一个讨论机器学习专家与统计学家观点上有哪些不同?其中一句话我觉得说的很不错:“统计学家更关心模型的可解释性,而机器学习专家更关心模型的预测能力。”感觉机器学习是一个很工业化的概念,很多流行的方法确实没有太多的数学和统计学上的可解释性,特别是在深度学习领域,大家只知道这么做效果好就一起这么做了。但是很多做机器学习的书籍又喜欢一上来一大段公式,搞得机器学习是一门很严谨的数学学科似的,拔高门槛,让人们对机器学习敬而远之。而其实基于目前的开源实现,机器学习的入门门槛不见得比 Spring 之流高多少。有一些使用经验就能很容易的将业务需求转换成实际产出。只是目前认为制造的门槛太高,现代程序开发分工明确,不是所有写代码的人都需要了解汇编,也不是所有做机器学习的人都需要数学扎实。目前来看,机器学习转换成实际业务产出的条件已经具备,需要的只是如何具体实施的尝试了。
原来看它是一座山,现在看它还是一座山,但能迈过。

《程序员的数学》阅读总结

《程序员的数学》阅读总结

数学学了18年,有时候也不知道数学有什么用。代码写了10年,也觉得用到数学的时候少。只有在最近逐步接触了机器学习和数据挖掘相关的知识,才渐渐明白了数学的重要性。翻出大学的《高等数学》、《线性代数》和《概率统计》,看着满本书的公式和习题,着实需要很大的毅力才能坚持把这些书在看一遍。指导发现了这本《程序员的数学》。这个月看的是第一部,后面还有《程序员的数学2:概率统计》和《程序员的数学3:线性代数》。
这本书面向程序员介绍了编程中常用的数学知识,主要是培养程序员的数学思维。讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、少年高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。书有着相当不错的易读性和趣味性,虽然讲的都是简单问题,但是讲解的方式和方法还是比较有意思的。
数学不算是编程的基础,但绝对是机器学习和数据挖掘的基础。程序员不需要太多的数学基础。真正需要数学的都是在具体领域里。跟编程结合最紧的,是具体数学,主要是离散数学和组合数学的内容,这一类数学跟程序员的思维密切相关,算跟工作结合比较紧密的。更多的数学则根所在的领域有关:做图形学,以线性代数、几何为基础;而做数据挖掘或者机器学习的,更涉及统计学习理论和最优化的部分。
也许数学对于一个不错的程序员来说,没那么重要,但是要再往上走一步,有一点点技术上的创新,就都是数学的事儿了。有人说过“如果你只想当个Good Programmer,那么数学不重要。但是如果你想当个Great Programmer,那么数学很重要。”
机器学习这个方向,相关资料都大量依赖于线性代数和概率论,以及一点点微积分。所以,如果希望做点有追求的技术工作的话,需要开始花点时间学习数学了。其实万事开头难,如果真的按下心来,看上一个小时,这么坚持个一月,其实就会发现,这没啥难的,就当学门新的编程语言吧。