这里的书涉及到信息检索,自然语言处理,机器学习,模式识别,数据挖掘的方方面面,每一本书都是值得读者深入的阅读,研究和讨论的。因此,我只能就我个人的理解对几本相对熟悉的或者读者的评价很高的书做一些简单的介绍,一来抛砖引玉,希望大牛来多给些指正,二来也为他人的学习提供一些经验。
Natural
Language Processing
Foundations of
Statistical Natural Language
Processing:这是研究自然语言处理必备的书之一,是Stanford的Manning和斯图加特的Schutze教授二人的呕心沥血之作,本书的英文版是1999年的,中文已经出了第二版了,是清华的苑春法老师翻译的。从内容上来说,本书涵盖了统计自然语言处理的大部分,包括基础知识、词法、句法和应用四大部分,形式上的层次感很强。无论是各种子任务还是模型方法,本书都有深入探讨。我第一本看的NLP的教材就是这本,直到现在,很多观点都深深受其影响。这里特别需要提到的是Manning,这是一位表达力很强的学者,他的另一本关于信息检索的书也是深受读者的欢迎。
Speech
and Language Processing: an introduction to natural language
processing, computational linguistics, and speech
recognition:这是讲解自然语言处理最为详细的书,到现在为止英文已经到2th
edition了,中文只是翻译到第一版,两版之间的差别还不小,中文的译名是《自然语言处理综论》。由于这本书和上一本的中文译本都是紫色封皮的,所以这两本书被合称为“两本紫宝书”。因为是综论,该书既有统计的基本模型,也详细介绍了传统的确定性方法,既讨论了自然语言分析的各个子任务,也介绍了speech的相关内容(这个基本不懂),在这些方面上,它的工作要比前一本更加系统更加广泛;因此,这本书是更适合作为教材的(其实我们当时的教材就是这本,但是由于太厚了一直没敢读下去)。另外,这本书的第二版对ME和MEMM的讨论也体现了时代性。
Machine
learning
Pattern Recognition and
Machine Learning: 这是机器学习领域最为流行的最为推崇的一本书,也是Chris.
Bishop的得力之作。我认为这本书之所以成功除了作者本身的表达丰富和理解深刻之外,还有几个原因:1.
内容深刻而且组织新颖,例如本书是从核方法入手去讲解SVM,从而一带介绍了Gaussion
Process; 2.
概率图模型是本书花了很多笔墨的一部分,作者认为对于Statistical
Inference, 图模型正好提供了一种极好的描述应用框架;3.
包罗万象,我基本能够想到的所有的ML的模型在这里都有深刻的描述和介绍,包括基本的线性方法(线性分类器,线性回归)和非线性方法(神经网络,核方法),以及K-means,
EM, PCA, HMM, boosting等等方法; 4.
另外一个值得称赞的地方是该书提供了大量各种难度的习题,同时也可以下载到相应的答案,这对于自学的同学来说是非常有益的。我想在我说了这么多的优点之后,没有人会去怀疑它的经典,但是内容深刻而丰富必然使得书本的达到近800页,这也直接对阅读者造成了心里上的阴影,所以,经典只是经典,要想真正获得经典,只有决心和毅力了。
Machine
Learning (Tom M. Mitchell):
这是本97年就出版了的书,在介绍早期之前的工作,这本书还是非常不错的。然而,ML在近年的发展实在是太快,所以,它还是看起来略显陈旧,没能跟上时代的步伐。我看的是中文的译文版,觉得翻译上还是有所欠缺的,但是的确也理解了一些基本的算法包括KNN和决策树(到研究文本特征选择的时候它的思想也帮助了理解);最近的reforcement
learning在会议上又好好火了一把,可惜当年没有好好学习,现在就连翻翻文章的勇气都没有了。另外,作者又在写第二版,有generative
vs. discriminative
model的一部分,讲的深入浅出,但是只有这一章,估计是作者太忙了,还是希望他能够早点完成巨作。
Pattern
Classification:
这是Duda和Hart二人的合力之作,在MLPR出版之前,它一直统治着这个领域,当然我指的是第二版。我只是认真阅读了这本书的PCA和LDA部分,它给我的印象是排版和翻译很棒,可以说是制作精良吧,完全没有一点生硬之感,但是内容组织上似乎有点乱(这点也许是我没有通读的原因)。既然是曾经的霸主,肯定有其不一般的地方,有兴趣的同学可以把这本书和MLPR对比着学习。
Information
Retrieval:
Modern Information
Retrieval:
这本书是IR领域引用率最高的一本书,近年SIGIR的大多数文章都会提到的,原因很简单,在这个领域实用化商业化之前两位伟大的作者就已经预见到了IR在互联网的繁荣,于是成书。
An
Introduction to Information Retrieval: 这是Chris.
Mannning在2007年的新作,有两个特点:1.
新,因为成书的时间离现在很近,所以内容大都比较新。2.
简单,非常容易读懂,对于初学者,大概一个月的时间就可以通读这本书,而且其中的概念也不难理解。该书的主线是按照检索模型的发展顺序来组织的。从boolean
model到 VSM,再到langauge
model。当然其中也涉及到了当前的主要的研究热点,例如machine
learning中的clustering,
web search中的link
analysis等等。
Matrix:
矩阵论,或者说是线性代数:它是ML,PR等的数学基础之一。它可以提供一些简介的数学表示,可以说上层教材的所有变量表达和变换都离不开向量和矩阵;矩阵理论也为上层应用的线性方法和思想提供了有利的理论基础。我使用的与矩阵相关的参考书主要有:
Matrix
Analysis: 这本书是备受推崇的矩阵论教材,据说讲的非常透彻。
Matrix
Computation:
这是矩阵论和科学计算结合的经典之作,它对矩阵论的各种算法都提供了计算机实现的解决方案以及复杂度分析。
Matrix
Cookbook:
这是网上流传很广的一个小册子,没有原理的讲解,没有定理的证明,只有公式的罗列,可以作为手册来查。
Optimization:
优化在ML,
PR领域都是不可或缺的,SVM的求解就是二次规划问题,EM的求解也是把约束优化问题转化为了无约束优化问题最后再使用最优化的一般方法解决的。在这方面的中文教材已经做得很优秀,只在这里简单介绍两本(也不一定是最好的)
Convex
Optimization:
Boyd和Vandenberghe的作品,2004年出版,内容较新。书中的内容分为理论,应用和算法三个部分,适合不同需求的人阅读。另外,两位作者有篇半定规划的论文也很有影响。
Practical
Optimization: Algorithms and Engineering Applications:
这是华人教授陆吾生老师的作品,他本人是数学系科班出生,但是现在在电子系做教授,所以从理论到应用都很精通,而且很了解电子系计算机系的学生在这方面的优劣势,这本书就是在他多年的经验中沉淀出来的,这也正是我们所需要的。另外,去年陆老师在华东师范有个系列讲座,网上有视频可以下载,强烈推荐。
Statistics:
这是个最容易造成学习障碍的数学领域,上层领域中的论文铺天盖地的都是parameter
estimation,
inference,对于有着“不求甚解”的习惯的初学者,这些基本概念无形之中成为了拦路虎。然而,统计学发展到现在也可以算是相对成熟了,学科本身提供了大量的参考资料:
Statistical
Inference: Casella and
Berger的作品,现在已经出到第二版了,国内有影印版的,这里对统计学的一些基本概念做了详细的解释,不涉及太多概率的知识,至于测度只是一带而过;它的重点在于帮助理解统计学的思想体系,其中概念之间的联系甚为紧密;书中有大量的例子,这为感性的学习者提供了不少帮助。在书的后面几章,一些回归分析的模型也有讨论。总而言之,这本书是一本相对浅显的统计系的教材。
All
of Statistics:
作者Wasserman,它是源自CMU的统计学书籍,成书的原因很简单——就是为广大奋战在计算机研究前线的人们提供统计学上的支持。一方面,它试图包罗统计学的各个方面(all
of statistics),从基本概念到方法模型都有提到,另一方面,它却是个精简的版本(A
Concise Course in Statistical
Inference),很多子问题都没有详细展开的讨论。这本书的最大亮点是计算机的气氛很重,从正文之前对比machine
learning和statistics的术语的表格就可见一斑,读这本书就好像在读cs的论文,而不是统计的专注。所以,不管它是否透彻是否准确是否完备,对我们来说,它实在是难得的珍宝。
Algorithms:
这个对CS同学们最为熟悉的领域也是最精致最优雅的。相对与上面的Optimization,现在讨论的这个也是为求解问题的optimal
solution, 其区别在于刚刚提到的Optimization是numerical
optimization,而这里提到的则是combinatorial
optimization。
The
Art of
Programming:Knuth爷爷的这套算法书毋庸置疑是整个算法界的瑰宝,介绍他和这套书的评语网上很多,我也没看过就更没资格指点了。有意思的是,这本书的表示符号很奇异,估计是几十年前的算法表示符号没有统一,或者是大牛的精髓在于方法和思想而不是表达,也有可能是他想找个机会秀一下他的Tex:)
An
Introduction to Algorithms:
是三个作者的联合力作,现在应该在第二版了,这本书应该也是国内最风靡的算法书了。虽然标题是introduction,但是实际上一点都不浅显,要花大量的时间来理解其中的思想和方法。也许是出于学术著作的完整性,书中包含了大量的证明,这对于初学者来说无疑是不太适应的,但是从另一角度来看,它却能够满足各种层次各种水平的读者的需要,适合beginner,适合mathematician,适合coder.不管怎么样,它的很多概念和思想都已经成为公认的经典了,比如动态规划的overlapping
sub-problems and optimal sub-structure.
Algorithm
in C:
这是我精读过的算法书,直观感觉是容易理解,图示很多,尤其是在讲解栈和递归的时候;代码优雅,它的快排比introduction中的要漂亮得多,树的非递归的先序遍历也比清华的数据结构中所提到的要清晰明白;更可贵的是这书提供了C语言的源代码(不知道为什么对C有天然的好感),而不是一般算法书中的伪代码(有些伪代码很难理解,而且有些不一样的约定比如数组下标从1开始等等)。可惜这本书只是出版了两本,作者原来打算要写的估计现在都不写了(就连这个习惯都从他的老师那儿学过来了)。