想入门机器学习、数据挖掘,我该怎么做?

想入门机器学习、数据挖掘,我该怎么做?我自己是本科数学出身,本科毕业的时候,我并不知道什么是机器学习,也没有写过大型程序,更不要说去搞一个机器学习的算法和实践了。。。。

这是一个很难回答的问题,每个人的基础不同起点也不同,需要学的东西也完全不一样。先说我的观点:不要想一下子吃成一个胖子;很多时候,想吃的越多反而什么也消化不了。

让我们先看一道面试题(非原创):一条路上有N棵树,每棵树都有两个指标,一个是位置a_i(是整数),一个是体积w_i(是整数),现在要把这些树砍下来,运到K个仓库,我该如何选择这些仓库的位置(也是整数),使得搬运的成本尽量小呢?假设理想情况下,每棵树的搬运成本为树的体积 x 搬运的位移^2。

如果你看完这个题目,不能条件反射的告诉我你的思路,你其实并没有真正懂什么是聚类算法(K-means)。每个机器学习算法,犹如这道题一样具有两面性,一面是算法,也就是怎么算;一面是优化目标,为什么这么算。不能区分的看待机器学习的两面性,就不能明白为什么一群号称做机器学习研究的人整天却在玩数学。

我自己是本科数学出身,本科毕业的时候,我并不知道什么是机器学习,也没有写过大型程序,更不要说去搞一个机器学习的算法和实践了。但是回头看,真是因为本科时代打下的坚实数学基础,让我毕业后学习这些相关知识变得轻车熟路。这些本科时代就应该熟练掌握的东西包括:

  • 线性代数(线性空间,矩阵计算,张量)
  • 数值数学(数值代数,数值分析,线性规划,二次规划,凸优化理论,常见的数值优化算法)
  • 概率论和统计(没有这个基础,后面学概率图模型,统计计算都无从谈起)
  • 实分析和泛函的基础(这块内容有助于提升抽线思维的能力,一些经典结论对之后一些理论的理解很有帮助,比如RKHS)

有了这个基础,我们再来看机器学习都有哪些东西,其实真心不多,看我用一个知乎回答就告诉你,最简单的当然是从分类器(classification)谈起了。总结一下,学习这些东西要先知道哪些数学内容呢?

  • Naive Bayes:真的只需要懂一点概率论就行了。
  • Linear Discriminant Analysis:这个你只需要知道什么是多变量Gaussian分布。
  • Logistic Regression:如果知道线性回归和广义线性回归,LR也不是什么特别的东西。如果知道最大熵原理,并能从它推导出LR那说明你对LR的理解又更深入了。
  • Linear SVM:这个稍微复杂一点,因为问题的formulation需要先理解max-margin原理。而具体的算法实际上就只是经典的二次规划和凸优化内容。
  • Kernel SVM:要真正理解这个或许需要先明白什么是RKHS。然后其他算法部分只是仿照Linear SVM的简单推广。RKHS相关内容可以参照umiacs.umd.edu/~hal/doc
  • Adaboost:这个东西如果只需要知道算法过程,是很简单的东西。但是如果你能明白为什么这么做,在什么假设下这么做会收敛到最优解,那你的理解也非常不错了。
  • Decision Tree:有两个需要了解CART 和 c4.5。这个很简单,没什么好说的,但是你能不能高效的实现它们呢?
  • Neural network:这个是我见过最傻的模型,你要知道怎么做优化,乃至怎么做随机优化,结果看天吃饭。
  • 再来看一些非监督模型,比如经典的有
  • 数据处理与可视化:PCA,LDA,MDS,以及其他“高大上”但不一定work的manifold learning算法
  • 聚类算法,以及如何评价聚类结果
  • 稀疏编码:如何把一个带LASSO的问题转化成线性约束?有哪些别的更快的方法求解LASSO。

