前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习的必备条件不是数学而是...

机器学习的必备条件不是数学而是...

作者头像
小莹莹
发布2018-04-18 17:56:13
8540
发布2018-04-18 17:56:13
举报
编者按:2012年10月《哈佛商业周刊》上面发表了一篇专栏,文章称“数据科学家”是21世纪最最性感的工作。在美国,数据科学家的年收入已超过律师和医生,无怪乎有人惊呼“告诉你的孩子不要成为医生而要成为数据科学家”。 那么你怎样才能找到门路呢?这篇文章或许会给你些启发。需要说明的数据科学家是舶来语,在国内作为一种头衔,可以理解为是对数据分析师、数据挖掘工程师、机器学习工程师和算法工程师这几个岗位的统称。

正文:

当初学者开始学习机器时,首先会问“门槛是什么?我需要了解什么才能开始从事这一行?

一旦初学者开始尝试了解这个问题,经常发现善意但令人沮丧的建议,如下所示:

你需要掌握数学,以下是清单:

- 微积分

- 微分方程

- 数学统计

- 优化

- 算法分析

...

像这样的回复足以令任何人都感到恐惧,即使你具有一定的数学专业基础。

我猜很多初学者会被这样的建议吓倒,如果你有同感,我有一个好消息给你:为了开始构建机器学习模型(不是机器学习理论研究),你需要的数学知识比你想象的少(至少比你被告知的要少)。如果您有兴趣成为机器学习从业者,那么你不需要很多高级数学知识也可以开始。

但你要说没有任何门槛那也不是。

门槛还是有的。事实上,即使没有对微积分和线性代数的高度理解,也有其他门槛,你应该知道这些。

数学不是机器学习的主要前提

如果你是初学者,而你的目标是在行业或企业中处理问题,那么数学不是机器学习的主要先决条件。听上去有点不可思议,那么让我解释一下。

到目前为止,你听到的关于机器学习的大多数建议是来自在学术领域里从事数据科学的专家。

使用术语“学术”并不意味着我对这些人有偏见,事实上我很佩服这些从事基础研究的人。

在学术领域中有不同的追求和三观,这些三观使得学术界人士的思想认识和工业界人士大大不同。

在学术领域,你经常会被鼓励学术研究和写报告,当你的研究领域是机器学习,那么你的确需要深入了解机器学习的统计学和数学基础。

在工业领域,在大多数情况下,主要的追求不是发明创造(造轮子)和写报告。企业真正追求的是否能创造商业价值。在大多数时候,尤其刚起步阶段,你会应用“现成”工具就足够了。这时候你会发现,这些工具对数学的要求并没有你想象的那么高。

“现成的”工具数学要求并不高

几乎所有常见的机器学习库和工具都会为你处理困难的数学问题,这包括R的caret包以及Python的scikit-learn库,也就是说不一定需要知道线性代数和微积分才能从事机器学习工作。

安德鲁·格尔曼(Andrew Gelman)在对一本关于回归算法的书中写道:

“大多数书籍都是通过复杂的矩阵运算来定义回归算法的,我们并不以为然,原因很简单,矩阵运算现在可以由计算机自动完成。计算虽然重要,但也许可以把它放在用户的视线之外。”

要知道Gelman是一位备受好评的统计学家,他是哥伦比亚大学(常春藤联盟之一)的统计教授,写过几本关于回归和贝叶斯统计方法的牛书。虽然他这句话只提到了回归算法,但同样适用于其他机器学习算法。

再次强调这一点:现代统计学和机器学习软件可以为你处理大量的数学问题。

如果你只是想建立一个很棒的预测模型,几乎不需要任何微积分或线性代数的知识。你对此表示怀疑吗?那么你可以看一下《An Introduction to Statistical Learning》 or 《AppliedPredictive Modeling》,这是两门机器学习方面的经典教材,书中几乎没有微积分或线性代数的内容。

对于想要开始机器学习的初学者来说,这是一个好消息。您可以从R的caret包中或Python的scikit-learn库中直接调用函数,这些函数将处理好涉及到数学运算。对于初学者来说,机器学习涉及的数学知识深似海,了解深海领域的数学知识既不需要也没必要。

当然,我不是说这些工具可以替你把所有的事都干了。你仍然需要动手实践才能掌握这些工具。实践出真知,你不动手实践是掌握不了机器学习的。

大多数数据科学家不搞数学

我认为许多初学者对数据科学家并不了解。他们想象的数据科学家们花大把时间站在白板前,一边喝着咖啡一边在白板上修改数学公式。

然而事实并非如此。

那么数据科学家实际上做了多少数学?

就我所知不管是初级数据科学家还是中级数据科学家,他们花费在数学上的时间实际不到5%,坦白的说,5%都是高估了。

就机器学习而言,你只有不到5%的时间花在数学上。特别是当建立模型时,你将花费更少的时间在数学上。

在工业领域,数据科学家们不会做更高级别的数学。

实际上大多数数据科学家花费大量时间是在获取数据、清理数据和探索数据上,不管是数据分析还是机器学习(后者尤其如此),如果过你是初学者更是如此。

如果要开始学习机器,您需要学习的真正的必备技能就是数据分析。

机器学习的主要必备技能是数据分析

(请注意,下文中,我将使用“数据分析”一词作为“获取数据,清理数据,聚合数据,探索数据和可视化数据”的简写)

对于初学者(不管你是软件工程师还是来自其他领域的从业者),你不需要知道很多微积分、线性代数或其它任何大学级数学知识就可以完成这些任务。

