首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习经典 Python Machine Learning 作者:新书计划曝光,分享实战经验

机器学习经典 Python Machine Learning 作者:新书计划曝光,分享实战经验

作者头像
新智元
发布2018-03-26 14:09:16
9410
发布2018-03-26 14:09:16
举报
文章被收录于专栏:新智元新智元

【新智元导读】机器学习入门经典读物 Python Machine Learning 的作者 Sebastian Raschka昨天在Quaro回答提问,分享技术实践和经验。Sebastian 提到,Python Machine Learning 一书的是在课余时间完成的。他介绍说,当下机器学习面临的一个核心挑战是找到正确的表征,生物学和计算机科学的跨学科融合最近有很多激动人心的进展。另外,他还在机器学习的工具、理论知识储备和学习方法上给出了很多中肯且实用的建议。

作者简介:Sebastian Raschka 是 Python Machine Learning 一书的作者。MSU 计算机生物学博士候选人。

Quora 问答地址:https://www.quora.com/session/Sebastian-Raschka-1/1

Jupyter在需要做项目或者写报告赶Deadline时,可以救命

问:有没有一些你个人偏爱的工具,它们能让你的工作更加简便高效?

在一个较高的层次,我认为“计算机、编程语言和算法”是最关键的工具,它们让我可以处理所有各种各样的难题。

但是,如果要具体到“软件应用”层次,我喜欢Atom Editor(远程工作时,我依然还在使用VIM)。在我日常的工作中,每天我基本都需要编辑许多不同类型的文件: Python脚本, .cpp 文件, HTML 文件, Markdown, .tex, 纯文本文件, PSF 文件等等。因为支持跨平台工作(我同时在macOS 和Linux 上工作),以及丰富的嵌入生态,我很喜欢使用VIM。

不过,进行数据分析时,绝大部分时间我使用的是Jupyter Notebooks。我不会在Jupyter上“开发”代码,但是对我来说,它是追踪我研究轨迹的一个工具,正如笔记本一样。所有的东西都记在上面:执行代码、变量标记和命令等等,它不仅替我节约了时间,在需要做项目或者写报告赶Deadline时,它可能还可以救命。

我不想漏掉的还有git(Github)和做笔记的APP Quiver(只在Mac上可用),在Mac上有很多很好的笔记类APP,但是我最喜欢Quiver 的一点是,它可以让你以任何形式导出你的数据,这样你就不会受具体格式或者程序的限制。

没必要什么都学,关键是“选择”和“聚焦”

问:对机器学习或数据科学刚入门,但却不堪信息过载的初学者有何建议?

我觉得,现在有大量可用的学习资源,对于个人来说,既是好事也有不好。当然,我们能有那么多工具和信息资源可供选择是一件很好的事,但是怎样最好地利用它们,以及我们的时间更重要。真正地“选择”和“聚焦”是关键。

我并不想说很多资源是“冗余”,因为“冗余”一词多少都带有一些消极的意味。但是,现实情况是,确实有许多不同的书、工具和课程都包含了相同的东西,虽然他们在风格和领域略微有些不一样。

所以,在把任何东西加到我们的阅读清单之前,我想说的是,绝对地想清楚个人的目标是什么是非常有必要的。(比如,要解决某个问题,我真正需要的技术是什么?我真的会学习这一新的、有名的工具而不是别的什么?)。由于存在着大量的材料,当选择学习材料和采用不同的工具时,会挑选就变得很有必要。当然,有时候会产生我们错过了什么的感觉,但是我认为,习惯这种感觉能真正地帮助我们保持专注,获得稳步的发展。

例如,我认为一本“机器学习简介”就已经很足够了,实在没有必要再去读什么“机器学习的几条简介”,除非你真心觉得某个资源还不够深。

正如Cathy O'Neil 和 Rachel Schut所说,世界上不存在“完美”的数据科学家——没有人会有时间把一切都学会,每个人培养一些特定的技能,并在某个领域做得很好,就已经足够了。

我认为没有必要什么都学习,因为我们可以通过团队实现互补。

下图:数据科学家的专业知识构成