以上这些东西,算是入门性质的。本科毕业后大概一年左右,这些东西我就基本熟悉了。要学习这些东西,看一些教材自然是好的,但是书里废话比较多呢,而且一本书的作者知道的东西毕竟有限,我都是倾向直接从维基出发找资料看的。说实话,现在很少会自己去实现这些算法了,这些经典算法都有现成的开源工具。事实上要写一个高效的Linear SVM也不是很容易的事情。

我主要讲讲学完这些,应该怎么学更高级的内容,当然还是结合我自己的经历。授人以鱼不如授人以渔,要学习前沿的内容就要掌握基础的工具。书分为两种,一种书看完了就是看完了,你学到了一堆技能,但却不能用这些技能产生新的知识,面对问题也不能因地制宜,如果是这样学估计只能用来应付找工作面试吧;另一种书看完了才是学习新东西的开始,你学到了如何读懂别人的论文,如何开发新的知识,如何根据情况选择和调整算法。

概率图模型(Probabilistic graphical model):我是在Coursera上学习概率图模型这门课的,讲得真的非常好,正打算过二周目。学完这个课,掌握了图模型的设计,推断,和采样方法之后,就可以开始学习两个核心的机器学习模型,一个是Latent Dirichlet Allocation(LDA),常用于文本处理;一个是Probabilistic Matrix Factorization(PMF),常用于推荐系统。

有个有趣的事情,某年Siggraph上有一篇文章做的是自动生成美丽的图案上色,这篇文章简直是我的最爱啊,作者是个华裔姐姐长得也很萌 >_< graphics.stanford.edu/~

其实是为了看懂她的工作,我才去学的这门课呢。

这类图模型都在研究两个基本的问题:如何采样;如何inference隐含变量,是用EM、MCMC、还是Variational Bayes,从而用来估算参数。为了搞清楚这些,学习下面这门课就非常必要了。

统计计算(Statistical computing):这个课系统的介绍了数值积分方法,Monte Carlo方法(importance sampling, MCMC,Sequential/Particle MCMC,bootstrap),EM/MM。学完这门课,你能对这个领域的工具有个全局性的了解,明白每个工具的利弊,它们产生的历史来源,从而在具体问题中正确的选择使用它们。

有了这些工具,你会发现大部分research的工作都是在这些细分领域做一些简单的扩展。比如Bayesian PMF(ICML’08)这篇文章几乎就完全是MCMC在PMF的应用。话说回来,Research大部分时候就是以这样一种循序渐进的方式进行的,把一些现成的idea排列组合。

深度学习(Deep learning):说实话我刚开始接触这块内容发现,这尼玛就是传说中的黑科技啊。你不知道模型里面发生了什么,好坏都是看天吃饭的感觉。为了搞清楚这个,我决定重头开始实现神经网络。(代码在bobye/neuron · GitHub )前前后后花了近半年的时间,在实现的过程中,我学习了构造和训练神经网络的各个细节。我是从Stanford这个Tutorial开始学习的UFLDL Tutorial 课程资料里提供了Matlab的源码,不过我喜欢重新造轮子,那个时候恰好在学习Scala,就用Scala重写了一个神经网络的库(这个语言的特性非常适合写神经网络的算法)。

近几年深度学习的主流被深度卷积网络代替,这种监督学习的算法虽然对某些问题十分有效,但是数学上并不是特别神奇的东西,我还是比较关注那些非监督的神经网络。

优化(optimization):没有优化算法,任何机器学习模型都是空中楼阁,如何用更高效的优化算法,如何trade-off 计算时间和准确度,如何把已有问题scale到更高规模的数据上一直都是“优化大师们”做不完的工作。这也是一个非常大的分支,我觉得现在比较流行的两个大类是随机梯度优化和ADMM。前者用来解决大规模非约束优化问题,现实情景用的很多,但我们对它知道的很少;后者用来解决带约束问题,有很多变体。此外,优化大家庭也又有很多别的成员,这时候我要推荐的资料包括J Nocedal的numerical optimization这本书,讲的内容非常充实。此外ADMM的内容当然看Boyd巨牛11年的Tutorial paper。

