机器学习之路

标签: 机器学习 | 发表时间:2014-07-28 12:34 | 作者:smallroof
分享到:
出处:http://www.52ml.net

自从答应简二毛博士将自己的机器学习历程和心得分享给大家至今,转眼间半年已经过去了,感谢简博士分享和开源精神的鼓舞,这也正是本系列关于机器学习介绍博客的动力来源。

之前有些网友,师弟们问我,学习机器学习怎么入手,从看什么书开始。这里说一下个人见解:

如果你只愿意看一本书,那么推荐Bishop的PRML,全名Pattern Recognition and Machine Learning. 这本书是机器学习的圣经之作,尤其对于贝叶斯方法,介绍非常完善。该书也是众多高校机器学习研究生课程的教科书,如Deep Learning的开山鼻祖Hilton在多伦多大学教授机器学习课程(CSC2515)时也选择了这本书。该书电子版在Bishop个人网页提供直接下载。不过提前说明一下,这本书如果看了半年,看完三遍才能理解透,也属于正常。第一遍看不懂很正常,所以需要持之以恒。

http://research.microsoft.com/en-us/um/people/cmbishop/prml/

intel_prml

第二本书就是ESL(The Elements of Statistical Learning)。中文翻译叫统计学习基础,其实这个翻译不够准确,Statistical Learning并非statistics,叫机器学习基础更加准确。该书数学推导,理论系统很完备,结合后面的exercise用R语言自己联系一下,对于理解机器学习的基本方法很有帮助,如:Logistic,Ridge regression等。这本书同样可以在作者网站上直接下载到电子版。

http://statweb.stanford.edu/~tibs/ElemStatLearn/

intel_esl

有了理论基础,再结合一些教授的课程进行学习,效果更好。目前很流行的斯坦福大学机器学习公开课,在网易公开课中甚至都有中文版字幕出来,是非常不错的入门教程。不过个人更喜欢Hilton的机器学习课程。因为你看了上述两本书之后,基础知识基本都OK了,再看Stanford公开课还是基础。而Hilton的课程更加贴近目前的学术研究热点,比如对于Neural network,Deep Belief Nets的介绍,他的课程中包括了最早期的RBM的实现 http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html 。值得一看。他老人家的课程地址: http://www.cs.toronto.edu/~hinton/csc2515/lectures.html 特别推荐做一做其中的assignments: http://www.cs.toronto.edu/~hinton/csc2515/assignments.html

intel_hinton

 

下面说一下数据集,孔子云“学而时习之”,光说不练是学习的大忌,练习就需要数据集,配合上述课程的数据集是mnist data, http://yann.lecun.com/exdb/mnist/ 这个链接中也可以看到众多大牛在该数据集上的突破。

本系列机器学习之路的内容主要参考来源于:PRML,ESL和Hilton CSC2515。

 

关于软件,是使用Matlab还是R。很难说哪个软件好,哪个不好,只有适不适合自己。R更适合做学术研究,有众多的包和data可以使用,方便快速地实现自己的算法原型。不管是在内置函数的数量还是质量上,尤其处理大量数据时R的确要强于Matlab。同时R还有CRAN,里面基本可以找到绝大多数我们需要的算法,介绍,教程等。

而Matlab强项在于矩阵运算,Matlab也有很多工具箱,里面的算法相对很成熟,Matlab的图形绘图性能也强于R。

二者的区别其实在于商业软件和自由软件的区别。Matlab庞大,成熟,美观,官方文档齐全,当然还有价格不菲。R免费,论坛强大,算法包更新快,紧贴研究的最前沿等等。当然二者可以相互转换,我记得Matlab有执行R语言程序的工具箱,同样R也有运行Matlab程序的包。

总结就是工程人员,更适合Matlab,学术研究还是用R更自由。详细的对比

http://www.math.umaine.edu/~hiebeler/comp/matlabR.pdf

 

机器学习方法

谈到机器学习,一堆概念和方法很容易混淆,比如:VC dimension, least squares, maximum likelihood maximum conditional likelihood,maximum penalized (conditional) likelihood,back propagation,Recurrent networks,Newton and Quasi-Newton Methods,Conjugate Gradients,Constrained Optimization,Mixtures of Experts,Hierarchical mixtures of experts EM Algorithm,PCA, Factor Analysis , Independent Components Analysis,Deep Belief Nets,Restricted Boltzmann Machines,Markov Chain Monte Carlo,Gibbs Sampling,Kernel Methods,kernel density,Association Rules Apriori,Sparse Kernel Machines,Graphical Models

Approximate Inference 等等。

 

