刚好是一名小菜正在入门,日学习时间>8h/d,与楼主共勉,基础课程学习完了之后,动手实践吧!
2015/07/01: 根据自己上过的课程,更新课程列表
机器学习必要的数学基础主要包括:多元微积分,线性代数
下面是近期的给外行人读的泛数学科普书籍,由浅至深,作用除了感受数学之美之外,更重要的是可以作用每天学习的鸡血,因为这些书都比较好读……
1.《数学之美》作者:吴军
2.《 Mathematician's Lament | 数学家的叹息》作者:by Paul Lockhart
3.《 Think Stats: Probability and Statistics for Programmers | 统计思维:程序员数学之概率统计 》 作者:Allen B. Downey
4.《 A History of Mathematics | 数学史 》作者:Carl B. Boyer
5.《 Journeys Through Genius | 天才引导的历程:数学中的伟大定理 》作者:William Dunham
6.《 The Mathematical Experience | 数学经验 》作者 Philip J.Davis、Reuben Hersh
7.《 Proofs from the Book | 数学天书中的证明 》作者:Martin Aigner、Günter M. Ziegler
8.《 Proofs and Refutations | 证明与反驳-数学发现的逻辑 》作者:Imre Lakatos
本文源:我的数据挖掘学习图谱
1. Python/C++/R/Java - you will probably want to learn all of these languages at some point if you want a job in machine-learning. Python's Numpy and Scipy libraries [2] are awesome because they have similar functionality to MATLAB, but can be easily integrated into a web service and also used in Hadoop (see below). C++ will be needed to speed code up. R [3] is great for statistics and plots, and Hadoop [4] is written in Java, so you may need to implement mappers and reducers in Java (although you could use a scripting language via Hadoop streaming [5])首先,你要熟悉这四种语言。Python因为开源的库比较多,可以看看Numpy和Scipy这两个库,这两个都可以很好的融入网站开发以及Hadoop。C++可以让你的代码跑的更快,R则是一个很好地统计工具。而你想很好地使用Hadoop你也必须懂得java,以及如何实现map reduce
2. Probability and Statistics: A good portion of learning algorithms are based on this theory. Naive Bayes [6], Gaussian Mixture Models [7], Hidden Markov Models [8], to name a few. You need to have a firm understanding of Probability and Stats to understand these models. Go nuts and study measure theory [9]. Use statistics as an model evaluation metric: confusion matrices, receiver-operator curves, p-values, etc.
3. Applied Math + Algorithms: For discriminate models like SVMs [10], you need to have a firm understanding of algorithm theory. Even though you will probably never need to implement an SVM from scratch, it helps to understand how the algorithm works. You will need to understand subjects like convex optimization [11], gradient decent [12], quadratic programming [13], lagrange [14], partial differential equations [15], etc. Get used to looking at summations [16].机器学习毕竟是需要极强极强数学基础的。我希望开始可以深入的了解一些算法的本质,SVM是个很好的下手点。可以从此入手,看看拉格朗日,凸优化都是些什么
4. Distributed Computing: Most machine learning jobs require working with large data sets these days (see Data Science) [17]. You cannot process this data on a single machine, you will have to distribute it across an entire cluster. Projects like Apache Hadoop [4] and cloud services like Amazon's EC2 [18] makes this very easy and cost-effective. Although Hadoop abstracts away a lot of the hard-core, distributed computing problems, you still need to have a firm understanding of map-reduce [22], distribute-file systems [19], etc. You will most likely want to check out Apache Mahout [20] and Apache Whirr [21].熟悉分布计算,机器学习当今必须是多台机器跑大数据,要不然没啥意义。请熟悉Hadoop,这对找工作有很大很大的意义。百度等公司都需要hadoop基础。
5. Expertise in Unix Tools: Unless you are very fortunate, you are going to need to modify the format of your data sets so they can be loaded into R,Hadoop,HBase [23],etc. You can use a scripting language like python (using re) to do this but the best approach is probably just master all of the awesome unix tools that were designed for this: cat [24], grep [25], find [26], awk [27], sed [28], sort [29], cut [30], tr [31], and many more. Since all of the processing will most likely be on linux-based machine (Hadoop doesnt run on Window I believe), you will have access to these tools. You should learn to love them and use them as much as possible. They certainly have made my life a lot easier. A great example can be found here [1].熟悉Unix的Tool以及命令。百度等公司都是依靠Linux工作的,可能现在依靠Windows的Service公司已经比较少了。所以怎么也要熟悉Unix操作系统的这些指令吧。我记得有个百度的面试题就是问文件复制的事情。
6. Become familiar with the Hadoop sub-projects: HBase, Zookeeper [32], Hive [33], Mahout, etc. These projects can help you store/access your data, and they scale.
7. Learn about advanced signal processing techniques: feature extraction is one of the most important parts of machine-learning. If your features suck, no matter which algorithm you choose, your going to see horrible performance. Depending on the type of problem you are trying to solve, you may be able to utilize really cool advance signal processing algorithms like: wavelets [42], shearlets [43], curvelets [44], contourlets [45], bandlets [46]. Learn about time-frequency analysis [47], and try to apply it to your problems. If you have not read about Fourier Analysis[48] and Convolution[49], you will need to learn about this stuff too. The ladder is signal processing 101 stuff though.这里主要是在讲特征的提取问题。无论是分类(classification)还是回归(regression)问题,都要解决特征选择和抽取(extraction)的问题。他给出了一些基础的特征抽取的工具如小波等,同时说需要掌握傅里叶分析和卷积等等。这部分我不大了解,大概就是说信号处理你要懂,比如傅里叶这些。。。
Finally, practice and read as much as you can. In your free time, read papers like Google Map-Reduce [34], Google File System [35], Google Big Table [36], The Unreasonable Effectiveness of Data [37],etc There are great free machine learning books online and you should read those also. [38][39][40]. Here is an awesome course I found and re-posted on github [41]. Instead of using open source packages, code up your own, and compare the results. If you can code an SVM from scratch, you will understand the concept of support vectors, gamma, cost, hyperplanes, etc. It's easy to just load some data up and start training, the hard part is making sense of it all.总之机器学习如果想要入门分为两方面:
机器学习入门资源不完全汇总
感谢贡献者: tang_Kaka_back@新浪微博
欢迎补充指正,转载请保留原作者和原文链接。 本文是 机器学习日报的一个专题合集,欢迎订阅:请给[email protected]发邮件,标题"订阅机器学习日报"。
机器学习入门资源不完全汇总 基本概念机器学习 机器学习是近20多年兴起的一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与统计推断学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。
下面从微观到宏观试着梳理一下机器学习的范畴:一个具体的算法,领域进一步细分,实战应用场景,与其他领域的关系。
图1: 机器学习的例子:NLTK监督学习的工作流程图 (source: http://www.nltk.org/book/ch06.html)
图2: 机器学习概要图 by Yaser Abu-Mostafa (Caltech) (source: Map of Machine Learning (Abu-Mostafa))
图3: 机器学习实战:在python scikit learn 中选择机器学习算法 by Nishant Chandra (source: In pursuit of happiness!: Picking the right Machine Learning Algorithm)
图4: 机器学习和其他学科的关系: 数据科学的地铁图 by Swami Chandrasekaran (source: Becoming a Data Scientist)
机器学习入门资源不完全汇总 入门攻略大致分三类: 起步体悟,实战笔记,行家导读
机器学习入门资源不完全汇总 更多攻略
机器学习入门者学习指南 @果壳网 (2013) 作者 白马 -- [起步体悟] 研究生型入门者的亲身经历
有没有做机器学习的哥们?能否介绍一下是如何起步的 @ourcoders -- [起步体悟] 研究生型入门者的亲身经历,尤其要看reyoung的建议
tornadomeet 机器学习 笔记 (2013) -- [实战笔记] 学霸的学习笔记,看看小伙伴是怎样一步一步地掌握“机器学习”
Machine Learning Roadmap: Your Self-Study Guide to Machine Learning (2014) Jason Brownlee -- [行家导读] 虽然是英文版,但非常容易读懂。对Beginner,Novice,Intermediate,Advanced读者都有覆盖。
- A Tour of Machine Learning Algorithms (2013) 这篇关于机器学习算法分类的文章也非常好
- Best Machine Learning Resources for Getting Started(2013) 这片有中文翻译 机器学习的最佳入门学习资源 @伯乐在线 译者 programmer_lin
门主的几个建议
- 既要有数学基础,也要编程实践
- 别怕英文版,你不懂的大多是专业名词,将来不论写文章还是读文档都是英文为主
- [我是小广告][我是小广告]订阅机器学习日报,跟踪业内热点资料。
机器学习入门资源不完全汇总 课程资源
- 机器学习该怎么入门 @知乎 (2014)
- What's the easiest way to learn machine learning @quora (2013)
- What is the best way to study machine learning @quora (2012)
- Is there any roadmap for learning Machine Learning (ML) and its related courses at CMU Is there any roadmap for learning Machine Learning (ML) and its related courses at CMU(2014)
Tom Mitchell 和 Andrew Ng 的课都很适合入门
机器学习入门资源不完全汇总 入门课程 机器学习入门资源不完全汇总 2011 Tom Mitchell(CMU)机器学习英文原版视频与课件PDF 他的《机器学习》在很多课程上被选做教材,有中文版。
机器学习入门资源不完全汇总 2014 Andrew Ng (Stanford)机器学习
- Decision Trees
- Probability and Estimation
- Naive Bayes
- Logistic Regression
- Linear Regression
- Practical Issues: Feature selection,Overfitting ...
- Graphical models: Bayes networks, EM,Mixture of Gaussians clustering ...
- Computational Learning Theory: PAC Learning, Mistake bounds ...
- Semi-Supervised Learning
- Hidden Markov Models
- Neural Networks
- Learning Representations: PCA, Deep belief networks, ICA, CCA ...
- Kernel Methods and SVM
- Active Learning
- Reinforcement Learning 以上为课程标题节选
英文原版视频 这就是针对自学而设计的,免费还有修课认证。“老师讲的是深入浅出,不用太担心数学方面的东西。而且作业也非常适合入门者,都是设计好的程序框架,有作业指南,根据作业指南填写该完成的部分就行。”(参见白马同学的入门攻略)"推荐报名,跟着上课,做课后习题和期末考试。(因为只看不干,啥都学不会)。" (参见reyoung的建议)
机器学习入门资源不完全汇总 进阶课程
- Introduction (Week 1)
- Linear Regression with One Variable (Week 1)
- Linear Algebra Review (Week 1, Optional)
- Linear Regression with Multiple Variables (Week 2)
- Octave Tutorial (Week 2)
- Logistic Regression (Week 3)
- Regularization (Week 3)
- Neural Networks: Representation (Week 4)
- Neural Networks: Learning (Week 5)
- Advice for Applying Machine Learning (Week 6)
- Machine Learning System Design (Week 6)
- Support Vector Machines (Week 7)
- Clustering (Week 8)
- Dimensionality Reduction (Week 8)
- Anomaly Detection (Week 9)
- Recommender Systems (Week 9)
- Large Scale Machine Learning (Week 10)
- Application Example: Photo OCR
- Conclusion
2013年Yaser Abu-Mostafa (Caltech) Learning from Data -- 内容更适合进阶 课程视频,课件PDF@Caltech
- The Learning Problem
- Is Learning Feasible?
- The Linear Model I
- Error and Noise
- Training versus Testing
- Theory of Generalization
- The VC Dimension
- Bias-Variance Tradeoff
- The Linear Model II
- Neural Networks
- Overfitting
- Regularization
- Validation
- Support Vector Machines
- Kernel Methods
- Radial Basis Functions
- Three Learning Principles
- Epilogue
2014年 林軒田(国立台湾大学) 機器學習基石 (Machine Learning Foundations) -- 内容更适合进阶,華文的教學講解 课程主页
When Can Machines Learn? [何時可以使用機器學習] The Learning Problem [機器學習問題] -- Learning to Answer Yes/No [二元分類] -- Types of Learning [各式機器學習問題] -- Feasibility of Learning [機器學習的可行性]
Why Can Machines Learn? [為什麼機器可以學習] -- Training versus Testing [訓練與測試] -- Theory of Generalization [舉一反三的一般化理論] -- The VC Dimension [VC 維度] -- Noise and Error [雜訊一錯誤]
How Can Machines Learn? [機器可以怎麼樣學習] -- Linear Regression [線性迴歸] -- Linear `Soft' Classification [軟性的線性分類] -- Linear Classification beyond Yes/No [二元分類以外的分類問題] -- Nonlinear Transformation [非線性轉換]
How Can Machines Learn Better? [機器可以怎麼樣學得更好] -- Hazard of Overfitting [過度訓練的危險] -- Preventing Overfitting I: Regularization [避免過度訓練一:控制調適] -- Preventing Overfitting II: Validation [避免過度訓練二:自我檢測] -- Three Learning Principles [三個機器學習的重要原則]
机器学习入门资源不完全汇总 更多选择2008年Andrew Ng CS229 机器学习 -- 这组视频有些年头了,主讲人这两年也高大上了.当然基本方法没有太大变化,所以课件PDF可下载是优点。 中文字幕视频@网易公开课 | 英文版视频@youtube |课件PDF@Stanford
第1集.机器学习的动机与应用 第2集.监督学习应用.梯度下降 第3集.欠拟合与过拟合的概念 第4集.牛顿方法 第5集.生成学习算法 第6集.朴素贝叶斯算法 第7集.最优间隔分类器问题 第8集.顺序最小优化算法 第9集.经验风险最小化 第10集.特征选择 第11集.贝叶斯统计正则化 第12集.K-means算法 第13集.高斯混合模型 第14集.主成分分析法 第15集.奇异值分解 第16集.马尔可夫决策过程 第17集.离散与维数灾难 第18集.线性二次型调节控制 第19集.微分动态规划 第20集.策略搜索
2012年余凯(百度)张潼(Rutgers) 机器学习公开课 -- 内容更适合进阶 课程主页@百度文库 | 课件PDF@龙星计划
第1节Introduction to ML and review of linear algebra, probability, statistics (kai) 第2节linear model (tong) 第3节overfitting and regularization(tong) 第4节linear classification (kai) 第5节basis expansion and kernelmethods (kai) 第6节model selection and evaluation(kai) 第7节model combination (tong) 第8节boosting and bagging (tong) 第9节overview of learning theory(tong) 第10节optimization in machinelearning (tong) 第11节online learning (tong) 第12节sparsity models (tong) 第13节introduction to graphicalmodels (kai) 第14节structured learning (kai) 第15节feature learning and deeplearning (kai) 第16节transfer learning and semi supervised learning (kai) 第17节matrix factorization and recommendations (kai) 第18节learning on images (kai) 第19节learning on the web (tong)
机器学习入门资源不完全汇总 论坛网站 机器学习入门资源不完全汇总 中文我爱机器学习 我爱机器学习
http://www.mitbbs.com/bbsdoc/DataSciences.html MITBBS- 电脑网络 - 数据科学版
机器学习小组 果壳 > 机器学习小组
http://cos.name/cn/forum/22 统计之都 » 统计学世界 » 数据挖掘和机器学习
北邮人论坛-北邮人的温馨家园 北邮人论坛 >> 学术科技 >> 机器学习与数据挖掘
机器学习入门资源不完全汇总 英文josephmisiti/awesome-machine-learning · GitHub 机器学习资源大全
Machine Learning Video Library Caltech 机器学习视频教程库,每个课题一个视频
Analytics, Data Mining, and Data Science 数据挖掘名站
http://www.datasciencecentral.com/ 数据科学中心网站
机器学习入门资源不完全汇总 东拉西扯一些好东西,入门前未必看得懂,要等学有小成时再看才能体会。
机器学习与数据挖掘的区别
- 机器学习关注从训练数据中学到已知属性进行预测
- 数据挖掘侧重从数据中发现未知属性
Dan Levin, What is the difference between statistics, machine learning, AI and data mining?
- If there are up to 3 variables, it is statistics.
- If the problem is NP-complete, it is machine learning.
- If the problem is PSPACE-complete, it is AI.
- If you don't know what is PSPACE-complete, it is data mining.
几篇高屋建瓴的机器学习领域概论, 参见原文
- The Discipline of Machine LearningTom Mitchell 当年为在CMU建立机器学习系给校长写的东西。
- A Few Useful Things to Know about Machine Learning Pedro Domingos教授的大道理,也许入门时很多概念还不明白,上完公开课后一定要再读一遍。
几本好书
- 李航博士的《统计学习方法》一书前段也推荐过,给个豆瓣的链接
这几年,机器学习绝对是计算机领域最热门的话题和方向。笔者不属于专门研究机器学习,但是平时的工作会经常用到一些相关的算法。因此,对于机器学习也仅仅是入门的水平。但是我想也正是因为我只是一个入门汉,所以能够从我们入门者的角度来总结如何入门,希望对还在门外的同学有一些帮助。
数 学
很多人翻看任何一本机器学习的书,看到一推的数学公式就开始打退堂鼓了。开始搜索,提问“机器学习需要哪些数学知识?”然后得到的结果可能会是“矩阵分析,概率论,优化设计……”而且还会有大量的人推荐一些例如“All of Statistics”,“Convex Optimation”等等外文教材。至少我当时面对的情况就是这样的。这种情况很可能后面会朝以下画风发展。
看到上述推荐的那些经典教材,你像看待圣经一样看待他们。抱着一种学会了那些课,我再看机器学习的书简直就会是探囊取物的想法,你下载了巨多相关材料。但是,慢慢你会发现,除了把他们下载了下来,你并没有任何的进步。你并没有完完整整的看完一本,你并没有在机器学习方面卓越超群。
入门阶段真的需要这么多的数学储备吗?未必。
入门阶段我感觉你只要有普通工科专业大一大二那几门基础数学课“线性代数”,“高数”,“概率论与数理统计”就可以让你入门了。
所以,千万别被机器学习中的数学所吓倒而不知道该如何下手。
只要有上述的几门课的基础,你完全可以看懂很大一部分机器学习算法。
程序语言
机器学习入门最佳的方法其实就是理论和代码一起学习。一边看相应的理论推导,一边看并且实践经典代码。所以,为了更快入门,我推荐你最好能够懂点MATLAB或者是Python语言。
Matlab和Python说实话做高端的机器学习肯定是不推荐的,但是如果你想的是机器学习快速入门,那这两门语言绝对是绝佳选择。
有了上述基础后,你可以开始看点机器学习的相关内容了。我看很多人推荐elements of machine learning。我想说,你想让一个基础为零的人去看这本书,真的合适吗???
所以,我推荐的是Machine Learning in action,(这里面的完成语言为Python)这是英文版本的。当然如果你觉得英文对你是一个完全过不去的坎,(虽然我建议做技术的人都必须至少要看得懂英文)现在有中文版本,叫“机器学习实践”。
这本书用尽量少的公式把机器学习的基本算法都过了一遍,而且还讲得很清楚,更为重要的是他将公式和代码结合了起来。因此,你的机器学习并没有那么的抽象了,你知道算法里的公式如何的转化为代码。
所以,第一步,你可以耐着性子将这本书看完。反正我当时,把书中的代码自己敲了一次,虽然代码有的下载,你也可以选择只是把代码看懂完事。但我还是建议,自己敲一次,运行运行,这样你会得到不一样的体会。
第二步
学习Coursera上面Andrew Ng老师的machine learning的课程。这门课造福了众多机器学习的入门者,不仅仅是因为课程全面,内容由浅入深。更加重要的是这门课程每次课都有课堂作业,作业不需要你写出来所有的代码,但是关键代码要你写出来,而且还会教你如何调试代码。
初学者学这门课的时候很可能会买有耐心,又是英文的,又有进度要求,又有作业。没关系,你可以把视频下载下来(很多网盘里都有下载好的视频),然后慢慢的去啃。作业也是,可能你自己不能一口气写出来,没关系,在自己做了大量尝试后,去Github上面下载一些别人写好的代码看一看,找找自己的问题到底出在了哪里。
总之,一定要耐着性子过一遍甚至是几面这个课程。
第三步
这时候你已经对机器学习很多简单的算法比较清楚了,但是可能还没有一种大的全局观。所以,我建议大家可以看看这两本中文教材。周志华老师的西瓜书《机器学习》和李航老师的《统计学习方法》,这两本书都是作者花了大量心思编写的,也是在中国众多科技书籍中难得的两本佳作。
英文书籍,可以推荐《Patten Recognition and Machine Learning》,《Elements of Statistical Learning》(但是这本书难度比较大,如果你有足够的耐心,可以慢慢啃,多次的啃。相信每次都会有不同的收获。我自己已经看了好几次,但是确实每次都没有完全看完,但是目前我遇到很多问题,我去翻这本书,还是能找到很多答案,尤其是我做稀疏相关的工作,里面的相关内容讲解非常清楚。)
第四步
这时候,机器学习你已经可以说大概入门了。后面的事情,就得根据你的需求来制定相关的学习路线。
比如,做大数据分析的,得去学学spark,Hadoop等计算框架;
另外,图模型,深度学习……等等内容,都是一些方向。
自然语言处理、图像识别、语音识别等等也是一些应用方向,更有大量的领域知识需要结合。
在前沿部分和第一到第三步的内容,如果你能按照这几步走下来,入门是肯定可以的。至于后面的机器学习精通部分,我也只能说:Good Luck and Have Fun
广告时间:机器学习、未来智能、机器人相关话题,可关注公众号:
AITMR: Artificial Intelligent Tomorrow
本人大学 本科,对机器学习很 感兴趣,想从事这方面的研究。在网上看到机器学习有一些经典书如Bishop的PRML, Tom Mitchell的machine learning,还有pattern classification,不知该如何 入门?那本书比较容易理解?