话说“概率图模型画圈,神经网络调参数,优化问题加正则”,不会科研也会胡诌了。。。最后说说最近在看的东西。PAC学习理论(PAC Learning):这个理论已经相对古老了,它的历史价值很大,应用价值很有争议,但是一直有人在继续这个方向的工作,并试图用它来构造新的模型,所以还是有必要知道的。推荐一下最近的新书:Understanding Machine Learning: From Theory To Algorithms.

非参数贝叶斯统计(Non-parametric Bayesian statistics):这个方向还非常年轻,有很多需要挖掘的东西,也是PhD的一个重要课题。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【资源】深度学习 Top100:近 5 年被引用次数最高论文(下载)

【新智元导读】这里是近5年100篇被引用次数最多的深度学习论文,覆盖了优化/训练方法、无监督/生成模型、卷积网络模型和图像分割/目标检测等十大子领域。重要的论文...

3266
来自专栏腾讯高校合作

【干货】美国教授手把手教你读懂学术性文章

来自顶尖文理学院阿默斯特学院写作中心的副主任Gentzler教授将会为我们讲讲如何分析论述片段。大家可要仔细看哦,作为学院终身教授的她,可是有着丰富的写...

3138
来自专栏PPV课数据科学社区

【学习】R语言书籍导读-入门到高级电子书下载推荐

R语言的资料非常多,R语言的书籍也聆郎满目啊。如何选择R语言书籍阅读呢?在此,我给大家分享一张自己做的R语言书籍导读的心智图。 ? 这个心智图,一共包括预备知...

2903
来自专栏PPV课数据科学社区

练功 | 机器学习应补充哪些数学基础?

编者按:很多同学开始学习机器学习时候遇到的最大障碍就是数学基础,机器学习到底需要学习哪些数据知识?要掌握到什么程度呢?希望这篇文章对于大家学习大数据和机器学习有...

33810
来自专栏达观数据

技术干货丨想写出人见人爱的推荐系统,先了解经典矩阵分解技术

网络中的信息量呈现指数式增长,随之带来了信息过载问题。推荐系统是大数据时代下应运而生的产物,目前已广泛应用于电商、社交、短视频等领域。本文将针对推荐系统中基于隐...

6297
来自专栏数据科学与人工智能

【陆勤推荐】想入门机器学习、数据挖掘,我该怎么做?

想入门机器学习、数据挖掘,我该怎么做?我自己是本科数学出身,本科毕业的时候,我并不知道什么是机器学习,也没有写过大型程序,更不要说去搞一个机器学习的算法和实践了...

1885
来自专栏专知

【MLA首日报告摘要】周志华、马毅等教授分享机器学习最新进展

【导读】第15届中国机器学习及其应用研讨会今天11月4日在北京交通大学举行,海内外从事机器学习及相关领域研究的10余位专家与会进行学术交流,包括特邀报告、顶会论...

3395
来自专栏人工智能LeadAI

计算机视觉任务:图像梯度和图像完成

该笔记是以斯坦福cs231n课程的python编程任务为主线,展开对该课程主要内容的理解和部分数学推导。这篇文章是关于计算机视觉处理的,分为两篇文章撰写完成。此...

3527
来自专栏机器之心

使用深度学习构建先进推荐系统:近期33篇重要研究概述

2576
来自专栏企鹅号快讯

谷歌发布迄今最准确商用端到端语音识别系统,词错率将至5.6%,性能提升16%

新智元编译 【新智元导读】谷歌大脑和Speech团队发布最新端到端自动语音识别(ASR)模型,词错率将至5.6%,相比传统的商用方法实现了16%的改进。新方法利...

3325

扫描关注云+社区