上手机器学习系列-第1篇-聊聊机器学习的正确打开姿势
前言
机器学习是一个充满乐趣的领域,也是一门动手性比较强的学科。就像掌握一类乐器一样,懂得乐理肯定是必要的,但反复练习,多动手实践,才能学好这门手艺。现在讲机器学习算法理论的材料已经很多了,而本系列突出以下特点:
- 注重代码实践,把机器学习的概念动手实现出来;
- 注重介绍大数据生态内与机器学习相关的技术,使得入门者可以了解在企业实际工作中相关岗位上都有哪些工作需要去做;
- 注重资源推荐,很多知识点是需要多个参考资料相互印证着来看,从不同角度去思考,会收获更深入的理解。
本篇相当于预备篇,先从学习思路和方法上进行一个探讨,做一些热身准备。就像在企业中的实际工作一样,不要拿到一个问题上来就去写代码,而是要先思考,多琢磨,从思想上想通了,再动手就会事倍功半。
机器学习学什么
现如今各种软件的package做的越来越好,其实只要随便找一本书来照着写几个程序,就可以初步对机器学习有了一些了解。但这是一门实践性较强的科学,需要在掌握概念的基础上,多动手去写代码,甚至是多用一些不同的实现方案去感受里面的差异点与共通性,然后反复琢磨其中的奥秘,唯有此才能算是真的学好了这门功课。笔者认为,对于以后想从事相关岗位的同学而言,宜从以下几个方面来思考如何去掌握机器学习。
- 数学原理。把很多计算机科学的应用一层一层剥开,就会发现里面的内核其实是数学思想。因此我们强烈建议同学们在学习机器学习过程中,一定要关注每个算法用了什么数学思想, 然后多花点时间去琢磨下其中的数据推导过程,这个过程对深入理解算法的产生、优化过程非常有益;
- 编程接口。机器学习是一门应用科学,光知道原理是没有用的,必须要能在实践中应用并产生价值。其实从“知道”到“产生价值”中间隔着非常大的距离。学习这门课一定不要停留原理上,要动手去编程,去下载一些开源的数据集来进行实践;现在各种编程语言中基本都有一些内置的机器学习package了,但从应用范围及好用度来讲,对于入门者还是最推荐Python、R这两个生态。有精力的同学还可以去看看Julia、Scala这些生态,也挺有趣;
- 上下游技术。大数据领域存在一个说法,即数据科学家60%的时间其实是花在了数据预处理阶段。这里推荐大家去关注**“特征工程”**这样一个领域。在实际工作中,模型对输入的数据会有很多要求,包括:1)特征变量的有效性,是否存在共线性,维度的多少等;2)数据质量,例如缺失值占比,异常值的大小,是否进行数据标准化等;3)输入、输出的数据格式,不同机器学习平台可能会有差异很大的数据格式要求,这一部分也是需要使用者自己来加工;
- 优势与劣势。要学会用历史发展的眼光去看每一个机器学习模型的产生、发展,尤其是每个模型存在什么样的不足,后人对此做了哪些改进。
用结构性思维来快速掌握模型的要点
不管学什么领域,要先形成一个框架,然后用这个框架去套每一个具体的实现方法,就可以快速掌握每个方法的要点是什么,与其它方法的差异点在哪里。在学习一个新的模型时,可以问自己以下几个问题:
这个模型
- 要解决的问题是什么?
- 定义的目标函数是啥?
- 怎么求解这个目标函数?
- 该方法的计算复杂度是怎样的?
- 在Python或R中怎么编程实现?
- 如果在分布式平台中实现,怎么办?
预备资料推荐
本期推荐以下参考资料,多读点相关的领域知识,有助于更接近工业界对机器学习岗位真实的工作要求。
《深入浅出统计学》
《精通特征工程》
《图解机器学习》
《数据库原理》
下期预告
从下期开始,我们就正式开始动手了,一步一步把机器学习相关的方法用编程的方法实践出来。希望读者能持续关注本系列哦!
公众号
欢迎关注本人公众号,共同交流学习:
交流群
为方便大家交流与提问,可加入以下微信群或QQ群: