哲学系毕业生到机器学习实践者(布莱恩·托马斯访谈)

开始机器学习之路可能会令人沮丧。需要学习的东西太多了,感觉不堪重负。

以至于许多对机器学习感兴趣的开发者从未开始。在临时数据集上创建模型并在 Kaggle 竞赛中崭露头角这样的想法,听起来很令人兴奋,但又像遥远的目标。

那么,一位哲学系毕业生是如何开始接触机器学习的呢?

在这篇文章中,我采访了布莱恩·托马斯。

布莱恩在发现理论性强的在线课程令人沮丧后,通过实际进行应用机器学习的自上而下方法开始了机器学习的学习。

发现布莱恩的故事以及他使用的工具和资源。

如果布莱恩能找到开始机器学习的方法,你也能。

Philosophy Graduate to Machine Learning Practitioner

哲学系毕业生到机器学习实践者
照片由 Andrew E. Larsen 拍摄,部分权利保留。

问:您之前尝试过哪些资源来理解机器学习?

有效的方法

您的《Jump-Start Scikit-Learn》和《Jump-Start Machine Learning in R》早期非常有价值,它们就像是使用这两种工具的机器学习领域地图,让您能够深入其中并开始尝试不同的机器学习模型。我喜欢将不同的算法进行了细分和布局,就像一张地图一样,组织了我拜访它们的努力。

从那时起,我转向了 Brett Lantz 的《Machine Learning with R》,我认为这本书特别好。

目前我正在学习 Stephen Marsland 的《Machine Learning: An Algorithmic Perspective》。这本书非常棒,而且我发现比一年前第一次拿起它时更容易理解了。

总的来说,最有效的方法就是动手去尝试不同的数据集和模型。我必须说,特别是 scikit-learn 帮助我更好地理解了这个主题。我还要感谢 IPython,哦,或者说 Jupyter notebook。对我来说,能够加载一些数据,尝试 scikit-learn 的不同模型,然后添加一些 markdown 单元格来用我自己的话解释模型和结果,这是非常有益的。

最近,我还在学习一些在线机器学习教程,特别是 Jake VanderPlas 和 Olivier Grisel 关于 scikit-learn 的教程。能够克隆他们的 git 仓库并跟随他们的演示一起玩转代码,也极具启发性。

无效的方法

几乎我尝试过的 2 到 3 个在线课程,包括 Andrew Ng 的 CS229 ML 课程,以及 Nando de Freitas 从 UBC 提供的在线 ML 课程。

不是说它们不好,只是我发现尝试坐着观看一个关于随机梯度下降的 50 分钟讲座并没有多大帮助,尤其是在没有数学背景的情况下。我通过将 Marsland 的 ML 书籍中提供的代码粘贴到 Jupyter notebook 中进行尝试,从而对 SGD 有了更好的理解。

当然,我并没有正式注册这些课程,我只是下载了所有的讲座、笔记和作业,并尝试去学习。最终,它似乎陷入了理论的泥潭。我认为这反映了许多问题的症结所在:人们在没有太多数学背景(比如我自己)的情况下进入这个领域,看到所有这些数学理论就望而却步了。

先写代码,然后再发展理论理解。这似乎是正确的方法,而且我知道 你绝对赞同 这一点。

问:您能分享一下您的背景和工作情况吗?

我于 1995 年大学毕业,获得哲学学士学位。

令人惊讶的是,这无意中为我打开了进入 IT 市场的大门,因为我在一个地方找到了一个行政工作,当时我是一名合同工。从那份工作中,我通过自学在数据库和编程方面学到了很多东西。

在哲学背景下,我一直能够将事物分解成组成部分,并看到它们是如何相互作用的(这可能解释了我相当不错的解决问题能力)。然而,从那个背景来看,我的数学技能为零!我早在高中就停在了二年级代数,再也没有往前学。

在过去的 7 年里,我在一家大型保险公司担任了许多不同的职务,我的日常职责包括服务器和软件测试管理,这包括开发大量的 PowerShell(以及现在的 Python)应用程序来协助完成这些工作。

