机器学习应该准备哪些数学预备知识雷锋网

多维立体精准白癜风治疗方案 http://m.39.net/disease/a_6201580.html

雷锋网按:本文原作者RobinShen,本文整理自作者在知乎《机器学习应该准备哪些数学预备知识?》问题下的回答。雷锋网已获得转载授权。

问题详情:

数据分析师,工作中经常使用机器学习模型,但是以调库为主。自己一直也在研究算法,也裸写过一些经典的算法。最近在看PRML这类书籍,感觉有点吃劲,主要是公式推导看不懂,很多数学符号不知其意。也特地学过线性代数、微积分等,但是然并卵,还是看不懂大段的公式以及那些神奇的矩阵计算~

机器学习新手,想前来问下,有没有哪些数学知识是可以弥补这一类缺陷的?能否具体的说一些知识点或者相关的文章和书籍?

回答:

年之后,随着深度学习的浪潮卷来,大家逐渐认可了神经网络/深度学习这个东西,都知道它在很多应用场景下面表现得很好。但是,它常常被人诟病的一点就是,就算它表现很好,却没有一个很好的理论解释。

相比之下,很多算法虽然实际表现一般,但是在理论解释这一方面就远胜神经网络了。典型的例子么,自然就是我们耳熟能详的线性回归算法啦。所谓的线性回归,简单地说,就是尝试用一条直线来拟合世间万物。虽然听起来不太靠谱,实际上效果也一般,但是这并不妨碍研究人员在过去的几十年间,怀着满腔热情,发了大量的理论论文研究这个基本问题(不好意思,我也发了两篇)。这就像一个PhD笑话里面说的那样,Theoryiswhenoneknowseverythingbutnothingworks.Practiceiswheneverythingworksbutnobodyknowswhy.

真说起来嘛,倒也不是大家觉得线性回归多么有用,我觉得主要还是直线比较好分析,而神经网络比较难,所以理论工作就少一些。这个现象叫做Streetlighteffect,如下图。

笼统地说,原理和基础都在数学这边,当然有很多偏应用和软件使用的技术,例如“深度学习调参”等,这些报个培训速成班就能学会的技术含量不那么高的东西,不在讨论范围内。

这里要讨论的,是如何系统的学习,然后自己能编出这机器学习或深度学习的程序或软件--我想,这才能称为一个合格的机器学习、数据科学家。

入门基础

1.微积分(求导,极限,极值)和线性代数(矩阵表示、矩阵运算、特征根、特征向量)是基础中的基础,某篇图像分割1w+引用的神文核心思想便就求解构造矩阵的特征向量;

2.数据处理当然需要编程了,因此C/C++/Python任选一门(推荐Python,因为目前很多库和Library都是用python封装),数据结构可以学学,让你编程更顺手更高效,但是编程不是数据处理的核心。

当然了,楼主所在的图像处理界,熟练使用matlab或者Python调用opencv库是必要条件,但是again他们只是工具,业余时间自学,多练练就没问题。有同学问用R行不行,补充一点,用什么编程语言很大部分取决于你的核心算法会调用什么已有的库函数,比如楼主的科研里面核心算法往往是MIP(混合整数规划)问题需要调用Cplex或Gurobi库函数,因此C/C++/Python/Java这些和Cplex接口良好的语言都可以拿来用,这时候R就别想了。(更新:最新Gurobi版本支持R)

另外虽然图像处理界一些open-source的code都用C++写的,但是鉴于使用方便都会提供Python的接口,因此需要用到这些code的话,用Python调用比较方便;但是,如果是高阶骨灰级玩家,需要修改甚至自己写源代码,那么还是推荐C/C++,因为他们的速度最快。

3.算法

通常高校都会有算法类的课程,会概述各类算法的基础和应用,其中包括:精确算法、近似算法、启发式算法、演化算法、递归算法、贪婪算法等待,还有各类优化算法。

算法非常核心,想必大家都听说过算法工程师这个职位。

关于数学模型和算法的区别、联系,参见:

整数规划精确算法/近似算法/(元)启发算法/神经网络方反向传播等算法的区别与关联

中级教程

1.概率论+统计(很多数据分析建模基于统计模型)、统计推断、随机过程等

2.线性规划+凸优化(或者只学一门叫numericaloptimization,统计、机器学习到最后就是求解一个优化问题)、非线性规划等

3.数值计算、数值线代等

当年我是在数学系学的这门课,主要是偏微分方程的数值解。

但我觉得其开篇讲的数值计算的一些numericalissue更为重要,会颠覆一个数学系出身小朋友的三观。(原来理论和现实差距可以这么大!)

Conditionalnumber,ill-conditionedproblem,会让你以后的编程多留个心眼。

恭喜你,到这里,你就可以无压力地学习MachineLearning这门课了(其实机器学习,通篇都是在讲用一些统计和优化来做clustering和classification这俩个人工智能最常见的应用)。并且你就会发现,ML课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。

到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典案例的算法了,比如regression,clustering,outlierdetection。

关于优化类课程的综述,欢迎


转载请注明:http://www.aierlanlan.com/rzfs/2659.html