机器学习对数学功底的要求到底有多高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习对数学功底的要求到底有多高相关的知识,希望对你有一定的参考价值。

豆瓣的话题:
研究机器学习需要什么样的数学基础?

来自: 求真 2013-07-11 13:44:22
我是小硕一枚,研究方向是机器学习。通过阅读一些机器学习的教科书,发现机器学习对于数学基础要求比较高。
我想问一下:一般研究机器学习需要怎样的数学基础?
我们大学学习的高等数学、线性代数和概率论之类的数学基础课程能够用吗?
skynet 2013-07-12 15:30:26
看方向,不过任何方向都基本上不够。缺什么补什么吧,数学是个坑,机器学习也是个坑,人不可能同时在两个坑里挣扎。
赞 (3) 回应
skynet 2013-07-12 15:30:26
看方向,不过任何方向都基本上不够。缺什么补什么吧,数学是个坑,机器学习也是个坑,人不可能同时在两个坑里挣扎。
赞 (3) 回应
求真 2013-07-12 16:07:20
看方向,不过任何方向都基本上不够。缺什么补什么吧,数学是个坑,机器学习也是个坑,人不可能同 ... skynet
嗯啊,好的。
赞 回应
frce 2014-06-09 15:39:55
说得好,我喜欢。
赞 回应

opera 2014-06-09 15:43:56
高等数学、线性代数和概率论肯定是要用到的。除了它们可能还有别的。
赞 回应

Mr. L (Live long and prosper) 2014-06-09 20:51:39
应用域呢?
赞 回应
泡泡龙 2014-07-03 17:16:37
具体点应该是微积分、概率论、线性代数、随机分布、凸优化吧
赞 回应
求真 2014-07-06 10:46:35
具体点应该是微积分、概率论、线性代数、随机分布、凸优化吧泡泡龙
谢谢!

----------------------------------------------------------------------------------------------------

知乎的话题:
如果对机器学习仅是以应用为目的的话,到底需要多少数学…,比如说微分流形,代数拓扑,泛函之类的需要懂吗?

“仅是以应用为目的”有点含糊。。乍一看题主好像想说是在公司里用,但后面又出来一大票高大上课程,看起来又好像偏学界。。前面的大大们提到的感觉更偏学界。我补充一些工业界的情况。

总的来说我偏向匿名用户的回答。如果对机器学习仅是以应用为目的的话,到底需要多少数学…,比如说微分流形,代数拓扑,泛函之类的需要懂吗? - 匿名用户的回答
在思考这个问题之前,要先搞清楚公司花钱雇你来干啥的。我的经验是,这有两种情况。一是公司原来没有一项业务,现在要把一些机器学习这个东西跑起来(从无到有)。二是在你接手的时候公司已经有一定基础了,现在要把性能调上去(从差到优)。前者完全不用任何数学,先用别人有的模块/代码把系统撸起来是王道。后者看具体问题,大多数情况不用数学。

从无到有的情况,比如我原来在facebook做place deduplication,大概就是说非死不可上面超多可以签到的地点,要判断里面有哪些是重复的地点。类似知乎上面有很多重复的问题,如何鉴别和重定向这些问题。这个问题从机器学习的角度来看并不难,有很多已有工作。但公司更关心的其实是怎么把随便一个系统在fb数十TB的数据上日起来。所以我们的绝大多数时间根本不是花在评估哪个机器学习模型更好,这个流形有什么性质,那个系统有什么下限,而是——撸hadoop用几千个核先把feature抽出来。有了feature以后后台分类器是特妈随便找的这种事我会乱说?这种情况跟数学完全没鸟关系好吗。

从有到优的情况,我也参与了这个项目的调优。基本经验是——分类器啊模型啊再复杂精巧数学性质再好没吊用,关键还是看feature。弄一个有效的feature出来精度呼呼的往上涨,各种分类器瞎JB换啊调啊基本没差别。。(当然deep learning这种模型的质变除外,但这个和不搞科研的人就没啥关系了)所以你要问数学有没有用,我说有用,根据数学才能提出有效的模型——但这特妈是学界人家十年磨一剑的人用的。放公司里用数学拱KPI分分钟被nen死。隔壁王二狗整俩新feature奖金拿得多多的,这边你要死磕泛函产品狗咬死你。。
当然在偏研究的地方比如Google X的某些部门还是有用的,但我觉得这还是偏学界。

总的来说,我的建议是,如果想去公司的话就不要纠结逼格过高的事情了。学好线性代数,统计和凸优化就出门打怪吧,攒系统经验和dirty trick才是王道。当然我也不是说就不要搞数学,只是如果你去公司的话,在学好线代统计凸优化的前提下,同样的时间花在学计算机系统的构建和系统性的思考方法上,比学习数学更划算。

编辑于 2015-04-09 35 条评论 感谢

这里有个80-20原则的应用。
只要20%的机器学习知识,其实已经可以在80%的商业应用里取得满意的效果。

