机器学习想做深、做专、做出品味来,需要对编程、算法、数学和计算机分布式技术等领域有一定的掌握。故此路和以往的技术升级相比,门槛提高了许多。编程,精通不是必要条件,但一定要熟练应用一门语言,非专业人士也可以学习;数学,需要掌握概率论、线性代数和微积分等基本理论;计算机分布式技术,可选项,不是必需的。
另外还有一个就是统计,统计和大数据的源头都是对数据的分析,因为统计是一门有很深理论基础的学问,所以了解统计的知识,对增强数据的分析能力是有帮助的,而且也能避免掉到坑里。不是入门的必选,但是迈向高级阶段的必修课。
本人也是一名在这条路上摸索的程序猿,有幸的是目前的工作内容也在相同方向上,可以多些时间和精力的投入。写此教程,一是学习的总结,为自己设定一个可以衡量的目标,自我监督;二是结交同道的伙伴们,共同成长。
本系列文章的核心思想只有一个:
以动手实战带动理论的学习
本教程的开发,将遵从敏捷实践,一开始可能会有很多不准确、不严谨的地方,希望大家多批评指正,不断完善。
程序猿学习新技术,第一个问题就是用什么语言?考察过R语言、Java和Python,最终选择了Python。作为程序猿,出生于统计学的R一来就被毙了,Python和Java相比,区别是很明显的,在入门学习这块,Python是学习资料和工具最多的。所以从学习的角度讲,先用python吧。以后实际工作和产品研发再用Java也不迟,没有太大影响的。一旦掌握了算法和思路,语言只是工具而已。
机器学习的资料,知乎上有很多,还可以百度一下。各种文章多得就像娱乐版的明星新闻一样。这里就只说下我现在学习过的资料,仅供参考:
书:《机器学习实战》(https://book.douban.com/subject/24703171/),尽管有说代码写得不好,数学理论介绍不够详尽的差评,但是完全满足实战的需求。
此书特点:各主流算法只介绍了基础原理部分,虽然数学部分论述简略,但是我们可以通过相应的知识点去知乎、百度或Google上补充。某些大而全的书,虽然都讲了,但似乎又什么都没讲;另外,就是大量基于Python的练习题,并且附有参考代码哦~。
视频:看过最火爆的Andrew Ng的视频,看了几次课就没看了。主要是自己需要的是一个有快速反馈(动手练习)的学习过程,所以只有等以后再继续“拜看”了。上了“小象”的2017年1月的机器学习课程,避免广告不多讨论。“书非买不能读”呀~,花了钱的才能逼着自己前进。
数学:又把大学的教材买了一套回来,有概率论、线性代数和高等数学。需要的同学可以到“闲鱼”二手货上面看看。主要作为参考用书,看到不懂的公式复习一下。有空的同学呢,最好还是再完整温习一遍。
接下来的部分是Python有关机器学习的工具和数学库的介绍,大家可以先准备下学习环境:
1. Anaconda,https://www.continuum.io/anaconda-overview。这是一个集成了python运行环境、机器学习所需的依赖库和代码编辑器的安装程序。对于快速搭建学习环境,安装这一个就够了。Python选择安装2.7版本的,因为网上大量的示例和代码都是基于2.7的。
2. Python语言学习,网上2.7的教程很多,重点了解下语法、方法和数据结构,其它的内容都可以等到以后用到的时候再学习。
好了,准备工作就这些,今日练习:
- 下载并安装Anaconda,熟悉使用ipython交互环境
- Python语言基础入门自学
【本文为51CTO专栏作者“吴思楠”的原创稿件,转载请通过51CTO联系作者获取授权】