当前位置:文档之家› 机器学习过程

机器学习过程

转载]机器学习的经典教程(不断更新中)(2014-07-15 16:29:34)转载▼标签:转载初学者转载原文地址:机器学习的经典教程(不断更新中)作者:MachineLearner如今机器学习的学习资源越来越多,对于入行的朋友们来说,他们只需要关注自己从事的具体研究方向最新的国际会议、杂志上的paper就差不多了,而对于那些想要入行的朋友们,选择经典的教程入手可能会事半功倍。

以下这些教程,是我这些年接触机器学习以来觉得比较经典的,也欢迎朋友们补充。

一、公开课Andrew Ng教授的机器学习课程。

多啰嗦几句Andrew Ng,他虽然没出过啥书,但是他对这两年接触机器学习的人应该帮助最大了。

这哥们是机器学习界大牛Michael Jordan的最得意的门生(据说没有之一),最早只是把公开课视频放到网上,国内网易公开课做了翻译,课程内容安排的真是深入浅出,只要有点微积分和线性代数基础,都能够看明白一些复杂算法的推导(其实这点很重要,一些大牛的paper或者书籍由于篇幅所限,往往一个公式推导需要10步,他只会写最重要的两步,对于初学者来说还是很痛苦的)。

由于这个公开课视频受众甚广,好评如潮,Andrew Ng老师伙同斯坦福另一位同事Daphne Koller创建了Coursera这个在线教育平台,和公开课视频相比这个平台更注重和学生交互,能够帮助学生更好地掌握所follow的课程。

公开课推荐:1、https:///course/ml Andrew Ng在coursera上的机器学习课程,相比公开课来说,内容更简单一些,入门甚佳。

2、/special/opencourse/machinelearning.html Andrew Ng的公开课视频3、https:///course/pgm Daphne Koller在course上图模型的课程4、https:///course/neuralnets Geoffrey Hinton的神经网络的课。

如果问最近业界最火的机器学习技术是啥?一定是deep learning。

如果问是谁让deep learning这么火的,那就是Hinton老师。

应该还有其他类似的公开课资源,但我都没有看过,这里就不乱推荐了,欢迎大家补充。

二、经典书籍1、Tom M.Mitchell. Machine Learning(有中文版)2、Kevin P. Murphy. Machine Learning: A Probabilistic Perspective3、Christopher M.Bishop. Pattern Recognition and Machine Learning4、Trevor Hastie , Robert Tibshirani , Jerome Friedman. The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition(有中文版)5、Richard O. Duda. Pattern Classification(有中文版)6、李航,统计学习方法7、David Barber,Bayesian Reasoning and Machine Learning(@星空下的巫师)个人认为前三本作为入门更合适一些,4还是有些艰深,5是我最初接触这个领域的时候,当时为数不多的参考书,对我个人帮助还是很大的,列在这里更多的是纪念一下。

6是国内相关教程里最好的了,李老师将一些机器学习的经典算法介绍的非常详细,推导也没偷工减料,有点Andrew老师上课推公式的风范。

这些书籍基本上都有电子版可以google到,如果不行,推荐/,这真是一个神奇的地方,找外国图书的电子版效果甚佳。

有趣的机器学习:最简明入门指南2014/08/16 ·IT技术·8 评论·机器学习分享到:368本文由伯乐在线- toolate翻译。

未经许可,禁止转载!英文出处:Adam Geitgey。

欢迎加入翻译组。

在听到人们谈论机器学习的时候,你是不是对它的涵义只有几个模糊的认识呢?你是不是已经厌倦了在和同事交谈时只能一直点头?让我们改变一下吧!本指南的读者对象是所有对机器学习有求知欲但却不知道如何开头的朋友。

我猜很多人已经读过了“机器学习”的维基百科词条,倍感挫折,以为没人能给出一个高层次的解释。

本文就是你们想要的东西。

本文目标在于平易近人,这意味着文中有大量的概括。

但是谁在乎这些呢?只要能让读者对于ML更感兴趣,任务也就完成了。

何为机器学习?机器学习这个概念认为,对于待解问题,你无需编写任何专门的程序代码,泛型算法(generic algorithms)能够在数据集上为你得出有趣的答案。

对于泛型算法,不用编码,而是将数据输入,它将在数据之上建立起它自己的逻辑。

举个例子,有一类算法称为分类算法,它可以将数据划分为不同的组别。

一个用来识别手写数字的分类算法,不用修改一行代码,就可以用来将电子邮件分为垃圾邮件和普通邮件。

算法没变,但是输入的训练数据变了,因此它得出了不同的分类逻辑。

机器学习算法是个黑盒,可以重用来解决很多不同的分类问题。

“机器学习”是一个涵盖性术语,覆盖了大量类似的泛型算法。

两类机器学习算法你可以认为机器学习算法分为两大类:监督式学习(Supervised Learning)和非监督式学习(Unsupervised Learning)。

