机器学习 招聘习

机器学习该怎么入门?
本人大学本科,对机器学习很感兴趣,想从事这方面的研究。在网上看到机器学习有一些经典书如Bishop的PRML, Tom Mitchell的machine learning,还有pattern classification,不知该如何入门?那本书比较容易理解?
按投票排序
coursera上的andrew ng教授的公开课,妥妥的,绝对靠谱
我也谈谈自己的经验。机器学习说简单就简单,说难就难,但如果一个人不够聪明的话,他大概很难知道机器学习哪里难。基本上要学习机器学习,先修课程是algebra, calculus, probability theory, linear regression。这几门科学好了再学Machine learning是事半功倍的。此外近代数学的东西也要懂, functional analysis啥的。其实不懂也行,只是现在文献总是喜欢引用里面的概念,懂一些读起来方便。(我就很讨厌manifold learning这个名字,把许多人都吓跑了)real analysis最好用心学,对序列或函数的收敛性的理解很能帮助你了解这些模型的精髓。Optimization theory (ref. Convex optimization by Boyd)也是重中之重,在前面几门课学好并有一定python基础的时候可以仔细读一读。其实机器学习需要看的书不多,必读的是elements of statistical learning。这本书涵盖范围很广,且深入浅出,习题也有一定难度,适合自学。你看过这本之后就知道其他什么书可以看什么书不需要看了。再下来就是练习,这个是重中之重。我觉得做kaggle的比赛最有效。可以仿照别人写写code,也可以自己想想办法,但最主要的是要能够迅速完成编程并给出结果。我见过许多人光讨论就可以几天,但真正动起手来就萎了。最后就是读source code并自己实现几个model from scratch。这个比较难,但是确是最锻炼人的。具体语言应该是越基础越好,比如C/C++什么的。等你自己写完了一两个model,再去用别人的package就会觉得得心应手许多了。我真心觉得这个比上coursera那些课强多了。上coursera最大的缺点就是容易变得似懂非懂纸上谈兵。我自己program过ensemble trees(C++)和deep learning solver(Python),受益颇多。至于读source code,我觉得libsvm写得很好啊,不过算法对大一大二新生是难了点。此外,基于python的工具包scikit-learn的sourcecode很好读,建议大家多看看。我看回答中有提到Matlab,我觉的matlab处理字符很麻烦,现在很多dataset都需要处理字符,所以并不是好的选择。补充一点就是要学会发散思维,学会如何从data中找feature。关于这个的教程很缺,需要大量练习及一些天赋。说实话machine learning虽然门槛不高,但真心是聪明人的游戏。
刚好是一名小菜正在入门,日学习时间&8h/d,与楼主共勉。1. 数学基础机器学习必要的数学基础主要包括:多元微积分,线性代数2. 统计基础3. 编程基础4. 机器学习下面是近期的给外行人读的泛数学科普书籍,由浅至深,作用除了感受数学之美之外,更重要的是可以作用每天学习的鸡血,因为这些书都比较好读……1.《数学之美》作者:吴军 2.《 Mathematician's Lament | 数学家的叹息》作者:by Paul Lockhart3.《 Think Stats: Probability and Statistics for Programmers | 统计思维:程序员数学之概率统计 》 作者:Allen B. Downey4.《 A History of Mathematics | 数学史 》作者:Carl B. Boyer5.《 Journeys Through Genius | 天才引导的历程:数学中的伟大定理 》作者:William Dunham6.《 The Mathematical Experience | 数学经验 》作者 Philip J.Davis、Reuben Hersh7.《 Proofs from the Book | 数学天书中的证明 》作者:Martin Aigner、Günter M. Ziegler8.《 Proofs and Refutations | 证明与反驳-数学发现的逻辑 》作者:Imre Lakatos本文源:
我要翻译一把quora了,再加点我的理解,我相信会是一个好答案,链接我都放到一起了,没插入到正文中,要求其实比较高了,我觉得我自己都差很远很远~~~我尽量持续更新翻译质量以及自己理解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 reduce2. 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.我推荐统计学习方法 李航写的,这算的上我mentor的mentor了。理解一些概率的理论,比如贝叶斯,SVM,CRF,HMM,决策树,AdaBoost,逻辑斯蒂回归,然后再稍微看看怎么做evaluation 比如P R F。也可以再看看假设检验的一些东西。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.机器学习终究和大数据息息相关,所以Hadoop的子项目要关注,比如HBase Zookeeper Hive等等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.总之机器学习如果想要入门分为两方面:一方面是去看算法,需要极强的数理基础(真的是极强的),从SVM入手,一点点理解。另一方面是学工具,比如分布式的一些工具以及Unix~Good luck.祝好[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35][36][37][38] [39] [40] [41] [42] [43] [44] [45] [46] [47 ][48] [49 ]
最近在学teradata的aster数据挖掘工具,果然商业的框架跟hadoop的易学性易用性可拓展性都有天壤之别啊。建议有兴趣的同学自查资料,软件贵的惊人,但是对于自身维护团队水平一般的企业还是值得买的-----------不邀自来,结合我现在的工作以及当年机器学习的经验来讲一下自己的一些感受。首先从机器学习的全流程说起。输入:机器学习按输入数据分可以分结构化数据(表),半结构化数据(文本,日志等),非结构化数据(图片,录像),后两者对应的分支中比较出名分别是文本挖掘和图像挖掘,其实就是通过提取特征的方式 把半结构化数据 非结构化数据转化为结构化数据,然后进行机器学习。按输入数据是否预测状态分,可以分为有监督学习数据及无监督学习数据,直接决定后续模型是使用分类模型还是聚类模型。同时如果数据量到达了T级,就要考虑时候hadoop框架了,这里要说明的是,hadoop框架只是解决大数据处理效率瓶颈的工具,除非你志向是做架构师,不然不用深究,掌握hadoop家族的sql处理工具hive和机器学习工具mahout就可以了,需要掌握java和sql,这是基础。下一步,数据清洗和数据降维,在数据清洗方面不是学术界研究的重点,清洗方法有很多,主要通过描述性统计量填补缺失值和极端值,数据降维方面有较多比较出名的算法,如主成分分析,lasso,LDA线性判别分析,变量聚类等,数据降维是重点,因为维度过大容易产生维度灾难和过度拟合问题。然后是数据分区(有监督学习才需要做),分成训练集,验证集,测试集,分别用于训练模型,模型内修正,多模型效果对比用。不展开讨论。接着建模,分为分类算法,聚类算法,规则关联算法,分类算法是大头,建议分别拜读支持向量机,概率图模型,神经网络(虽然我不喜欢但是google的深度学习就是用的神经网络),决策树(C4.5),逻辑回归(吐槽:线性回归什么的看不看得看个人水平),混合高斯模型等,聚类算法有KNN,LDA潜在迪力克雷分析(做文本挖掘效果一流),聚类算法研究不多,大多机器学习算法都是基于有监督学习的,即分类算法。规则关联算法有最简单的规则关联,路径关联分析,及协同过滤(推荐系统首选,输入数据量太大数据太稀疏跑数效率很低一般需要hadoop支持),模型是机器学习的核心,还有一些优化模型,如EM模型等,建议阅读增加知识广度,要求学习人员要懂以下课程:概率论,高数,线性优化,线性代数还有英文,也可以边看论文边学。书籍的话推荐数据挖掘十大算法作为入门索引,然后根据每章节的参考文献找原文阅读,记得把公式推导一遍。结果评估:本来不应该是重点,但是从个人学习和工作经历发现,有很多人不是很会看模型结果,甚至包括一些专业人士。所以如果有志做机器学习的千万要学会看结果,不然就丢人丢大了。最直接的两个指标准确度percision和召回度recall,分别描述模型的精度和泛化性的,模型结果应在两者取得均衡。最小平方误差也是描述准确度的,算法不一样,大家更喜欢用这个评估模型精度。还有一些K-S值,基尼值,ROC值也是描述准确度和拟合度的,不同的软件会使用不同的指标,注意一下。还有就是提升度,事件捕获率这些就是描述分类预测下前百分之几数据的预测准确性情况的,不展开讨论。最直接的学法就是认真读论文的实验部分,看看它的指标评价量。最后是工具和语言,按现在数据挖掘与机器学习的趋势,必须掌握java,python,原因是hadoop是处理大数据的框架,已成趋势,hadoop是java写的,挖掘工具mahout是java写的。python的好处在于底层基于C,语法简单,效率高,而且有很多开源的算法可以直接用,支持mapreduce。可以选择掌握R,同python,但是R效率木有python高,如果是针对商业分析建议学习SAS,因为它集成了一套专业的数据可视化及数据分析方案,大大方便了数据展示功能,这是作为商业分析所必须的。最后补充一点,很多做数据挖掘和机器学习的人最后都走火入魔执着技术忽略了业务的重要性,忽略了模型可解释性的重要性,埋头苦干做出业务人员不能理解的黑箱模型,无法说服业务使用,最终沦为鸡肋的存在,所以在学习过程中要时刻设想技术适应的业务场景,在算法效果接近时选择高可解释性算法,做好结果的图形化展示,让业务理解,这才是王道。补充,andrew ng的公开课不错,但还是建议先看论文。
不同意第一名的答案。知乎一直这样,精英主义太严重,好像不表现得专业点、不长点就不是好答案。说白了就是装b。知乎不是wikipedia(wikipedia适合查资料,不适合从零开始学习)。题主的问题是这样的:本人大学本科,对机器学习很感兴趣,想从事这方面的研究。在网上看到机器学习有一些经典书如Bishop的PRML, Tom Mitchell的machine learning,还有pattern classification,不知该如何入门?那本书比较容易理解?注意题主是本科,现在感兴趣,希望能入门。让一个想要入门机器学习的本科生上来就学Hadoop,这靠谱吗?估计等题主熟练掌握了Hadoop、MapReduce、HBase,本科也快结束了。这种问题天生就不适合长答案。对一个初学者,无重点地给出很多资料,除了能打击学习兴趣、扰乱学习目标之外没有任何作用。同意
等人的答案。题主既然是初学者,就要从简单入手。而大学本科的概率论线性代数对于基本的入手已经足够了。Andrew Ng的课非常好(很简单很适合入门),值得去学一学,网上的相关资料也特别多,比如这个:,写得很详细。如果题主英文水平有限,那可以看一些中文书籍入门。入门之后,对常用算法有了基本了解之后,就可以多学一些原理性知识了,比如统计理论、矩阵理论、信号处理、分布式计算等等。这时排名第一的答案才比较有用。
分听课和看书两个部分来说:入门:视频可以看coursera上Andrew Ng的machine learning课书国内的可以看李航的统计学习方法,综合了老外的基本ML经典,写得浅显易懂,书也比较薄,好读,学习曲线不会太陡。国外的建议先看pattern classification,较其他的简单一些。进阶:视频的话可以看看coursera上的一些数值计算和最优化课程书老外的大部头多了,经典的比如PRML(patten recognition and machine learning),elements fo statistical learning(此书虽名叫基础,实则十分艰深难读,不推荐初学者学习)。这两本都能读完且读懂了,那是看最前沿的ml的paper也不会发怵了
更新:这两天看到李航老师的《统计学习方法》,感觉写的非常好,适合入门,机器学习的基本概念都有,但是不太深入,中文书写,所有专业名词给出英文翻译。适合给初学者建立概念,可以系统的了解机器学习。原答案:强烈推荐这个。这是Andrew Ng写的关于非监督特征学习与深度学习的教程,关键是有一批无私且专业的网友,将其翻译成中文,并有中英文对照,与Andrew Ng商量后贴在了原网址上。非常感谢这些人啊。对于一个初学者,如果单纯从英文教材(视频)入手的话,会比较吃力,很多概念都没建立起来,很多术语都没有掌握,而这个教程设计机器学习很多的基本概念,并附有matlab习题,通过循序渐进的练习,可以更快掌握基本概念。另外这个的好处是不像一般教材,面面俱到,很多追究的太深,不利于初学者建立概念!有了这个的基础之后,再去看相关著作或者论文,肯定得心应手。
强烈推荐台大的这门《机器学习基石》。我感觉这门比Andrew Ng的讲得更深入更透彻更直观,而且作业题也需要更多的思考。给个coursera的链接:
机器学习用到的数学并不难,很多较难的数学(如抽象代数、微分几何)目前在ML问题上也没有用武之地。相比数学,我觉得更重要的一点是对问题和数据的insight。很多经典漂亮的模型,如HMM、CRF、LDA都是建立在良好的motivation和insight之上,数学并不是瓶颈。至于怎么培养insight 恐怕很难说,目前能做的就是多读、多想、多试。
台大林轩田的《机器学习基石》和《机器学习技法》公开课,很适合入门,采用频率学派观点,作业的理论题有一定难度。
尝试跟一下斯坦福的机器学期公开课吧已经全部翻译完整了
Mitchell的机器学习书是懂的部分你不需要看 不懂的地方看不懂 PRML入门挺好的,主要是数学讲的细,循序渐进。如果lz数学底子好可以直接上pattern classification,这本书主要是有翻译的,是个优点,但偏老了些。顺便吐槽说PRML不适合本科生的,现在哪个机器学习实验室入门不是看PRML或者pattern classification啊,大一到大三进实验室都得乖乖看这两本。基础打扎实了到大四再分具体方向看Probabilistic Graphical Models这些进阶书。
建议你跟着世界一流高校的一门课学习,而不要去看ng 的公开课。stanford 一门ee xxx, machine learning,据说效果很好berkeley有cs 289 A/B 供您选择mit 想必也是有的cmu 想必也是有的这些课程都有网络版教材的话,楼上有人说了,elements of statistical learning (esl)。这个说的高屋建瓴,适合数学基础好的人看;另外一本书是introduction to statistical learning with R。这个说的很实际,适合入门理解。实际上书都写得很好,问题是你有多想学。你把他们都好好学会了,获得学校里面科班的训练,那你绝对比知乎上99%的半吊子水平要高了。剩下的就是学一学软件。亚洲的精英教育鼓励大家追究刁钻的细节,却不清楚一门学问里最基本的普世的动机。却不知道,入门最基本的就是了解这个动机。刁钻的技术细节,一个理解动机的人很容易就能看懂另附cs 289A 的内容大纲:Introduction: applications, methods, conceptsGood Machine Learning hygiene: test/training/validation, overfittingLinear classificationPerceptron algorithmSupport vector machines (SVMs)Statistical learning backgroundD Bayes riskProbabilistic models vs no modelGenerative and discriminative modelsControlling complexity: regularization, bias-variance trade-off, priors.Resampling, cross-validation.The multivariate normal distribution.Linear regressionLeast squaresRegularization: ridge regression, lassoBrief primer on optimizationLinear Classification, revisitedLogistic regressionLinear Discriminant AnalysisSupport vector machines revisitedAlgorithmsThe kernel trickTheoretical analysis of machine learning problems and algorithmsGeneral VC dimensionNearest neighbor methodsk-nearest-neighborProperties of high-dimensional spacesDistance learningEfficient indexing and retrieval methodsDecision treesClassification and regression treesRandom ForestsBoostingNeural networksMultilayer perceptronsVariations such as convolutional netsApplicationsUnsupervised methodsClusteringDensity estimationDimensionality reductionApplications in Data MiningCollaborative filteringThe power and the peril of Big Data
个人感觉想从事"研究"还是先不看机器学习,先看概率,线性代数和优化吧(如果功底深厚当然不必了),不然稍微深入点就会get stuck
我怎么觉得《统计学习方法》不适合入门呢?有点像中国的教科书,一上来就列很多公式,然后开始一通推导,有些还不如PRML讲得通俗。如果是工程师的话,我觉得Logistic Regression是一个比较适合入门的东西,通过它可以搞懂:1、分类和回归,在这一个算法中都得到了体现;2、正则,从贝叶斯观点理解最大似然和最大后验的区别;3、最优化,最好搞懂如何通过梯度下降或者随机梯度下降得到LR模型参数;4、特征选择,特征转换等特征工程;5、模型评价。从它入手,可以继续深入指数族;通过SGD,可以对不同损失函数去尝试一下优化过程;另外,LR模型应用很广,广告系统和推荐系统都喜欢用这玩意儿。
我们实验室都是通过ufldl入门的
这篇文章总结的资料很全,可供参考:。最近在看一篇里面提到的paper——《A Few Useful Things to Know about Machine Learning》,国内的刘知远大牛把他翻译成了中文——《机器学习那些事儿》。虽然我已经对这个领域有了一定程度上的了解,但还是感觉对自己帮助很大, 吸收到了很多新东西。同入门,同初学者。一直走在填坑的道路上,加油。
李航的&&统计学习方法&&我觉得很不错,基础的模型和数学推导基本上都有了.PRML我觉得不是很适合初学者,涉及太多的基础理论.数学稍微不好就会看的很难受.另外AndrewNg的course确实非常适合初学者,注意,是非常,不过coursera上也有挺多其他的ML相关的course,我记得有个台湾大学的,这个讲svm讲的非常深入,注意是非常.其它的,如果题主你是研究生,很可能你导师的课题是非常前沿的(在ML领域前沿的也就是deep learning了.....),很可能你老板不会太注意你的基础,而是直接让你在各种deep learning的framework上码起来,说实话这样对你并没有好处.如果你的目标定在将来做ML领域的工作,而不是做理论研究,我建议题主,把logistic regression,svm,random forest这些算法弄明白,然后多写点代码.现在工程领域的ML基本上是逻辑斯特回归走天下,random forest都算比较复杂的算法了.好了,最后还说一句,多写代码,数学其实没有那么重要,ML的数学机器无非就是优化理论,统计学相关的只是帮助你去理解这些模型为什么work,而优化理论,gradient descent走天下?
这里有个Reading List我个人学新东西比较喜欢使用下面的顺序,暂时只是学,而不是用。General的教科书、视频,比如导论类型--&范围窄一些,围绕某个方面的书--&Review、Journal--&Conference机器学习的意义_百度知道
机器学习的意义
我有更好的答案
机器学习(Machine Learning)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
  学习能力是智能行为的一个非常重要的特征,但至今对学习的机理尚不清楚。人们曾对机器学习给出各种定义。H.A.Simon认为,学习是系统所作的适应性变化,使得系统在下一次完成同样或类似的任务时更为有效。R.s.Michalski认为,学习是构造或修改对于所经历事物的表示。从事专家系统研制的人们则认为学习是知识的获取。这些观点各有侧重,第一种观点强调学习的外部行为效果,第二种则强调学习的内部过程,而第三种主要是从知识工程的实用性角...
不是伙计,你要学啥? 在说意义对谁都不一样,这要看你需要的是啥了
其他类似问题
为您推荐:
机器学习的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 吴恩达 的文章

 

随机推荐