技能简介

<>1. Computer Science Fundamentals and Programming

计算机科学基础和编程

对机器学习工程师而言,计算机科学基础的重要性包括:

1、数据结构(数据堆栈、队列、多位数组、树形以及图像等等)、

2、算法(搜索、分类、优化、动态编程等)、

3、计算性与复杂性(P对NP、NP完全问题、大O符号以及近似算法等)、

4、计算机架构(存储、缓存、带宽、死锁和分布式处理等等)。 
  当你在编程的时候必须能够对以上提到的这些基础知识进行应用、执行、修改或者处理。课后练习、编码竞赛还有黑客马拉松比赛都是你不可或缺的磨练技能的绝佳途径。 
  

<>2. Probability and Statistics

概率论和数理统计

1、概率的形式表征(条件概率、贝叶斯法则、可能性、独立性等)

2、从其中衍生出的技术(贝叶斯网、马尔科夫决策过程、隐藏式马可夫模型等)是机器学习算法的核心,这些理论可以用来处理现实世界中存在的不确定性问题。

3、统计学,这个学科提供了很多种衡量指标(平均值、中间值、方差等)、

4、分布(均匀分布、正态分布、二项式分布、泊松分布等)

5、分析方法(ANOVA、假设实验等),

这些理论对于观测数据模型的建立和验证非常必要。很多机器学习算法的统计建模程序都是可以扩展的。

<>3. Data Modeling and Evaluation

数据建模及评估

数据建模就是对一个给定的数据库的基本结构进行评估的过程,目的就是发现其中所蕴含的

1、有用模式(相互关系,聚合关系、特征矢量等)

2、预测以前案例(分类,回归、异常检测等)的特征。

3、评估过程的关键就是不断地对所给模型的优良性能进行评价。

4、根据手中的任务,你需要选取一种恰当的精准/误差衡量指标(比如日志分类的损失、线性回归的误差平方和等等)

5、求值策略(培训测试、连续Vs. 随机交叉验证等)。


通过对算法的反复学习,我们可以发现其中会存在很多误差,而我们可以根据这些误差对模型(比如神经网络的反相传播算法)进行细微的调整,因此即使你想能够运用最基本的标准算法,也需要你对这些测量指标有所了解。 
  

<>4. Applying Machine Learning Algorithms and Libraries

应用机器学习算法和库

尽管通过程式库/软件包/API

1、框架:(比如scikit-learn,Theano, Spark MLlib, H2O, TensorFlow等)

可以广泛地实现机器学习算法的标准化执行,但是算法的应用还包括

2、选取合适的模型

(决策、树形结构、最近邻点、神经网络、支持向量机器、多模型集成等)、

3、适用于数据的学习程序

(线性回归、梯度下降法、基因遗传算法、袋翻法、模型特定性方法等),

4、同时还需要能够了解超参数对学习产生影响的方式。

5、需要注意不同方式之间存在的优势和劣势,

6、以及那些可能会让你受牵绊的大量陷阱

(偏差和方差、高拟合度与低拟合度、数据缺失、数据丢失等)。


对于数据科学和机器学习所带来的这些方面的挑战,大家可以去Kaggle网站获取很多学习参考,你可发现不同的问题当中存在的细微差别,从而可以让你更好的掌握机器学习的算法。

<>5. Software Engineering and System Design

软件工程和系统设计

在每天工作结束的时候,机器学习工程师通常产生的成果或者应交付的产品就是一种软件。

1、这种软件其实也是一种小型插件,它可以适用于相对更大型的产品或者服务的生态系统。

2、你需要很好地掌握如何才能让这些彼此不同的小插件协同工作,并与彼此进行流畅的沟通(使用库函数调用、数据接口、数据库查询等)的方法,

3、为了让其他的插件可以依附你的插件进行很好的工作,你也得需要为你的差价建立合适的接口。

4、精心设计的系统可以避免以后可能出现的瓶颈问题,并让你的算法系统满足数据量激增时候的扩展性能。

软件工程的最佳的实践经验

(需求分析、系统设计、模块化、版本控制、测试以及归档等)

5、对于产能、协作、质量和可维护性而言是不可获取的无价之宝。