在分类这些方法之前,首先描述一下几个概念:

  1. 回归和分类(Regression and Classification), 给定一组输入X和输出Y的数据集S,我们通过回归或者分类方法来拟合数据集S,得到拟合模型F, 当有新的数据输入Xi时,通过拟合模型F来预测输出Yi的值。
  2. 求解方法:在上述拟合模型F的过程中,我们怎么知道什么样的模型是好的,什么样的模型是不好的呢,那么就需要评价函数,有了评价函数之后,我们就需要对该评价函数进行参数求解,使得我们的误差最小,注意,这里的误差最小是针对训练集的数据。
  3. 校验方法:通过上述求解方法得到了我们的求解出的拟合模型F,那么在真实数据中,是否也能够实现误差最小化呢,这里的误差最小是针对真实的测试数据,这个时候我们就需要使用校验方法。
  4. 有些数据集,我们预先知道,或者预先假设好它的分布模型,再进行模型拟合,这个过程叫做有监督的学习(或者针对给定的输入,我们又给定的输出与之相对应)。比如,中国男生身高分布,我们预先设定好其为高斯分布,再进行参数拟合,或者对不同收入阶层的人进行购买力的统计和预测,我们预先假设其满足线性可分,采用线性分类方法,这些都属于有监督的学习。无监督的学习是指给定一组输入,我们没有预先设定的输出和预先设定的模型分布。根据输入变量内在关系进行学习的方法。典型的就是聚类,统计出一组用户的购买物品参数,根据这些参数对用户进行聚类分析,得出其属于重度购买用户还是轻度用户等等。还有如关联规则学习中著名的啤酒与尿布apriori 算法都属于非监督学习算法。
  5. 数据加工方法:如今一个炒作非常火爆的一个概念叫做大数据,凡是和统计学沾边的都自称做大数据的,一个很小的互联网网址做后来数据处理的,也自称做大数据的,如今的社会风气实在让人无语,忍不住吐槽一下。回到正题,当数据量很大,部分数据不够完整,数据维数很高的时候,我们就需要借助于强有力的数据加工方法,其中包括提取有效的主成分,提取相似度高的输入因子等等。
  6. 数据采集方法Sampling:现代计算机的方法,使得产生随机数几乎不需要成本,这就导致了Sampling方法的重大突破。当我们一直模型分布的时候,进行数据采集很方便,预先设定好模型,进行计算机随机数采集跳转获得相应的分布数据即可。但是当模型很复杂,或者我们根本不知道是什么模型的时候,很难适应计算机预先设定好模型进行采集,那么,我们如何获得和真实数据项一致的分布数据进行学习计算呢,这个时候就需要我们的Sampling方法派上用场了。

有了上述基本概念之后,我们就对一堆机器学习的概念机械归纳和分类:

  1. 回归和分类模型有:Liner  regression,Logistic regression, Ridge regression, Lasso, Linear Discriminant Analysis,Basis Expansions,Smoothing Splines, Kernel Methods, Additive Models, Trees,Nearest-Neighbors Methods, SVM 等等,这些只是大致的方法,里面还包括了各种细致的算法,如Trees中包括 Classification trees, Random Forest 等等
  2. 求解方法:最常见的Least Square,在这上面依次有maximum likelihood,EM, Gradient Descent等。其中Gradient Descent又包括Classic Newton methods, Quasi-Newton Methods等等。
  3. 校验方法最常见是交叉验证(Cross Validation),其中包括留一验证(LOOCV),K-Fold CV, Boostrap 等等。
  4. 无监督的学习方法主要有:关联规则,聚类,自组网,主成分分析,因子分析,独立成分分析,已经如今很热门的Page Rank, deep Learning都属于无监督学习的一种。大多是的分类和回归模型都是有监督的学习或者半监督的学习。
  5. 数据加工的方法主要有: 如收缩法的Ridge regression , Lasso, 降维法的PCA,ICA特征提取的因子分析等
  6. 数据采样方法有:Bagging,Boosting,MCMC(Markov Chain Monte Carlo), Gibbs Sampling等
  7. 神经网络,之所以把神经网络单独分类主要是因为神经网络包罗万象,既可以属于有监督学习,有可以属于无监督学习,既可以是分类,也可以是回归,很难将其分在哪一类,所以干脆以后单独介绍。

声明

本系列介绍系本人的学习体会,难免有不足和错误,还望广大网友指正。比如也有的地方将Boosting总结为基于树的分类模型,只是个人觉得Boosting的思想更像是Sampling,所以将其归纳在采样方法中。开篇介绍到此,之后有空本系列会陆续更新,力求简要介绍各种常见的学习方法和学习策略。也欢迎广大网友共同探讨。

本系列参考:

http://research.microsoft.com/en-us/um/people/cmbishop/prml/

http://statweb.stanford.edu/~tibs/ElemStatLearn/

