我十分喜欢豆瓣的推荐系统,因为它经常能帮助我发现一些我感兴趣的新东西。然而在读这本书之前我却从未尝试去了解这是如何实现的,只是胡乱地猜测大概和一堆复杂的数学公式有关,是以在很长的一段时间里我把推荐系统看作是“超自然”的事物。
Programming Collective Intelligence 作为一本机器学习的入门书,很优雅地摘去了那些看似神奇的推荐系统、垃圾邮件过滤系统或是游戏AI头上的光环,将它们还原为一行行实在的代码,并相对浅显易懂地介绍了当中涉及的数学原理,仿佛是在带领读者去揭穿一个个魔术背后的障眼把戏,让读者在“哦”的醒悟之余大呼“妙绝”。
虽说这是一本讲原理的书,却一点都不枯燥,而且还很实用。全书十二章中,除去头尾两章,其余的每一章分别介绍了一类算法,从简单的相似度计算到有点玄乎的 genetic programming,都先以作者杜撰的简易数据开场,再拿现实数据(从提供API的 web 2.0 网站上抓取)开刀,既讲清楚了道理,又能启发读者利用这些算法去做实际的应用。
但这本书并不是完美无缺的,主要问题出现在代码中:
- 作者可能不太熟悉 Python,所以经常会看到 for i in range(len(xx)) 这种十分不 Pythonic 的遍历方式;
- 代码可读性不高——变量名太简短,滥用列表解析;
- 不知是排版错误还是作者根本没测试,部分代码与文本对不上号。
