1 从 Python 基础开始:
如果有个编程语言是用于 AI/ML 和数据科学的,那一定是 Python。对于身处计算机科学领域,已经从事一段时间编程工作的人来说,Python 是很容易上手的。对于研究领域或商业分析领域的从业人员来说,可能是个挑战。所有的数据操作、使用和建模都要用到 Python。Python 的使用环境应该是 Jupyter Notebook。Google Colaboratory 是它的一个新替代品。为了更好地分配和管理项目,推荐使用 Anaconda。
用于基础 Python 学习的资源有:
Python 入门: http://t.cn/RpKiHPm
谷歌的 Python 课程: https://developers.google.com/edu/python/
Codecademy 的 Python 课程: http://t.cn/RL9iGsf
统计是数学的一个分支,涉及数据的收集、分析、解析、呈现和组织。
描述统计学(Descriptive Statistics)
描述统计学是对理解可能从数据产生的模式的研究。它是对数据进行总结并用有意义的方式进行解读的一种方式。它包含数据集的重要属性,比如:平均数、模、中位数,以及偏差或分布范围的衡量。这些属性有助于指导我们了解模型评估过程中收敛的质量。
推论统计学(Inferential Statistics)
有时候,要使用整个数据集是不可行的。这时就需要进行取样。取样在推论统计学中非常重要,它是把数据分解用于 AI 模型的训练、验证和测试的基础。抽样估计和假设检验是推论统计学的两个主要方面。
学习统计学的资源有这些:
推论统计学入门:https://cn.udacity.com/course/intro-to-inferential-statistics--ud201
油管上的视频系列: http://dwz.cn/7Nbjz8
Python 中的统计:http://www.statsmodels.org/stable/index.html
3 使用 Pandas 和其他库
Pandas 是一个 Python 数据分析库。该库有可以使用并处理数据的所有方法。在第 2 步中提到的统计学知识基础之上,它可以帮你把数据分解成样本。NumPy 可以作为 Python 数据科学生态系统的基础,也是一个 Python 软件包。Scipy 是另一个 Python 库,用于不同数据的处理。
学习 Pandas 的资源有:
Kaggle 数据科学学习: https://www.kaggle.com/thele0nx/learning-pandas-numpy-matplotlib-and-scipy
学习 Pandas: http://dwz.cn/7NblO0
在 Python.org 上学习: https://www.learnpython.org/en/Pandas_Basics
4 了解数据呈现和可视化(用数据讲故事、可视化和数据呈现)
作为这个领域的一部分,你也需要向业务 / 产品团队展示你的项目、事实、想法或推论。数据可以对下一步要构建什么给出指导,也可以对什么可行、什么不可行给出指导。但是,如果只是看看图表,不是每个人都能理解。正确的数据需要用合适的方式呈现,以便做决策的人使用。在面试问题中关于某些产品特征有一些具体的假设性问题。这些问题是用来了解候选人会做什么假设,并且考察候选人是否能够轻松地向团队做出解释。它是一项非常重要但又常常被忽视的技能。这项技能没法教,但必须得学会。
参考资源如下:
Stichfix 的算法之旅 :
http://algorithms-tour.stitchfix.com/
接下来的步骤将更深入 AI 世界,需要更多的努力和深入的学习。需要指出的是,接来下的几个步骤应该根据公司具体的垂直度和数据科学栈进行准备。
4 概率 —— 回归模型
概率是一个事件会发生的可能性。像有人会在网上购物、点击链接或使用功能的可能性。所有这些 AI 可以解决的问题,总是基于某种概率的。它形成了构建使用数据的算法所需的逻辑基础。
这个领域的很大一部分是准备适合数据的不同模型或从数据中推论出模型来。线性回归、逻辑回归、梯度下降是其中的一些模型。在大多数计算机科学 / 数学基础课程上会教授这些模型。这些是非常重要的,因为模型的选择有助于预测数据会流向哪里或接下来会发生什么。
需要重点阅读的资料:
深度架构梯度训练的实用建议:https://arxiv.org/abs/1206.5533
在线统计学书籍(概率部分): http://onlinestatbook.com/2/probability/probability.html
回归模型速览: http://www.statsoft.com/Textbook/Multiple-Regression
5 机器学习基础
机器学习的应用广泛,涵盖的范围从预测用户行为一直到自动驾驶汽车。廉价的计算能力和便宜的数据存储相结合,从而形成了这个领域的热潮。就它本身来说,是一个广阔的领域,需要每个人的兴趣爱好和能力的投入。基础知识应该包括谷歌的 Tensorflow、Scikit learn,这些是专门为 AI/ML 相关问题设计的、基于 Python 的 API。
准备工作中要重点阅读的资料:
机器学习算法(重要算法列表):http://t.cn/RmYcv6F
Backdrop(机器学习中的 Backdrop 技术):http://t.cn/RI6Qe7t
TensorFlow 教程: https://www.tensorflow.org/tutorials/
6 高级机器学习
高级机器学习包括各种处理复杂数据问题的算法和技术。时间序列数据如果用于传统的机器学习模型会很复杂。因此,LSTM,也即长短期记忆网络(Long Short Term Memory 网络)被用来解决这个问题。
准备工作中要重点阅读的资料:
LSTM(了解 LSTM 最简单的方式):http://colah.github.io/posts/2015-08-Understanding-LSTMs/
时间序列的 Kaggle 实例: http://t.cn/RmYccKy
高级机器学习课程(University of Brussels Presentation): http://www.ulb.ac.be/di/map/gbonte/ftp/time_ser.pdf
7 真实世界 / 非结构化数据处理
谷歌在语音识别上的深度学习成就是众所周知的。他们已经利用循环神经网络(Recurrent Neural Networks,简称 RNNs)来实现这一目标。这个网络没有足够的信息进行处理,因为数据是非结构化的。因此,我们需要把跟字符或数据序列有关的信息提供给网络。这种 RNNs 适用于语音识别。这也是一个广泛的研究领域,宽度和深度取决于个人和要去面试的公司。
准备工作中要重点阅读的资料:
使用 RNNs 的实用指南: http://t.cn/RmYcXji
了解 Back Propagation 技术: https://www.youtube.com/watch?v=59Hbtz7XgjM
用于 AI/ML/DS 研究的数据集: http://t.cn/R5vmy4K
一旦你来到这一步,上面的链接就可以供你使用数据,并熟悉数据的规模大小和种类,这些都是数据科学家要做的工作。动手实际操练一下永远是有用的。
8 深度学习 —— 神经网络
深度学习在很多方面跟机器学习重合。它包括 GANs(Generative Adversarial Networks,生成对抗网络)和 Semi Supervised learning,也即半监督学习等概念。CNNs(convolutional neural networks,卷积神经网络)用于图像识别和分类。这个领域在当前科技生态系统具有广泛的影响。根据公司自身的情况,它的使用可能因从视频生成到图像分类而异。因此,应该根据公司的情况,考虑到可能出现的问题。
要重点阅读的资料:
卷积神经网络: CS-231(Stanford 大学课堂笔记)http://cs231n.github.io/
深度学习(书本): http://neuralnetworksanddeeplearning.com/
高级深度学习(书本): https://www.deeplearningbook.org/
到这里,AI/ML/DS 的面试准备工作就结束了。这个准备工作根据个人的背景有所不同。研究人员的准备时间跟数据工程师和一般计算机科学工程师的不同。准备工作大约要花 20 到 22 天,根据个人现有的知识、时间限制和公司的具体要求会有些变化。