临沂白癜风医院 http://m.39.net/pf/a_5837446.html
作者:豆豆叶
中国科学技术大学数学系
机器学习,数据挖掘在研究生阶段大概要学些什么?能给一个梗概或者方向么?
这是一个很难回答的问题,每个人的基础不同起点也不同,需要学的东西也完全不一样。先说我的观点:不要想一下子吃成一个胖子;很多时候,想吃的越多反而什么也消化不了。
让我们先看一道面试题(非原创):一条路上有N棵树,每棵树都有两个指标,一个是位置a_i(是整数),一个是体积w_i(是整数),现在要把这些树砍下来,运到K个仓库,我该如何选择这些仓库的位置(也是整数),使得搬运的成本尽量小呢?假设理想情况下,每棵树的搬运成本为树的体积x搬运的位移^2。
如果你看完这个题目,不能条件反射的告诉我你的思路,你其实并没有真正懂什么是聚类算法(K-means)。每个机器学习算法,犹如这道题一样具有两面性,一面是算法,也就是怎么算;一面是优化目标,为什么这么算。不能区分的看待机器学习的两面性,就不能明白为什么一群号称做机器学习研究的人整天却在玩数学。
我自己是本科数学出身,本科毕业的时候,我并不知道什么是机器学习,也没有写过大型程序,更不要说去搞一个机器学习的算法和实践了。但是回头看,真是因为本科时代打下的坚实数学基础,让我毕业后学习这些相关知识变得轻车熟路。这些本科时代就应该熟练掌握的东西包括:
线性代数(线性空间,矩阵计算,张量)
数值数学(数值代数,数值分析,线性规划,二次规划,凸优化理论,常见的数值优化算法)
概率论和统计(没有这个基础,后面学概率图模型,统计计算都无从谈起)
实分析和泛函的基础(这块内容有助于提升抽线思维的能力,一些经典结论对之后一些理论的理解很有帮助,比如RKHS)
有了这个基础,我们再来看机器学习都有哪些东西,其实真心不多。
最简单的当然是从分类器(classification)谈起了。总结一下,学习这些东西要先知道哪些数学内容呢?
NaiveBayes:真的只需要懂一点概率论就行了。
LinearDiscriminantAnalysis:这个你只需要知道什么是多变量Gaussian分布。
LogisticRegression:如果知道线性回归和广义线性回归,LR也不是什么特别的东西。如果知道最大熵原理,并能从它推导出LR那说明你对LR的理解又更深入了。
LinearSVM:这个稍微复杂一点,因为问题的formulation需要先理解max-margin原理。而具体的算法实际上就只是经典的二次规划和凸优化内容。
KernelSVM:要真正理解这个或许需要先明白什么是RKHS。然后其他算法部分只是仿照LinearSVM的简单推广。RKHS相关内容可以参照