问:您是否能分享一些您尝试过的具体算法和数据集的例子?

我认真学习的第一本 ML 书是 Brett Lantz 的《Machine Learning with R》,我学习了其中所有的数据库和算法,以及“经典热门”的 Iris 数据集。IMO,这是一本非常适合初学者的书。

在学习 Lantz 的书的同时,我也在自学 Python(通过 Charles Dierbach 的《Introduction to Computer Science Using Python: A Computational Problem-Solving Focus》等书籍,这些书籍专注于 Python 编程本身,而不是 ML)。

很快,在 Lantz 的书之后,我发现自己日常工作越来越倾向于 Python。我唯一使用过的 Python 机器学习书籍是 Stephen Marsland 的《Machine Learning: An Algorithmic Perspective》。

最近,我也尝试了 泰坦尼克号数据集,练习了数据清理、特征选择,然后尝试了 scikit-learn 的各种算法,如朴素贝叶斯、K 近邻、AdaBoost 和随机森林分类器。

我也开始探索使用 GPU 的 Python 包(我最近购买了一台 配备 NVIDIA GeForce 950M GPU 的 ASUS 笔记本电脑,并在上面搭建了一个不错的 CUDA 环境),特别是 Theano。

问:我注意到您尝试过 Python 和 R 进行机器学习,您对这两者有什么看法?

我最初是使用 R 而不是 Python 来实际进行机器学习的,所以这可能歪曲了我对两者的看法。

然而,学习机器学习确实感觉用 R 更直接。

是因为 Lantz 的书吗?

是因为 R 是一种统计编程语言,因此在编码时必须直接接触各种数学概念吗?

我肯定认为后者可能与这个印象有关。

现在,我基本上完全转向 Python 了,主要是因为像 pandasTheano 这样的包(这是我目前最喜欢的两个)。我尤其对 Theano 感兴趣,并且玩得很开心。

我喜欢声明变量、它们的类型,然后构建由这些变量组成的表达式,再构建函数,这些函数可以被自动编译以供 GPU 使用。

这真是太酷了!

问:您深入研究机器学习的目的是什么?

回想我自己的哲学背景,正是哲学上的好奇心让我投入其中。

机器……会学习?!怎么做?!?

你必须承认,这个领域的整个历史和实践都堪称迷人,触及了大量本质上是哲学的问题。再加上随着深度学习等近期发展,整个领域变得越来越有趣。

与深度学习相关的还有随着大规模并行 GPU 编程的出现而发生的一种范式转变。

看来,最近在深度学习方面的进步可能没有它就不可能实现,而且能够告诉 Theano 利用我的 GPU,然后处理 LISA Lab 的 深度学习网站 上的深度学习教程算法和 MNIST 数据,这很酷。

结束语

感谢 Brian 分享他的故事和经验。

Brian 已经开始了学习,通过在 R 和 Python 中解决问题来建立技能,现在正在攻克更复杂的深度学习主题。

尽管他仍然处于初级阶段,但他的机器学习之旅已经有一个很棒的开端。他可以实际进行应用机器学习。

我认为,如果您希望开始学习机器学习,Brian 的故事非常鼓舞人心。

你还在等什么?

2 条回复于 _Philosophy Graduate to Machine Learning Practitioner (an interview with Brian Thomas)_

  1. Surajit Deb Barma 2015年9月27日 上午2:00 #

    这个故事确实令人鼓舞。继续加油,Brian……

  2. Rasananda BEHERA 2015年10月29日 上午8:41 #

    我简要地研究了增加 k 在 kNN 中作为训练数据集大小的比例的影响,以及在 SVM 中选择不同核对二元分类问题的影响。

    对于逻辑回归在二元分类上的不同属性缩放是怎样的?

    请尽可能解释其影响。

    Rasananda Behera, DTM
    首席数据科学家
    ScientistRBehera@gmail.com

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。