两者区别很简单,但却非常重要。

监督式学习假设你是一名房产经纪,生意越做越大,因此你雇了一批实习生来帮你。

但是问题来了——你可以看一眼房子就知道它到底值多少钱,实习生没有经验,不知道如何估价。

为了帮助你的实习生(也许是为了解放你自己去度个假),你决定写个小软件,可以根据房屋大小、地段以及类似房屋的成交价等因素来评估你所在地区房屋的价值。

你把3个月来城里每笔房屋交易都写了下来,每一单你都记录了一长串的细节——卧室数量、房屋大小、地段等等。

但最重要的是,你写下了最终的成交价:这是我们的“训练数据”。

我们要利用这些训练数据来编写一个程序来估算该地区其他房屋的价值:这就称为监督式学习。

你已经知道每一栋房屋的售价,换句话说,你知道问题的答案,并可以反向找出解题的逻辑。

为了编写软件,你将包含每一套房产的训练数据输入你的机器学习算法。

算法尝试找出应该使用何种运算来得出价格数字。

这就像是算术练习题,算式中的运算符号都被擦去了:天哪!一个阴险的学生将老师答案上的算术符号全擦去了。

看了这些题,你能明白这些测验里面是什么样的数学问题吗?你知道,你应该对算式左边的数字“做些什么”以得出算式右边的答案。

在监督式学习中,你是让计算机为你算出数字间的关系。

而一旦你知道了解决这类特定问题所需要的数学方法后,你就可以解答同类的其它问题了。

非监督式学习让我们回到开头那个房地产经纪的例子。

要是你不知道每栋房子的售价怎么办?即使你所知道的只是房屋的大小、位置等信息,你也可以搞出很酷的花样。

这就是所谓的非监督式学习。

即使你不是想去预测未知的数据(如价格),你也可以运用机器学习完成一些有意思的事。

这就有点像有人给你一张纸,上面列出了很多数字,然后对你说:“我不知道这些数字有什么意义,也许你能从中找出规律或是能将它们分类,或是其它什么-祝你好运!”你该怎么处理这些数据呢?首先,你可以用个算法自动地从数据中划分出不同的细分市场。

也许你会发现大学附近的买房者喜欢户型小但卧室多的房子,而郊区的买房者偏好三卧室的大户型。

这些信息可以直接帮助你的营销。

你还可以作件很酷的事,自动找出房价的离群数据,即与其它数据迥异的值。

这些鹤立鸡群的房产也许是高楼大厦,而你可以将最优秀的推销员集中在这些地区,因为他们的佣金更高。

本文余下部分我们主要讨论监督式学习,但这并不是因为非监督式学习用处不大或是索然无味。

实际上,随着算法改良,不用将数据和正确答案联系在一起,因此非监督式学习正变得越来越重要。

老学究请看:还有很多其它种类的机器学习算法。

但初学时这样理解不错了。

太酷了,但是评估房价真能被看作“学习”吗?作为人类的一员,你的大脑可以应付绝大多数情况,并且没有任何明确指令也能够学习如何处理这些情况。

如果你做房产经纪时间很长,你对于房产的合适定价、它的最佳营销方式以及哪些客户会感兴趣等等都会有一种本能般的“感觉”。

强人工智能(Strong AI)研究的目标就是要能够用计算机复制这种能力。

但是目前的机器学习算法还没有那么好——它们只能专注于非常特定的、有限的问题。

也许在这种情况下,“学习”更贴切的定义是“在少量范例数据的基础上找出一个等式来解决特定的问题”。

不幸的是,“机器在少量范例数据的基础上找出一个等式来解决特定的问题”这个名字太烂了。

所以最后我们用“机器学习”取而代之。

当然,要是你是在50年之后来读这篇文章,那时我们已经得出了强人工智能算法,而本文看起来就像个老古董。

未来的人类,你还是别读了,叫你的机器仆人给你做份三明治吧。

让我们写代码吧!前面例子中评估房价的程序,你打算怎么写呢?往下看之前,先思考一下吧。

如果你对机器学习一无所知,很有可能你会尝试写出一些基本规则来评估房价,如下:Python1 2 3 4 5 6 7 8 91011121314151617181920212223242526 27def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): price = 0# In my area, the average house costs $200 per sqftprice_per_sqft = 200if neighborhood == "hipsterton":# but some areas cost a bit moreprice_per_sqft = 400elif neighborhood == "skid row":# and some areas cost lessprice_per_sqft = 100# start with a base price estimate based on how big the place isprice = price_per_sqft * sqft# now adjust our estimate based on the number of bedroomsif num_of_bedrooms == 0:# Studio apartments are cheapprice = price — 20000else:# places with more bedrooms are usually# more valuableprice = price + (num_of_bedrooms * 1000)return price假如你像这样瞎忙几个小时,也许会取得一点成效,但是你的程序永不会完美,而且当价格变化时很难维护。

相关主题