刚接触机器学习这一个月我都做了什么?
这一个月,从对机器学习充满好奇与畏惧,到对各种算法稍有理解以及围绕推荐场景的编码实践,算是对机器学习有了一个入门的体验。但是中间也踩过不少坑,比如啃过线性代数的教材、看过无聊的机器学习课程、追过高端的机器学习书籍、陷入一个算法无法自拔(最后也没整明白)...其实,学习机器学习没有那么难,也很容易走偏。谨以此文,作为ML入门小白的一个小小的参考...
本篇虽不是这一个月的流水账,但是基本按照下面的思路对着一个月做了一次总结:
- 什么是机器学习?
- 机器学习都有什么算法?
- 个人对机器学习的三种境界理解
- 推荐的学习路线
- 推荐资源
希望读者有所收获,另外,如果文中有任何理解上的错误,还望指正!
什么是机器学习?
之前在没有具体接触到机器学习前,我大概对他有一个概念上的认识,觉得是一种很高级的算法,能让机器学会很多的事情,就像...《我的机器人女友》里那样!
或者是《机械公敌》里的智能机器人?...
但是,这些其实都是对机器学习的一种误解。机器学习并不是让机器像人一样会学习,而是通过一种固定的编程模式,对数据进行处理。按照百度的定义,它是这样的:
专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
其实机器学习就是通过一些前人总结的数据公式,帮我们简化了很多手工操作很麻烦甚至无法操作的事情。就举个身边很常见的例子,当你在淘宝搜索了某个宝贝后,之后的商品页面会为你推荐跟这个搜索相关的商品;再比汽车在经过司机的一段驾驶后,汽车自己能基于道路状况自动调整方向盘以及车速,实现无人驾驶;再如,家里的热水器会记录你使用热水的时间,提前一段时间烧水,而在其他时间不加热,以节省水电。这些都是机器学习,都是身边已经出现或者即将出现的场景,所以,机器学习其实就在我们身边。
机器学习都有哪些算法?
在机器学习中,算法可以按照多种维度进行分类,比如监督学习、无监督学习、强化学习等...让人看着就眼晕。
记得有一篇文章总结的就非常易懂,他认为机器学习其实可以分成三类,分类、回归、聚类。
- 分类听着名字就很容易理解了,比如给你一筐水果,水果里面有苹果、香蕉,需要把它们分成两类。
- 回归来源于单词regression,它可以理解成是一种预测,比如线性回归,他可以根据样本数据学习出一个线性的公式,比如y=ax,当你给定一个x的值时,可以推算出对应的y值。当然具体的场景中,就不是简单的一维了...
- 聚类,跟前面的分类有些不同,比如一筐水果,你都不知道里面装的是什么,需要通过味道、颜色、形状、大小等多个属性,把它们进行归类。
结合到算法里面:
- 分类相关的算法有:K-近邻算法、决策树、朴素贝叶斯、逻辑回归、支持向量机等
- 回归相关的算法有:线性回归、树回归等
- 聚类相关的算法有:K-均值算法、Apriori等
如果看过一遍《机器学习实战》,应该就会对上述的算法有一定的了解。不需要到公式推导级别,先能了解他们的用法即可,比如:
K-近邻
就是已知几个分类,判断新的节点属于哪个分类时,只需要看距离它一定范围内,哪个分类的数据多。有点像近朱者赤近墨者黑的意思。决策树
就是通过一大堆的问题,判断属于哪个分类。比如,相亲的时候,会问“你是做什么的?”“有没有房?”“有没有车?”——最后判断,是否继续交往。朴素贝叶斯
看着名字高大上,其实就是根据概率选择,属于哪个分类的概率大,就归属这个分类逻辑回归
它是把线性回归的结果映射到01区间线性回归
可以简单的理解成y=ax,但是其实在多维空间比这个复杂得多K-均值
就是一大堆散落的点,随机几个中心,这些点按照距离选择他们最近的中心组成一个类别Apriori
只要说一个啤酒与尿布
,大家就应该明白了。
这么多算法其实只是机器学习中的一部分....
机器学习的应用场景
机器学习的应用还是很广泛的,比如无人驾驶、机器人等等高大上的东西,以及咱们身边的拼车算法、电商的个性化推荐、婚恋网站的快速配偶等等。只要是涉及到数据之间的关系,都可以使用机器学习来达到很好的效果。
个人理解的机器学习的三种境界
这三种境界纯粹是个人的胡乱设定,仅仅是为了给自己的学习定下一个目标!
第一层 了解算法的过程和作用
这种一般是那些自学机器学习的朋友,在看过几本机器学习相关的书籍后,对所有的算法都有一点了解。能跟别讨论一些机器学习的算法和用途,并且能理解相关技术分享大致过程。
第二层 能把算法运用到实践中
这一层可以认为是对某个机器学习的库比较熟悉,能真正的利用机器学习来解决一些问题。比如可以使用Spark MLLib中的某个算法解决实际的问题,如基于物品或者用户的协同过滤算法。这就好像是使用现代的机械工具盖房子,而不是像过去纯人工搬石头垒长城,效率和产出上都要好的多。
第三层 对算法的推导融会贯通
这种可以说是集数学与计算机功底于一身,是倚天剑与屠龙刀的合体。对数学公式推导了如指掌,各种模型的优化也深谙其道。其实机器学习使用某个库出一个简单的效果很简单,但是想要对算法模型进行优化却很难,大多时候都是盯着算法结果,目瞪口呆,不知道下一步该怎么办。如果对算法了解的很深,对实际的业务又很熟悉,那么就能结合两点对算法模型进行优化,改进机器学习的结果。
个人学习机器学习的路线规划
经过不到一个月的学习,对机器学习也算是初步有了一定的了解,最起码知道机器学习能干什么了,所以现在还在处于上面的第一个境界....
这期间也走了不少的弯路,浪费了不少的时间。所以在这里总结一下,也给大家当做一个参考:
- 1 最快的入门方式,就是先百度、必应一下,了解下机器学习的概念。
- 2 推荐阅读《机器学习实战》了解下机器学习相关的算法。我之前也看过机械工业出版社的《机器学习》、也看过点周志华老师的《机器学习》,前一本概念太多,后一本公式也挺多。《机器学习实战》相对来说要好得多,先介绍点理论背景,在基于python介绍下算法的实现以及一两个案例。
- 3 很多人都觉得机器学习需要很好的数学功底,于是学习机器学习前,先捧着高数、线代、概率论看,结果看了两天,觉得枯燥无味,就打算放弃。其实没必要的,结合上面的《机器学习实战》,遇到什么公式,进行相应的复习就行了,这也是为什么把数学放在第三个步骤。其实机器学习里面能理解高数的求导、线代的矩阵以及向量、概率的期望方差等就差不多了,其他有需要的话针对学习就行。
- 4 学习机器学习肯定是要看吴恩达老师的公开课了,公开课的地址,我刚看了两集,感觉还是非常不错的。
- 5 学习Spark MLLib相关的算法实现,如果有时间的话,可以看看源码。
通过上面的学习,暂时可以到达第二个层次了。我想一般搞计算机的,应该很少有能对各种算法推导融会贯通的。所以第三种境界,就留给其他人吧....
推荐资源
1 《机器学习实战》
- 推荐指数:★★★★★
- 推荐理由: 理论、算法都有,比较好懂
- 推荐指数:★★★★☆
- 推荐理由:权威大拿带你飞,还有什么理由不上车?
3 《推荐系统实践》
- 推荐指数:★★★☆☆
- 推荐理由:如果是想做个性化推荐,那么必须要看看这本书!
4 Spark MLLib官方文档以及example代码样例
- 推荐指数:★★☆☆☆
- 推荐理由:官方文档大体上知道有什么内容就行,主要是推荐看看example里面提供的代码,能帮助少走不少弯路。