但,如果公司精益求精,或者说是专注于机器学习算法的公司,可能要投入指数级别的努力来达到性能的提升。

不请自来,我本人就是从数学转到数据科学上来的,是完全以应用为目的学的机器学习。本科加PHD九年中,数学方面的课程大概学过:数学分析(微积分),线性代数,概率论,统计,应用统计,数值分析,常微分方程,偏微分方程,数值偏微分方程,运筹学,离散数学,随机过程,随机偏微分方程,抽象代数,实变函数,泛函分析,复变函数,数学建模,拓扑,微分几何,渐近分析等等

从我个人的学习过程中,觉得对机器学习的应用有帮助的数学学科有(重要性从高到低):

1, 线性代数(或叫高等代数):必需,所有的算法最后都会向量化表示,线性代数不熟的话,算法都看不懂啊

2,微积分:这个是所有高等数学的基础,不细说了

3,统计:这里包括统计理论基础,和应用统计(主要就是线性模型)。很多机器学习内容的前身就是统计啊。

3.5, 凸优化: 经 @徐文浩 补充,原因跟6相似

前三个感觉是想要学好机器学习所必需的,后面的虽然不必需,但是适当了解之后,帮助也很大:

4,概率论:基础概率论就够了,以测度为基础的高级概率论对机器学习帮助不大

5,数值分析:数值分析的一部分包括了插值,拟合,数值求解各种方程,数值积分,这些小技术虽然没有跟机器学习直接扯上关系,但是可能在你处理复杂问题时的一些小地方起到奇效。数值分析的另一大块就是数值线性代数了,包括怎么矩阵求逆了,矩阵的各种分解了,矩阵特征根奇异值什么了,这里面很多算法都会被机器学习的书法直接使用的。比如SVD就被Principal Component Analysis直接调用了啊。

6,运筹学:运筹就是做优化,说白了就是把问题表示成数学公式和限制条件,然后求最大值或最小值。所以不少机器学习里面先进的优化算法,最先都是在运筹里面出现的

暂时就想到这么多,至于题主说的泛函,微分流形,代数拓扑啥的,完全不需要了解啊。

编辑于 2015-04-28 26 条评论 感谢

我就是从数学转ML的。我就知道,肯定有人要扯很多纯数学的“基础背景”。我说一些实在的,微分几何,流形,代数拓扑这些知识,只要你去找相关的研究论文,总能找得到和Ml有交集的地方。但是,不代表你必须掌握它们。在大部分的ML研究里,还是微积分和线性代数、概率统计的功底最重要。不要太小看微积分和线性代数,很多时候做研究时要用的推导还是需要很多熟练的技巧才可以胜任。至于其他知识,可以用到时再补充。

----------------------------------------------------------------------------------------------
CSDN的TOPIC:
机器学习需要学习哪些数学知识 [问题点数:20分,结帖人hanyahui88]
收藏

关注
hanyahui88
大眼的小眼
本版等级:
结帖率:100%

楼主发表于: 2014-10-16 11:07:37
机器学习数学数据分析算法
最近公司做数据分析,但是以前都没有接触过,看了一下所有的算法,很多都是跟数学有关,看不懂很多数学符号,所以问问我应该学习什么数学 好像离散数学是必须的
更多0分享到:
相关推荐:
阿里云机器学习算法应用实践
统计机器学习入门——重抽样方法
统计机器学习入门——分类2
统计机器学习入门——线性模型选择与正则化2

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
回复次数:9

关注
OrthocenterCh...
Kenney_Qin
本版等级:

#1 得分:3回复于: 2014-10-16 13:18:23
以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
hanyahui88
大眼的小眼
本版等级:

#2 得分:0回复于: 2014-10-17 09:12:48
引用 1 楼 OrthocenterChocolate 的回复:以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。
我最近在研究均值漂移算法,里面的核函数,好多公式都看不懂 我也不知道学什么数学可以看懂这些公式。
你说的求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等 这些是什么数学中的??

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
longburulin
longburulin
本版等级:

#3 得分:2回复于: 2014-10-17 09:51:41
引用 2 楼 hanyahui88 的回复:Quote: 引用 1 楼 OrthocenterChocolate 的回复: 以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。我最近在研究均值漂移算法,里面的核函数,好多公式都看不懂 我也不知道学什么数学可以看懂这些公式。
你说的求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等 这些是什么数学中的??
数值分析里面好像除了拉格朗日对偶没有 其他好像有

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
OrthocenterCh...
Kenney_Qin
本版等级:

#4 得分:0回复于: 2014-10-19 21:38:16
引用 2 楼 hanyahui88 的回复:Quote: 引用 1 楼 OrthocenterChocolate 的回复: 以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。我最近在研究均值漂移算法,里面的核函数,好多公式都看不懂 我也不知道学什么数学可以看懂这些公式。
你说的求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等 这些是什么数学中的??
求导,求梯度,拉格朗日乘子法是高等数学里面的,拉格朗日对偶,牛顿迭代法你可以看看凸优化,其实凸优化应该包含了你想看的很多机器学习中的数学知识,只不过它们是建立在一些更为基础的数学知识上(如求导)。

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
hanyahui88
大眼的小眼
本版等级:

#5 得分:0回复于: 2014-10-21 14:40:54
引用 4 楼 OrthocenterChocolate 的回复:Quote: 引用 2 楼 hanyahui88 的回复:Quote: 引用 1 楼 OrthocenterChocolate 的回复: 以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。我最近在研究均值漂移算法,里面的核函数,好多公式都看不懂 我也不知道学什么数学可以看懂这些公式。
你说的求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等 这些是什么数学中的??求导,求梯度,拉格朗日乘子法是高等数学里面的,拉格朗日对偶,牛顿迭代法你可以看看凸优化,其实凸优化应该包含了你想看的很多机器学习中的数学知识,只不过它们是建立在一些更为基础的数学知识上(如求导)。

也就是看高等数学 和凸优化 基本就可以了???

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
OrthocenterCh...
Kenney_Qin
本版等级:

#6 得分:5回复于: 2014-10-23 14:32:40
引用 5 楼 hanyahui88 的回复:Quote: 引用 4 楼 OrthocenterChocolate 的回复:Quote: 引用 2 楼 hanyahui88 的回复:Quote: 引用 1 楼 OrthocenterChocolate 的回复: 以我平时接触到的机器学习算法来说,与其相关的的数学知识有:求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等,数学知识是基础,很多机器学习算法是建立在数学的基础上,是数值计算的比较多,和离散数学关系不是特别大,如果你要做图算法,那离散数学就很重要了。我最近在研究均值漂移算法,里面的核函数,好多公式都看不懂 我也不知道学什么数学可以看懂这些公式。
你说的求导,求梯度,拉格朗日乘子法,拉格朗日对偶,牛顿迭代法等 这些是什么数学中的??求导,求梯度,拉格朗日乘子法是高等数学里面的,拉格朗日对偶,牛顿迭代法你可以看看凸优化,其实凸优化应该包含了你想看的很多机器学习中的数学知识,只不过它们是建立在一些更为基础的数学知识上(如求导)。

也就是看高等数学 和凸优化 基本就可以了???
对,还有些矩阵运算,如果不熟悉的话再看看线性代数,建议你碰到不会的再去查,而不是事先全部看完, 不然太多了。

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
q243021856
狼痕
本版等级:

#7 得分:5回复于: 2014-10-23 14:58:16
微积分、线性代数、概率论、离散数学、统计学

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
shaowei213
Tracysw
本版等级:

#8 得分:5回复于: 2014-10-23 15:38:32
引用 7 楼 q243021856 的回复:微积分、线性代数、概率论、离散数学、统计学
专业

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

关注
hanyahui88
大眼的小眼
本版等级:

#9 得分:0回复于: 2014-10-28 11:45:36
好的 谢谢大家
参考技术A 数学学习注重理解运用,灵活的思维才是数学进步的根本,而机械的学习方式不会锻炼你的思维。数学功底应该体现在思考分析判断能力上,想要机械地学习数学,你需要掌握基础的公式以及常见的二级结论,还要有相当熟练的计算能力,一定的观察能力和对题目的理解能力。反正数学是理科,不是背背算算就能会的,要靠深入透彻的思考。 参考技术B 大体罗列一下,有疏漏欢迎拍砖:
1、数学分析,线性代数,近世代数,概率论,信息论
2、实分析,复分析,矩阵分析,矩阵计算,数值分析,数理统计
3、泛函分析,凸优化,数值优化
本人也是小白,暂时只能列出这些。。。
既然有人赞同我的观点,就顺便补充一些个人认为相对较好的书籍,希望能有所帮助,当然英语功底好的同学可以去看原版,英文不好的同学可以作为对照参考:
《数学分析新讲》张筑生、
《简明微积分》龚升、
《线性代数及其应用》刘深泉等译、
《近世代数基础》张禾瑞、
《代数》郭晋云译、
《概率论与数理统计》陈希孺、
《信息论与编码》姜丹、
《陶哲轩实分析》陶哲轩、
《简明复分析》龚升、
《矩阵分析》杨奇译、
《矩阵计算》袁亚湘译、
《数值分析》吴兆金等译、
《数理统计学教程》陈希孺、
《高等数理统计学》陈希孺、
《泛函分析》刘培德译、
《实变函数论与泛函分析》夏道行等、
《凸优化》王书宁等译、
《最优化理论与方法》袁亚湘等、
Ps:课外阅读《古今数学思想》
参考技术C 数学功底决定了上限,努力程度决定下限

以上是关于机器学习对数学功底的要求到底有多高的主要内容,如果未能解决你的问题,请参考以下文章

人工智能到底是学些啥?

自然语言处理机器学习深度学习推荐书目

MIT一牛人对数学在机器学习中的作用给的评述

数据挖掘和机器学习之间到底什么关系?

机器学习00:如何通过Python入门机器学习

机器学习理论换底公式--以e,2,10为底的对数关系转化