首页 > 代码库 > 机器学习--入门答疑
机器学习--入门答疑
刚接触机器学习这一个月我都做了什么?
这一个月,从对机器学习充满好奇与畏惧,到对各种算法稍有理解以及围绕推荐场景的编码实践,算是对机器学习有了一个入门的体验。但是中间也踩过不少坑,比如啃过线性代数的教材、看过无聊的机器学习课程、追过高端的机器学习书籍、陷入一个算法无法自拔(最后也没整明白)...其实,学习机器学习没有那么难,也很容易走偏。谨以此文,作为ML入门小白的一个小小的参考...
本篇虽不是这一个月的流水账,但是基本按照下面的思路对着一个月做了一次总结:
- 什么是机器学习?
- 机器学习都有什么算法?
- 个人对机器学习的三种境界理解
- 推荐的学习路线
- 推荐资源
希望读者有所收获,另外,如果文中有任何理解上的错误,还望指正!
什么是机器学习?
之前在没有具体接触到机器学习前,我大概对他有一个概念上的认识,觉得是一种很高级的算法,能让机器学会很多的事情,就像...《我的机器人女友》里那样!
<iframe id="iframe_0.487626053725037" style="border: currentColor; width: 20px; height: 20px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496760366724&di=1638888da03c3589c575b34452a0fb02&imgtype=0&src=http%253A%252F%252Fimg.ph.126.net%252FVrgCkRPo5uaX3Yv8mBEcVQ%253D%253D%252F3289316577841303763.jpg&_=6953696%22%20style=%22border:none;max-width:901px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById(‘img‘);%20window.parent.postMessage(%7BiframeId:‘iframe_0.487626053725037‘,width:img.width,height:img.height%7D,%20‘http://www.cnblogs.com‘);%7D%3C/script%3E" frameborder="0" scrolling="no" width="320" height="240"></iframe>
或者是《机械公敌》里的智能机器人?...
<iframe id="iframe_0.7847957656313467" style="border: currentColor; width: 20px; height: 20px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496760418673&di=4f29a6a832452073f3c98fddf77fe4ca&imgtype=0&src=http%253A%252F%252Fs11.sinaimg.cn%252Forignal%252F4a9c9c0ea0189a1defb9a&_=6953696%22%20style=%22border:none;max-width:901px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById(‘img‘);%20window.parent.postMessage(%7BiframeId:‘iframe_0.7847957656313467‘,width:img.width,height:img.height%7D,%20‘http://www.cnblogs.com‘);%7D%3C/script%3E" frameborder="0" scrolling="no" width="320" height="240"></iframe>
但是,这些其实都是对机器学习的一种误解。机器学习并不是让机器像人一样会学习,而是通过一种固定的编程模式,对数据进行处理。按照百度的定义,它是这样的:
专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
其实机器学习就是通过一些前人总结的数据公式,帮我们简化了很多手工操作很麻烦甚至无法操作的事情。就举个身边很常见的例子,当你在淘宝搜索了某个宝贝后,之后的商品页面会为你推荐跟这个搜索相关的商品;再比汽车在经过司机的一段驾驶后,汽车自己能基于道路状况自动调整方向盘以及车速,实现无人驾驶;再如,家里的热水器会记录你使用热水的时间,提前一段时间烧水,而在其他时间不加热,以节省水电。这些都是机器学习,都是身边已经出现或者即将出现的场景,所以,机器学习其实就在我们身边。
机器学习都有哪些算法?
在机器学习中,算法可以按照多种维度进行分类,比如监督学习、无监督学习、强化学习等...让人看着就眼晕。
记得有一篇文章总结的就非常易懂,他认为机器学习其实可以分成三类,分类、回归、聚类。
- 分类听着名字就很容易理解了,比如给你一筐水果,水果里面有苹果、香蕉,需要把它们分成两类。
- 回归来源于单词regression,它可以理解成是一种预测,比如线性回归,他可以根据样本数据学习出一个线性的公式,比如y=ax,当你给定一个x的值时,可以推算出对应的y值。当然具体的场景中,就不是简单的一维了...
- 聚类,跟前面的分类有些不同,比如一筐水果,你都不知道里面装的是什么,需要通过味道、颜色、形状、大小等多个属性,把它们进行归类。
结合到算法里面:
- 分类相关的算法有:K-近邻算法、决策树、朴素贝叶斯、逻辑回归、支持向量机等
- 回归相关的算法有:线性回归、树回归等
- 聚类相关的算法有:K-均值算法、Apriori等
如果看过一遍《机器学习实战》,应该就会对上述的算法有一定的了解。不需要到公式推导级别,先能了解他们的用法即可,比如:
K-近邻
就是已知几个分类,判断新的节点属于哪个分类时,只需要看距离它一定范围内,哪个分类的数据多。有点像近朱者赤近墨者黑的意思。决策树
就是通过一大堆的问题,判断属于哪个分类。比如,相亲的时候,会问“你是做什么的?”“有没有房?”“有没有车?”——最后判断,是否继续交往。朴素贝叶斯
看着名字高大上,其实就是根据概率选择,属于哪个分类的概率大,就归属这个分类逻辑回归
它是把线性回归的结果映射到01区间线性回归
可以简单的理解成y=ax,但是其实在多维空间比这个复杂得多K-均值
就是一大堆散落的点,随机几个中心,这些点按照距离选择他们最近的中心组成一个类别Apriori
只要说一个啤酒与尿布
,大家就应该明白了。
这么多算法其实只是机器学习中的一部分....
机器学习的应用场景
机器学习的应用还是很广泛的,比如无人驾驶、机器人等等高大上的东西,以及咱们身边的拼车算法、电商的个性化推荐、婚恋网站的快速配偶等等。只要是涉及到数据之间的关系,都可以使用机器学习来达到很好的效果。
个人理解的机器学习的三种境界
这三种境界纯粹是个人的胡乱设定,仅仅是为了给自己的学习定下一个目标!
第一层 了解算法的过程和作用
<iframe id="iframe_0.6767231962899118" style="border: currentColor; width: 20px; height: 20px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496762820907&di=a62e82382067a0b0c43fe6a1296ae23c&imgtype=jpg&src=http%253A%252F%252Fimg0.imgtn.bdimg.com%252Fit%252Fu%253D2887305698%252C4287853573%2526fm%253D214%2526gp%253D0.jpg&_=6953696%22%20style=%22border:none;max-width:901px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById(‘img‘);%20window.parent.postMessage(%7BiframeId:‘iframe_0.6767231962899118‘,width:img.width,height:img.height%7D,%20‘http://www.cnblogs.com‘);%7D%3C/script%3E" frameborder="0" scrolling="no" width="320" height="240"></iframe>
这种一般是那些自学机器学习的朋友,在看过几本机器学习相关的书籍后,对所有的算法都有一点了解。能跟别讨论一些机器学习的算法和用途,并且能理解相关技术分享大致过程。
第二层 能把算法运用到实践中
<iframe id="iframe_0.2769306124849995" style="border: currentColor; width: 20px; height: 20px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496763243344&di=688001151e3e993e038b18624d419650&imgtype=0&src=http%253A%252F%252Fwww.chinaeasypc.com%252Fuploads%252Fallimg%252F140710%252F1-140G00T949114.jpg&_=6953696%22%20style=%22border:none;max-width:901px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById(‘img‘);%20window.parent.postMessage(%7BiframeId:‘iframe_0.2769306124849995‘,width:img.width,height:img.height%7D,%20‘http://www.cnblogs.com‘);%7D%3C/script%3E" frameborder="0" scrolling="no" width="320" height="240"></iframe>
这一层可以认为是对某个机器学习的库比较熟悉,能真正的利用机器学习来解决一些问题。比如可以使用Spark MLLib中的某个算法解决实际的问题,如基于物品或者用户的协同过滤算法。这就好像是使用现代的机械工具盖房子,而不是像过去纯人工搬石头垒长城,效率和产出上都要好的多。
第三层 对算法的推导融会贯通
<iframe id="iframe_0.2655508278063443" style="border: currentColor; width: 20px; height: 20px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496763341593&di=10b2d86555a143a8887061f295c0c752&imgtype=0&src=http%253A%252F%252Fgame.china.com%252Fgbox%252Fxyttl%252Fbackground_img%252Fcf8a3b5a-cca1-40be-be2d-2ae8a9f425c8.jpg&_=6953696%22%20style=%22border:none;max-width:901px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById(‘img‘);%20window.parent.postMessage(%7BiframeId:‘iframe_0.2655508278063443‘,width:img.width,height:img.height%7D,%20‘http://www.cnblogs.com‘);%7D%3C/script%3E" frameborder="0" scrolling="no" width="320" height="240"></iframe>
这种可以说是集数学与计算机功底于一身,是倚天剑与屠龙刀的合体。对数学公式推导了如指掌,各种模型的优化也深谙其道。其实机器学习使用某个库出一个简单的效果很简单,但是想要对算法模型进行优化却很难,大多时候都是盯着算法结果,目瞪口呆,不知道下一步该怎么办。如果对算法了解的很深,对实际的业务又很熟悉,那么就能结合两点对算法模型进行优化,改进机器学习的结果。
个人学习机器学习的路线规划
经过不到一个月的学习,对机器学习也算是初步有了一定的了解,最起码知道机器学习能干什么了,所以现在还在处于上面的第一个境界....
这期间也走了不少的弯路,浪费了不少的时间。所以在这里总结一下,也给大家当做一个参考:
- 1 最快的入门方式,就是先百度、必应一下,了解下机器学习的概念。
- 2 推荐阅读《机器学习实战》了解下机器学习相关的算法。我之前也看过机械工业出版社的《机器学习》、也看过点周志华老师的《机器学习》,前一本概念太多,后一本公式也挺多。《机器学习实战》相对来说要好得多,先介绍点理论背景,在基于python介绍下算法的实现以及一两个案例。
- 3 很多人都觉得机器学习需要很好的数学功底,于是学习机器学习前,先捧着高数、线代、概率论看,结果看了两天,觉得枯燥无味,就打算放弃。其实没必要的,结合上面的《机器学习实战》,遇到什么公式,进行相应的复习就行了,这也是为什么把数学放在第三个步骤。其实机器学习里面能理解高数的求导、线代的矩阵以及向量、概率的期望方差等就差不多了,其他有需要的话针对学习就行。
- 4 学习机器学习肯定是要看吴恩达老师的公开课了,公开课的地址,我刚看了两集,感觉还是非常不错的。
- 5 学习Spark MLLib相关的算法实现,如果有时间的话,可以看看源码。
通过上面的学习,暂时可以到达第二个层次了。我想一般搞计算机的,应该很少有能对各种算法推导融会贯通的。所以第三种境界,就留给其他人吧....
推荐资源
1 《机器学习实战》
- 推荐指数:★★★★★
- 推荐理由: 理论、算法都有,比较好懂
2 机器学习 斯坦福 公开课
- 推荐指数:★★★★☆
- 推荐理由:权威大拿带你飞,还有什么理由不上车?
3 《推荐系统实践》
- 推荐指数:★★★☆☆
- 推荐理由:如果是想做个性化推荐,那么必须要看看这本书!
4 Spark MLLib官方文档以及example代码样例
- 推荐指数:★★☆☆☆
- 推荐理由:官方文档大体上知道有什么内容就行,主要是推荐看看example里面提供的代码,能帮助少走不少弯路。
出处:http://www.cnblogs.com/xing901022/p/6953696.html
机器学习--入门答疑