机器学习标准教科书PRML的Python实现:最佳读书伴侣

选自GitHub

机器之心整理

参与:蒋思源

机器学习神书之一的 PRML(模式识别与机器学习)是所有机器学习读者或希望系统理解机器学习的读者所必须了解的书籍。这本书系统而全面地论述了模式识别与机器学习领域的基本知识和最新发展,而该 GitHub 项目希望实现这本书的所有算法与概念,是非常优秀的资源与项目。

GitHub地址:https://github.com//ctgk/PRML

PRML 这本机器学习和模式识别领域中经典的教科书不仅反映了这些年该领域的最新发展,同时还全面而系统地介绍了模式识别和机器学习领域内详细的概念与基础。这本书主要针对高级本科生或研究生,以及人工智能相关的研究人员和从业人员。如果读者以前没有模式识别或机器学习相关的概念或知识,我们可能需要熟悉一些多元微积分和基本的线性代数等数学基础。此外,我们本科学的概率论与数理统计也需要复习一些,但这本书包含了对基本概率论的介绍,所以也可以借由这些章节进行复习。

PRML 适用于机器学习、统计学、计算机科学、信号处理、计算机视觉、数据挖掘和生物信息学等课程。它也为广大的读者提供了丰富的支持,例如书籍官网提供了 400 多个详细的练习资源,且根据难度分级。以下提供了该书籍的中英文资源,但我们还是建议读者查阅原版的英文书籍。此外,我们在 GitHub 上也能找到非常多的学习资源,例如中文翻译项目、Matlab 实现项目或各种读书笔记等。本文主要介绍了一个新的 GitHub 项目,该项目希望能实现 PRML 这本书籍的各种算法与概念。

PRML 实现地址:https://github.com//ctgk/PRML

PRML 书籍资源:http://pan.baidu.com/s/1skRgcjF 密码:cquc

该 GitHub 项目主要是希望使用 Python 代码实现在 Bishop 书籍「Pattern Recognition and Machine Learning」中介绍的算法。其中代码可以分为两部分,即实现各章节具体算法的 Python 代码文件和有助于理解各章节具体内容的 Jupyter Notebook 文件。在本文中,机器之心将简要介绍描述各章节的 Notebook,而各个算法的具体实现就需要读者朋友自行深入了解该项目了。

该 GitHub 项目所需要的编程语言为 Python 3,其它科学计算库还需要 NumPy 和 SciPy。若我们需要阅读各章节的 Notebook 文件,就需要安装 Jupyter,若希望在 Notebook 上绘制结果曲线或其他图表,我们需要安装 Matplotlib。此外,若我们希望馈送数据进行训练,还需要安装 sklearn 包。

在各章节具体算法的 Python 代码中,其罗列了聚类方法、特征抽取、线性模型、核方法、马尔科夫模型、概率分布模型、采样方法和神经网络方法等主题的实现。如下展示了线性模型文件夹下所包含的具体算法:

而对于 Notebook 部分来说,该项目展示了 PRML 各章节的辅助内容与实现代码,这一部分的内容目录如下:

ch1. 简介

ch2. 概率分布

ch3. 线性模型和回归

ch4. 线性模型和分类

ch5. 神经网络

ch6. 核方法

ch7. 稀疏核机器

ch9. 混合模型与 EM 算法

ch10. 近似推断

ch11. 采样方法

ch12. 连续隐变量

这些章节都是根据原书章节进行展示的,例如在简介章节中,该项目重点展示了多项式曲线拟合和贝叶斯曲线拟合。如在多项式拟合中,我们希望用以下形式的多项式拟合数据:

其中 M 为多项式的阶数,多项式系数 w_0, . . . , w_M 可以整体表示为向量 w。这些多项式系数可以通过梯度下降等方法调整多项式曲线拟合数据的情况。该 GitHub 项目先导入前面定义的具体模型,然后如下所示,再在 Notebook 部分展示模型的结果:

这和原书中的结果是非常相似的,我们甚至可以进一步调整不同的多项式复杂度以查看不同的拟合效果。因为增加了实践过程,这样的实现非常有助于我们理解原书中的概念与算法。此外,如果我们对算法的理解有什么疑惑,也可以查看具体的代码加深理解。

前面展示的案例是简介部分非常简单的多项式拟合方法,而对于更复杂一些的模型与方法,该项目也有非常好的实现与展示。例如在第七章中,PRML 主要介绍了稀疏核机器(Sparse Kernel Machines),包括最大间隔分类器、相关向量机(Relevance Vector Machines/RVM)等方法。如下所述,该项目对这一部分的内容也有非常好的辅助作用。