(From: Cathy O'Neil & Rachel Schutt. “Doing Data Science.”)

机器学习一个关键的挑战在于找到正确的“表征”

问:2016年,你认为机器学习的哪些发展最令你兴奋?

我对多问题类的技巧,比如卷积神经网络和递归神经网络在除了图像识别和自然语言处理这两个领域之外的应用尤为感兴趣。

我认为,在应用这些技术时,一个关键的挑战在于找到正确的“表征”(此外还要有足够的数据),举一个老例子:

论文 :Lusci, Alessandro, Gianluca Pollastri, and Pierre Baldi. "Deep architectures and deep learning in chemoinformatics: the prediction of aqueous solubility for drug-like molecules." Journal of chemical information and modeling 53.7 (2013): 1563-1575. Deep Architectures and Deep Learning in Chemoinformatics: The Prediction of Aqueous Solubility for Drug-Like Molecules

在这项研究中,研究者把分子表示为一种直接的非循环图(传统结构是间接循环图),把其作为一个递归神经网络的输入,用于预测这些分子的溶解度。

最近,令人激动的例子是:

论文:Gómez-Bombarelli, Rafael, et al. "Automatic chemical design using a data-driven continuous representation of molecules." arXiv preprint arXiv:1610.02415 (2016). [1610.02415] Automatic chemical design using a data-driven continuous representation of molecules(初稿刚写出来几周)

简单来说,研究者训练了一个自动编码器 ,用于生成一个真实的、合成的分子。在这里,他们的神经网络把SMILES字符转化成多个隐藏的表征(只包含统计上显著的压缩向量),并以极少或者无错误返回SMILES字符串中,SMILES字符串是1维分子表征。例如,表示阿司匹林 的SMILES 串可以表示为: CC(=O)OC1=CC=CC=C1C(=O)O 等同于一下二维结构:

Aspirin (2-(acetyloxy)benzoic acid)

最后,2016年,机器学习的门槛降低也让我很兴奋,这要归功于过去几年间发展出来的工具,从 scikit-learn 到Theano,再到 TensorFlow以及Keras。这些工具带来的便利性在于它们让我可以更少地担心技术部署,从而聚焦于真正想解决的问题。

机器学习中最重要的是统计学和概率论

问:机器学习中,哪些数学理论特别有用?

统计学、概率论、线性代数和微积分。

其中,又数统计学和概率论最为重要,因为首要任务通常都是在一个辨别模型和一个生成模型之间做选择,去定义一个性能标准,并评估结果。线性代数是机器学习部署的一个主要支柱,它能让我们把记录和实现保持在一个非常高效的水平。我想说的是,在纯机器学习应用中,微积分并不是那么重要,但是,如果我们对理解所采纳的算法感兴趣,多变量计算和优化理论就变得非常关键。

计算机生物学的优势在于有大量非标签数据

问:在生物学和机器学习之间,有哪些最令人兴奋的问题?

在计算机生物学中,通常我们会拥有大量的非标签数据,这是非常奢侈的(有时候标签数据也很多,这取决于项目)。

我认为,现实中一大挑战是我们如何表示这些数据,以把它们输入到机器学习算法中(也叫特征表示)。我最近发现了一些比较有潜力的创意和方法(就是上文推荐的论文)。

用一个简单的算法,10天掌握机器学习

问:如何在10天掌握机器学习?‍‍

10天?这绝对是一个很有挑战性的任务。不过,我认为10天的时间足够让你对机器学习领域有一个非常好的了解了,或许你还可以开始在自己想要解决的问题上进行实践。

首先,你要对三个子领域(监督学习、非监督学习和增强学习)有一个入门级的了解。如果是我的话,我可能会把时间花在一个能代表这三个领域的简单算法上(也可能会把增强学习留到后面)。

比如,回归分析中的简单线性回归和岭回归、分类中的逻辑回归和K-nearest 相邻以及聚类任务中的 k-means 和层级聚类。一旦你理解了每一个算法的目标,以及他们如何尝试去解决一个特定的问题,那么再增加更多的算法和方法就会相对容易。但是,除了算法之外,如何准备数据也是很重要的(特征选择、转化和压缩),还有如何评估模型也很重要。也许,作为一个初学者,你可以试试我们在 SciPy 2016的 scikit-learn 机器学习。它长达近6小时,归纳了大部分的基础知识,并介绍了scikit-learn数据库,你能即刻上手。

如果你想理解算法背后的数学原理,推荐你去上吴恩达的线上课程,或者读我的书。不过,我认为这两件事(一般)不是在10天的计划之内(能完成的)。

学霸的世界:课余时间写出 Python Machine Learning

问:你怎么有时间掌‍match‍握机器学习,同时又写了一本书,还在另外一个领域读博士?

我认为,涉及到解决问题的时候,机器学习和计算机生物学之间有很大的重叠。在计算机生物学中,我们通过计算来解决问题,一般会使用各种各样的“数据挖掘”技术,而机器学习本身就是由一系列“数据挖掘”管道组成的。我对统计学领域也很感兴趣,最早是在研究生阶段,我上了“统计学模式识别”的课程。我为什么要提到这个?我认为这门课程真正地点燃了我对预测模型和机器学习的热情。首先,我的第一感觉是“哇,这太难以置信了,它能让我以计算机生物学的方式解决所有的问题”。后来,我想,“机器学习那么重要,那么激动人心,它能让我解决几乎所有的问题,我怎么学都不够。”

在修读完课程之后,几年之间,我对机器学习真正的产生了热情,我可以利用课余时间去学习这一学科,有时候甚至学到半夜。坦白说,在写书之前,机器学习中有很多主题我都还没有深入了解,有大量的论文我还没有机会去看。但是,在受邀写书的时候,我幸运地发现,这一主题是我完全可以利用此前研究轻松把握的。虽然我只是每天在夜里写几个小时,或者利用周末的时间来写,在那几个月,我完全没有社交生活,但这完全是我凭着热情去写的:我真的很激动能分享自己学到的东西,自己觉得很兴奋的东西,这让写书的过程充满了乐趣。最后,我想写书或者完成博士项目是我101%兴奋的东西,所以我愿意把时间都花在这上面。

为了学习而学习很快会无聊,解决方法是从问题出发

问:数据科学初学者如何才能更好地掌握好数据科学技术,你有什么建议?

我的建议是选择你个人感兴趣的问题或项目,而不是重复一个已经以教程或其他形式提供了解决方案的问题。如果你对要解决的问题具有强烈的个人兴趣,自然会更积极地寻找解决方案,探索新的工具和技术。

首先,我会从已经熟悉的技术和工具入手。如果遇到可用的工具包,我会搜索类似的问题或直接与人讨论。例如,假如你对某种预测很感兴趣。开始时,你可以把键值数据对存储到Python词典中。随着数据集变大,你可能需要寻找替代方案,例如,SQLite,那么你需要花时间学一下SQLite。同样,你可以用NumPy阵列做很多事情,但是在收集异质数据时,可能需要用Pandas来更方便地对数据进行预处理。如果系统内存成了瓶颈,也可以试试其他工具,例如Blaze。

我推荐的方法是学习你认为对解决你的问题有帮助的工具,并使用它们作为基准以熟悉使用。第二步是为你的工具寻找可能带来额外好处的潜在替代方案。

最终,我发现只是为了学习工具而学习工具很快就会变得非常无聊,所以我的方法是在实践中学习工具。如果实践的项目令人振奋,你会自然地花更多时间采用新的工具来进行改进。

原型设计用 Octave,但我是个 Python/R 人

问:机器学习中,使用Octave 有多简便高效?

我认为 Octave 对于原型设计(prototyping)来说是一个高效的环境,它和MATLAB 一样,都是学术界非常受欢迎的计算机科学环境。在好几所大学中,我都必须使用Octave来提交我的作业和项目,我必须要说,对于学习机器学习来说,这绝对是一个很好的选择。但是,看起来在现实的应用中,Octave/MATLAB也是一股新的趋势,我还想说,其他的语言,比如Python也很容易上手,也比较通用。(但是鉴于我是一个Python人,可能会有些主观)。

简而言之,如果实验室或者课程要求的话,我肯定会选择 Octave ,否则,我更偏向 Python或R。

你也可以试着写本书

问:我很喜欢你的Python Machine Learning,你有计划再写一本吗?

很高兴听到你喜欢我的书。是的,我正在计划写另一本书……我计划写一本关于模型评估的书。在这一话题上,我已经收到了许多问题,我认为,篇幅太短的话,介绍一本书总会介绍不全。所以,我关于新书,可以参考我的博客文章: Model evaluation, model selection, and algorithm selection in machine learning"

(http://sebastianraschka.com/blog/2016/model-evaluation-selection-part1.html)

当然,写成书的话,还会增加许多东西,比如在 Python/scikit-learn/Tensorflow 中的实践代码。

Quora 问答地址:https://www.quora.com/session/Sebastian-Raschka-1/1

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档