http://www.cs.toronto.edu/~hinton/csc2515/lectures.html

 

本文转载自: https://software.intel.com/zh-cn/blogs/2014/07/28

相关 [机器学习] 推荐:

机器学习五步走

- - 我爱机器学习
经常会有人问“我该如何在机器学习方面更进一步,我不知道我接下来要学什么了. 一般我都会给出继续钻研教科书的答案. 每当这时候我都会收到一种大惑不解的表情. 但是进步确实就是持续的练习,保持较强的求知欲,并尽你可能的完成具有挑战性的工作. 因为他是为数不多的几种可以让你真真让你获取坚实知识的媒介. 是的,你可以选择选一门课,注册MOOC,参加一些讨论班.

机器学习之路

- - 我爱机器学习
自从答应简二毛博士将自己的机器学习历程和心得分享给大家至今,转眼间半年已经过去了,感谢简博士分享和开源精神的鼓舞,这也正是本系列关于机器学习介绍博客的动力来源. 之前有些网友,师弟们问我,学习机器学习怎么入手,从看什么书开始. 如果你只愿意看一本书,那么推荐Bishop的PRML,全名Pattern Recognition and Machine Learning. 这本书是机器学习的圣经之作,尤其对于贝叶斯方法,介绍非常完善.

Mahout实现的机器学习算法

- - ITeye博客
使用命令:mahout -h.   在Mahout实现的机器学习算法见下表:. EM聚类(期望最大化聚类). 并行FP Growth算法. 并行化了Watchmaker框架. 非Map-Reduce算法. 扩展了java的Collections类. Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能.

国内的机器学习几个人

- - 丕子
转: http://blog.csdn.net/playoffs/article/details/7588597. 推荐几个机器学习和数据挖掘领域相关的中国大牛:. 李航:http://research.microsoft.com/en-us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究领域是信息检索,自然语言处理和统计学习.

Apache Mahout 0.8 发布,机器学习库

- - 开源中国社区最新新闻
Apache Mahout 0.8 发布了,Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用. 该项目已经发展到了它的最二个年头,目前只有一个公共发行版.

Ruby的机器学习项目

- - 阳志平的网志-技术类
作者是辉瑞公司的小牛,可惜烂尾了. 我在改啊改啊,可惜现在是商业项目,暂时不能放出改掉的部分. 对了,顺便做个小广告,去年组织翻译的一本小书:社会网络分析:方法与实践. 已经上市了,感兴趣的可以翻翻:. 社会网络分析:探索关系背后的科学与技术. treat:自然语言处理. 类似于igraph,也是桥接处理nlp.

机器学习该如何入门

- - CSDN博客综合推荐文章
  对于这个问题的解释,说实话我很有压力,因为在分享篇文章之前就有朋友告诉我,这个百度上一搜一大片,还需要你讲吗. 正如同一千个读者眼里有一千个林黛玉一样,我解释的当然是我个人自从读研到工作这么多年对机器学习的学习到应用过程的独特见解.   首先我们看下图了解一下机器学习在AI(Artificial Intelligence 人工智能)领域的地位.

[译] 理解机器学习技术

- - IT瘾-dev
第1讲 理解机器学习技术. 学完本模块的内容,读者将能够:. 讨论机器学习的技术和商业应用. 学完本讲的内容,读者将能够:. 解释各类机器学习方法和算法. “机器学习领域的突破,其价值10倍于微软. 你是否曾经为计算机能够下象棋或者机器人能够完成复杂任务而感到惊奇. 一旦你理解了机器如何学习和适应各种问题、提供合适的解决方案时,这些看上去很复杂的问题实际上相当简单.

Mllib机器学习工具包在Hadoop上的使用

- 小丑鱼 - 搜索技术博客-淘宝
         Hadoop是基于Java的数据计算平台,在我们公司得到了广泛应用. 同样mllib也是我们算法组同学经常使用的一个机器学习工具包. 但目前mllib工具包只提供了供C++程序调用的so链接库,没有可供java程序调用的jar包. 由于这个需求有一定的普遍性,笔者将mllib做了进一步封装,并通过jni的方式把其封装成了可供java程序调用的接口.

机器学习正在改变我们的工作与生活

- zerorei - 微软亚洲研究院
机器学习是关于计算机基于数据构建模型并运用模型来模拟人类智能活动的一门学科. 随着计算机与网络的飞速发展,机器学习在我们的生活与工作中起着越来越大的作用,正在改变着我们的生活和工作. 我们在日常生活经常使用数码相机. 你也许不知道,数码相机上的人脸检测技术是基于机器学习技术的. 我认识三位了不起的科学家与工程师,他们是Robert Schapire,Paul Viola,劳世竑.