例如在最大间隔分类器或支持向量机中,我们假设训练数据集在特征空间中是线性可分的。因此根据定义,存在至少⼀个 参数 w 和 b 的选择方式,使得对于 t_n = +1 的点,线性模型 y(x) = w*φ(x) + b 都满足y(x_n) > 0,而对于 t_n = -1 的点,都有 y(x_n)0。

但是这种分类的情况会有很多,我们可以选择最稳妥的分类方法,即决策边界尽可能地处于所分类别的中间。支持向量机解决这个问题的方法是:引入间隔(margin)的概念,这 个概念被定义为决策边界与任意样本之间的最小距离,如原书第七章图 7.1 所示。

如左图所示,间隔被定义为决策边界与最近的数据点之间的垂直距离。最大化间隔会生成对决策边界的一个特定的选择,如右图所示。这个决策边界的位置由数据点的一个子集确定,被称为支持向量,用圆圈表示。

在该 GitHub 项目中,其展示的代码与绘图如下所示:

若我们应用和方法将这种大间隔分类的方法应用核技巧,将原本线性不可分的数据投影到线性线性可分的特征空间中,那么我们就能将这种具有大间隔或具有更强泛化能力的分类器推广到非线性分类中。如下展示了该项目这种扩展的支持向量机模型:

当然,本项目还有更多的模型与方法案例,我们可以按照 README 文件中所给出的 Notebook 文档加强对 PRML 这本权威教材的理解。该项目目前还在进一步完善,也希望各位 PRML 的读者能共同完善它,为我们自己提供更加优秀的学习资源。

本文为机器之心整理,转载请联系本公众号获得授权。

✄------------------------------------------------

本文来自企鹅号 - 轻芒媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

CVPR大规模行为识别竞赛连续两年夺冠,上交大详细技术分享

【新智元导读】近日,视频行为理解领域的ImageNet竞赛——ActivityNet Challenge 2018在CVPR 会议上落下了帷幕。来自上海交通大学...

410
来自专栏机器之心

资源 | 下一代PS工具:Adobe照片级图像风格转换的Torch实现

选自arxiv 作者:栾福军等 机器之心编译 参与:李泽南、微胖 康奈尔大学与 Adobe 的研究者们最近发布了一项通过卷积神经网络进行照片风格迁移的研究。随后...

34611
来自专栏FreeBuf

通过预测API窃取机器学习模型

由于机器学习可能涉及到训练数据的隐私敏感信息、机器学习模型的商业价值及其安全中的应用,所以机器学习模型在一定程度上是可以认为是机密的。但是越来越对机器学习服务提...

2605
来自专栏机器之心

从三大神经网络,测试对比TensorFlow、MXNet、CNTK、Theano四个框架

选自data science central 机器之心编译 参与:蒋思源 本文比较了 Keras 支持的主流深度学习框架性能,包括 TensorFlow、CNT...

2787
来自专栏企鹅号快讯

DeepVO:基于深度循环卷积神经网络的端到端视觉里程计

每天一分钟,带你读遍机器人顶级会议文章 标题:DeepVO: Towards End-to-End Visual Odometry with Deep Recu...

3919
来自专栏机器之心

资源 | 价值迭代网络的PyTorch实现与Visdom可视化

选自GitHub 作者:Xingdong Zuo 机器之心编译 参与:吴攀 《价值迭代网络(Value Iteration Networks)》是第 30 届神...

3428
来自专栏人工智能LeadAI

卷积神经网络(CNN)介绍与实践

作为人类,我们不断地通过眼睛来观察和分析周围的世界,我们不需要刻意的“努力”思考,就可以对所看到的一切做出预测,并对它们采取行动。当我们看到某些东西时,我们会根...

621
来自专栏人工智能头条

如何让神经网络把熊猫识别为秃鹫

1559
来自专栏企鹅号快讯

TensorFlow 资源大全中文版

编译:伯乐在线 - Yalye,英文:jtoy http://blog.jobbole.com/110558/ jtoy 发起整理的 TensorFlow 资源...

22210
来自专栏机器学习算法与Python学习

入门必看 | 深度Q-learning简介【RL系列】

今天,我们将构建一个深度Q网络,为环境中的agent实现一个可以获取环境状态信息以及近似Q-value的神经网络。

674

扫码关注云+社区