但数据分析能力却是必不可少的,数据分析是你完成工作所需的第一个技能,这才是机器学习初学者真正需要必备的能力。初学者尤其如此,虽然在高层次上有一些数据科学家需要深入的数学技能,但是在开始的时候,当你的目的是为了构建一个能够做出准确预测的模型时,你不需要知道微积分和线性代数。

但是,如果你没有掌握数据分析的技能,那么建立模型几乎是不可能的。

即使你使用“现成”工具(如R的caret包或Python的scikit-learn库),如果你不懂探索性数据分析和数据可视化的话,你是无法工作的。为了正确应用caret包或者scikit-learn库,你需要知道如何收集、准备和探索数据,你需要对数据分析有深入了解。

数据科学家80%的工作是数据准备,探索性数据分析(EDA)和可视化

你知道吗?数据科学家们“80%的工作是数据准备”,这些准备工作包括获得数据(从数据库,电子表格,平面文件)、执行探索性数据分析、重塑数据、可视化数据。

虽然这个数字一般是关于数据分析的,但它也适用于机器学习领域:当你构建机器学习模型时,你将花费80%的时间来获取数据、探索数据、清理和分析结果(包括数据可视化)。

总结一下:如果你不了解微积分和线性代数,你仍然可以建立有用的模型,但如果你不会数据分析,那你就麻烦大了。

对于初学者来说,数据黑客能力完胜数学

在几个财富500强公司,我知道的很多最好的数据科学家和模型建造者中,大多数在微积分、线性代数或高级数学方面并不是特别擅长,但是他们在数据分析方面毫无例外都是个中高手。

举一个我朋友的例子:她用过的最好的预测模型,但数学并不是她的强项。

她有博士学位,但她的博士专业是社会心理学。她没有接受任何严谨而专业的数学训练。我和她的工作并相交多年,我相信她对微积分和线性代数的了解非常非常有限。

但是,她知道如何和数据集打交道,知道如何探索和准备数据集,知道如何让机器学习算法在实际环境中工作。

可以说,任何具有机器学习博士学位的人在听她解释机器学习背后的数学逻辑时都不会太感冒。她对k-means或支持向量机的数学知识所知有限,但这些并不影响她的工作。事实上,她在这个领域做得相当不错,薪水丰厚,因为她可以做出准确的预测。没有人会对她的数学专业素养说这说那,她保证结果,拿到薪水,如此而已。

我想说的是,我这个朋友不是个案。我知道至少几十个这样的人(上述这个只不过是比较典型的例子),这些人都在苹果这样的财富500强公司工作。这些公司都有宏大的目标并赚取了大量的商业利润,而这些人是这些优秀公司的核心骨干。

数学是重要的,但不是对入门者的

我知道很多人可能会质疑我上述的言论,甚至可能得罪一大堆我尊重和敬佩的人。所以我必须说的更清楚一些:数学很重要,特别是在某些情况下,数学是非常重要的。

首先,如果你是在学术领域中进行机器学习研究,数学很重要;

第二,在行业领域中,数学对于一小部分高级数据分析师/数据科学家也是重要的。特别是像Google和Facebook这样的公司,他们走在前沿,正在使用机器学习领域的尖端工具,这些人会在他们的工作中经常使用微积分、线性代数和更高级的数学。

但是在这篇文章中,我讨论的范围不是使用尖端工具的高级数据科学家,也不是学术领域。

我谈论的是才入门的数据科学家,这些人刚入行并试图寻找一条通向优秀数据科学家的道路。

初学者学习机器学习也是需要数学的

我澄清一下,即使是所说的初学者,也需要一些数学。

我将在另一篇博客文章中写下我的全部建议,这里我先简单透露一下:要开始学习机器学习,入门级你至少需要本科基础数学技能。你还需要了解基本统计知识,你可以从“Introduction to Statistics”这门课程学习,你需要知道一些基本概念如:平均值,标准偏差,差异等等。

您的第一个里程碑:掌握数据分析

你需要思考的数据科学家入门到底意味什么?

对于数据科学家和ML从业人员来说,数据专家比数学专家更有用,也就是说,如果你想走的更远,你可以先从怎么处理数据开始而不是学习微积分和高等数学。

因此,如果你的目标是在企业获得一份工作而不是学术研究,你的第一个里程碑就是掌握数据分析:

  • 它不是掌握如何计算;
  • 它无法通过数学问题证明或研究;
  • 数据分析就是教你如何收集、探索并准备数据;
  • 你需要掌握数据可视化和数据清洗等数据预处理技能,以便能够进行探索性数据分析。

如果你是用R,那么我建议你学习以下内容:

- ggplot2:数据可视化工具,用于基本可视化,如散点图,直方图,条形图;

- dplyr:数据预处理工具,用于数据聚合和数据整理

- 学习将ggplot和dplyr结合在一起用于探索性数据分析。

如果你在Python中工作,可以学习以下内容:

- Python编程基础

- Pandas:Python下的数据聚合和数据整理工具

- Matplotlib:数据可视化工具,pyplot可用于基本可视化,Seaborn可进行更高级的统计图形;

- 学习将Pandas和数据可视化结合在一起用于探索性数据分析。

如果你是一个机器学习初学者,你可以在不知道微积分和线性代数的情况下开始工作,但是在不懂数据分析的情况下是不行的。

如果你掌握了数据分析,你将很快开始构建可以工作的机器学习模型。

END.

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

本文分享自 PPV课数据科学社区 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档