与线性代数相比,这门课程更偏重数值计算。其讨论的奇异值分解, Cholesky 分解, QR 分解等矩阵分解方法一般会用在主算法的子问题求解中,因此是决定程序的运行速度的关键因素之一。当然这些分解算法现今都有一些现成的软件包可以调用,但是在特定的场合,我们仍然需要对问题结构进行具体分析,提高分解算法的运行效率。
最优性条件(大家比较熟知的是KKT条件),对偶理论。对偶理论使得我们能从另一个角度来描述原问题,从而设计一些新的算法如对偶算法,原始对偶算法 (primal-dual algorithm)等。前一段时间很火的交替方向乘子法(alternating direction method of multiplier)便是原始对偶算法的典型代表。另外就是凸优化问题的所特有的性质需要清楚,比如:局部最优等价于全局最优,强对偶定理成立,最优性条件变成了充分必要条件。
回复 ( 10 )
Andrew Ng的课算是有良心了。 简单版去coursera上看,每周会有optional的section,就是补基础知识。
同样内容广度深度更野一点搜CS229 Stanford。这是coursera那门课的真正形态。
网站里有个链接叫handouts。section notes里面都是周五TA section的东西。这门课每周五会有一个TA带着大家补基础知识的section。 基础知识和目标知识不要分开来看,看到问题了,再去补,不然干看基础知识没有实际应用的理解效果很不好。想想高中数学和后来的高数,哪些不是好东西,但不配合应用去学没什么效果。
这门课相当成熟,每堂课都有完全拿你当SB一样详细的note pdf。强烈推荐。
不建议系统的看数学书,如果你上过数学课的话。看书太费时间了,而且还是那句话,不是learn by doing,看十成记五成,理解也就三成吧。
取决于你想学的程度,只是想混口饭吃没有太多必要花很多时间补别的东西,不用看懂证明,你知道的大概,能用软件做出个结果就够了。
想认真学的话:
1. 数学方面:微积分、矩阵论
矩阵这一块,了解的越多对你推倒计算方面能力的提升提高非常多。当然,只想看懂不要求证明的话,本科的线性代数够用了(我指的是真的好好学线性代数…)
2. 凸优化
这一块的重要性非常显然了,比如你连牛顿法、梯度下降法、一维搜索等基本的凸优化都不了解 的话会非常吃力。但短期来说的话,基本上Boyd的convex optimization懂前三章就够用了。
3.概率、统计
对基本的期望啊mean啊之类的计算,极大似然,bayes,多元正太等很多相关方面的统计一定要比较熟悉,否则对涉及统计和对数据的直觉上会差很多。
4.泛函
我本科没好好学泛函,到学到一些ML的方法比如kernel相关的方法的时候就凸显出来对泛函不熟,对函数空间理解不够的话会比较吃力。但重要性上比如前面几个方面。
但我整体想说的是,对于大多数只学过微积分线性代数+基本统计的人不大会有时间和精力说把上面这些一门一门学了才开始学ML,大多数时候都是慢慢去补的。比如上面有人提到Andrew Ng的coursera课程上会有一些hangouts。这是一个很好的比较快速掌握急切所需的东西的方面。毕竟上面每一门课都需要花很多时间去学。但是,如果你能真的好好学了之后,再回过头来把ML再学一遍,你收获一定会多的多!
–2015-10-13 再更新–
哦对了,正文里面提到了三种矩阵变换,下面给大家玩一个趣味题目(✿◡‿◡)
以下两个图分别对应了“三种矩阵变换”里的哪种矩阵变换,然后,你可以猜猜这两个变换矩阵具体值是多少,提示:很特殊的矩阵哦~~~~
–2015-10-13 更新–
感谢那么多童鞋的点赞,第一次在知乎上拿到100+的赞,O(∩_∩)O~~
有加我微信的童鞋有好多问我要机器学习资料的,我就在这里统一回复一下:
书籍的话大家自行百度“书名+pdf+微盘”应该都有,当年我就是这么下的
机器学习:
斯坦福大学公开课 :机器学习课程,这些特殊的方向x就是特征向量,而就是收缩拉伸的量,描述了这些特殊的方向上的变换后,其实我们很容易画出这种矩阵变换的几何图解。
1.3 A可以是投影矩阵,把x投影到某个直线上,或者某个subspace上,线性回归模型有最小二乘解释,最小二乘可以由极大似然函数推得,当然还能用投影矩阵解释。
2 理解(对称)矩阵的特征向量特征值分解
2.1 对称矩阵特征分解是理解多维高斯分布的基础
要理解多维高斯分布需要四个知识:等值面,对称矩阵特征分解,正交基变换,多维椭圆方程
2.2 对称矩阵特征分解
对称矩阵特征分解可以直截了当的导出矩阵对角化的公式,而对协方差矩阵的对角化又是PCA的核心数学知识
理解PCA的数学基础:协方差矩阵对角化,基变换矩阵。
3 一些线性代数的嗅觉素养
其实很多感觉是逐步形成的,
比如n维向量x乘以x的转置就是一个对称矩阵等…
4 本质
& 洞悉本质
下面抛开机器学习,回归到线性代数本身,
我现在回顾,还是可以清晰的感觉到,理解&掌握线性代数的几个不同的阶段(或者说坎在哪里),我把它们总结成几个小问题,大家也可以自测一下,如果你扪心自问能够很好的回答其中的某个问题,那么相当于你在线性代数的某一块知识领域里已经相对纯熟&洞悉到非常基础但是最核心的本质思想。
这种东西大学教材真的给不了,也不是你做几张线性代数试卷,考个100分能够比拟的,本质的东西需要思考,体会,顿悟,了然一笑,一切尽在不言中…话也说回来我痴迷机器学习原理,痴迷数学,说到底还是想要多体验这种感觉,会上瘾的…
问题一,你有感觉到某一类矩阵和矩阵相乘,其实就是解方程时的消元吗?
问题二,
你有发现解方程时对矩阵的操作,与消元法解方程的对应关系吗?
你有发现行列式的定义和性质,与消元法解方程的对应关系吗?
你有发现求逆矩阵与消元法解方程的对应关系吗?而奇异矩阵与这个消元法解方程又有什么关系呢?
你有发现非常自然的消元法解方程,是连结矩阵、行列式、逆矩阵这些概念线索和纽带吗?这么普普通通的消元法解方程是多少线性代数基础概念的核心啊!所有的东西都不是无中生有的,
线性代数的设定真的不是像国内那些垃圾教材里面描述的好像一只孙猴子一样,像直接从石头缝里蹦出来的啊!
问题三,
前面已经提到了,三种“理解矩阵变换”,你理解了吗?
问题四,
为什么行秩和列秩是一样的?涉及四个基本子空间(列空间,零空间,行空间,左零空间),这个东西是我最近才感悟到的。
线性代数部分先总结到这里,后面还有概率统计和微积分部分,就简略说一下,以后有时间再补充。
概率统计:
(1)
极大似然思想
(2)
贝叶斯模型
(3)
隐变量混合概率模型,EM思想
基础的典型分布是逃不过的,尤其高斯分布。
微积分:
主要体现在
极值问题 与 (条件)最优化问题
偏导数,梯度这两个概念必须深入人心
还有就是凸优化和条件最优化问题,这个是理解SVM,或者线性回归等等模型正则化的基础。。。
我的微信号mubing_s,我平日里如果某一块知识点(面)想清楚了,一遍会用白纸黑字写下来记录备忘,有机器学习 & 数学方面的,有兴趣想看的、想探讨同学,都欢迎加我哦,:-D
先总结到这里了,欢迎大家拍砖!以后有时间详细补充。
答主们已经列出了许多相关课程及其对应的教科书,但是要把一门或几门课程都系统地学习一遍无疑会耗费大量的时间和精力,同时效率也不见得高。另外这些课程中所教授的内容有相当一部分与机器学习关系不大。我自己在学校讲授一些算法课程,团队里也有同事专门从事机器学习算法和求解器的开发。在这里从优化和算法的角度出发,择出几个比较重要的知识点,供大家参考。
1线性代数
矩阵的各种运算要熟练(如乘积,内积,迹等),半正定矩阵的性质与各种判定条件(与凸函数的关系)。
2微积分
多元函数的求导(梯度,Hessian矩阵),泰勒展开,中值定理等。从我自己的教学经历来看,很多同学对多元微积分似乎有着天生的抗拒心理。我自己就见过不少已经学过微积分的同学,不会对由矩阵二次型表达的多元二次函数进行求导。其实,通过总结与一元微积分的对应关系, 完全可以做到轻松掌握多元微积分的诸多结果。
3数值线性代数
与线性代数相比,这门课程更偏重数值计算。其讨论的奇异值分解, Cholesky 分解, QR 分解等矩阵分解方法一般会用在主算法的子问题求解中,因此是决定程序的运行速度的关键因素之一。当然这些分解算法现今都有一些现成的软件包可以调用,但是在特定的场合,我们仍然需要对问题结构进行具体分析,提高分解算法的运行效率。
4非线性规划
主要是各种优化算法,大致可以分为一阶算法和二阶算法两类:一阶算法中只用到了函数的一阶导数(梯度),典型代表是梯度下降法;二阶算法还用到了函数的二阶导数(Hessian矩阵)信息,典型代表是牛顿法。世上无完事,其实每种算法都有自己的好处和弊端。例如一阶算法的优势是子问题求解的代价小,但是收效速度慢并且得到解的精度不高;另一方面,二阶算法的收敛速度很快,但是子问题的求解代价较高(一般会涉及到矩阵求逆)。为了克服上述缺点,学者们又提出了梯度法和牛顿法的诸多变种,例如:随机(stochastic)梯度法,共轭(conjugate)梯度法,邻近(proximal)梯度法,拟牛顿法等。在许多机器学习算法包或求解器中,能经常看到他们的身影。
5凸分析
最优性条件(大家比较熟知的是KKT条件),对偶理论。对偶理论使得我们能从另一个角度来描述原问题,从而设计一些新的算法如对偶算法,原始对偶算法 (primal-dual algorithm)等。前一段时间很火的交替方向乘子法(alternating direction method of multiplier)便是原始对偶算法的典型代表。另外就是凸优化问题的所特有的性质需要清楚,比如:局部最优等价于全局最优,强对偶定理成立,最优性条件变成了充分必要条件。
6 其他一些进阶知识
现在做研究的一个趋势就是做交叉,有些学者运用其他学科的工具对机器学习算法进行了研究,往往会有新的发现。因此,若要从事算法研究的话,其他数学知识当然是多多益善。比如根据算子理论可以推导出一大堆算子分裂方法,而这些方法与交替方向乘子法又有很紧密的联系;又比如机器学习大神Michael Jordan的group最近的研究工作就是用微分方程将Nesterov加速法,三次正则化方法等算法统一起来。
如果真心希望学好机器学习,那么数学自然是非常有必要的,这边我提供一个个非常好的机器学习路线的培养方案,JustFollowUs/Machine-Learning,可以看看您还缺什么数学知识,这个github上面的内容基本是机器学习必备的,所以建议一步一步的全都学完,因为基本每个课程都提供了大家公认的好视频,能帮助更好的学习。
当然如果仅仅只是希望找个工作过日子,这个上面的资料可能不太适合您,请忽略这条回答。
互联网时代下怎样自学成data scientist
更多资源:
—————–割线——————
再推荐一下两本书
Introduction to statistical learning
和
Elements of statistical learning
都是斯坦福出的书,前者很基础,后者是前者的高阶版。还都有免费下载。
现在正在追这本
Mining of Massive Datasets
又是斯坦福的,感觉难度中等偏上。
矩阵论、概率论、凸优化、微积分、梯度
进入特定技能之前,要先解决多一个的概念。作为一个机器学习的工程师就必须了解整个生态系统,你的设计和 语言和库的机器学习。
要跳到这个作业中有一个需要具备以下技能:
1.计算机科学基础知识和编程
2.概率统计
3.数据模拟和评价
4.将机器学习算法与程序库
5.软件工程和系统设计
1.英语
2.数学
线性代数 linear algebra and its applications (看过lay写的还不错据说gilbert写的更好,国内蓝以中 高等代数简明教程 也不错,看上册就够了,下册是抽代,蓝以中这本对于机器学习来讲很不错,提了行列式求导和正定二次型,线性代数的书一般不讲这块)
高等数学 数学分析新讲 张筑生 (第三册看看级数,国外的据说托马斯微积分不错 没看过。矩阵向量求导是著名的没书讲领域,貌似很多人在这里上火,一篇深度美文 机器学习中的矩阵,向量求导)
统计 概率论和数理统计 陈希孺 (至少看完前四章)
多元统计 applied multivariate statiatical analysis richard johnson (至少看完前四章 pca和factor analysis也应该看一看,其实pca和fa在机器学习中本身就是无监督学习的算法)
最优化 convex optimization stephen boyd (至少看1-5 9 章,看完第五章的时候看一下pattern recognization and machine learning这本书附录的拉格朗日算子,这一章是svm的基础)
珍爱生命,远离rudin
我看完这些看的prml觉得没什么问题。手头还有周志华和李航的书,建议当做补充材料,不太适合建立知识架构。
数学进阶:(入门用不上的)
蒙特卡洛 introducing monte carlo methods with r Christian Robert(prml里面11章就是讲抽样方法的,不妨先看下)
拓扑 topology without tears sidney a. morris
泛函 introductory functional analysis with applications kreyszig
流形还有李群李代数没看过
3.机器学习
pattern recognization and machine learning Bishop
the elements of statistical learning hastie(据说挺难的 没看过)
machine learning yearning 吴恩达(面向工程的小册子,没看过,不过吴恩达写的,不会有问题)
4.深度学习
deep learning lan goodfellow(面向工程的,有难度,全搞懂估计要对着里面给的论文看)
neural networks and deep learning (太简单)
5.编程python(python核心编程)主 c++(c++ primer 5 lippman)为辅
python那几个库 底层的scipy numpy matplotlib sympy(python科学计算 张若愚),机器学习的scikit-learn(scikit-learn cookbook),深度学习的tensorflow(tensorflow实战 黄文坚),数据库的(expert oracle database architecture thomas),图像识别还要用图像处理(数字图像处理 gonzalez)的那些东西opencv cuda什么的
建了一个小群,大家互相帮助嘛 看书看不懂了一起研究,有好资料一起分享 qq群436142301
泛函分析,凸优化。