浅谈机器学习从入门到进阶

知识体系完整科班出身的在校生及诸位大神请跳过此篇。。。

作为一位半路出家(当然不是削发为僧,不过既然要当程序员,头发也是留不住的)没有科班经历,想涉足机器学习这摊浑水的,可以参考一下这份人生经验。

鄙人作为一位从地质勘探行业(从几百米的井下)走出的青年失业研究生,自己探索自学ML这条不归路已一年多,来这家正经公司搞正经的机器学习也足足八个月了(PS: 后来发现并不正经,但是这是另一回事了)。在机器学习的知识领域上可以说是。。。啥都不会,因为这个领域实在是太复杂太艰难了。当然,这是站在现有的角度看,自己缺乏的知识太多,学也学不完,那么找到这份工作究竟需要哪些技能呢?此问题一。

然后,问题二,初级阶段的入门及学习路线是怎样的。

在上述两个问题之后,你应当能够进入工业界去搬砖,感受工业界的黑暗现实一片繁荣。

那么第三个问题来了,机器学习的落地应用,或者说工作内容包括哪些方面呢?做项目需要注意什么呢?我们应该如何看待这些工作方向?

最后,第四个问题,如何在工作稳定后(毕竟是半路出家,熟悉业内,工作稳定下来还是不容易的)规划进一步的学习和方向选择。


第一个问题, 工作的技能窃以为包括这么几个方面。一是编程基本功,要比较熟悉一门语言,如果没有基础,学python就行,写个简单的问题,或者简单的考察个数据结构看你对算法(当然这个不是机器学习的算法)复杂度的理解,注不注意数据结构各公司估计都不一定;二是机器学习理论知识的理解,包括几大主要算法(就那几种就ok,线性模型,决策树,svm,EM,集成方法更重要)的原理和应用场景,数据处理,特征工程和模型诊断(欠拟合、过拟合)等,未工作前有一些数据竞赛的项目经验是最好的,或者是自己做过公开的数据集,对神经网络等有一些了解也是很有必要的,不过面试时不一定考察;技能三,应该是对具体问题的分析能力,或者说针对一个实际场景的问题,如何提出模型建立的思路、解决方案(当然不是产品从上线到运营的方案,而是从数据处理,特征提取到模型构建的完整思路),这一点在工作经验不多或者未工作时,并不容易,也建议从数据竞赛中学习一个,毕竟数据竞赛的场景比较真实。

第二,关于学习路线,大道理不讲,个人推荐的路线是:

一期:吴恩达的ML课程(该课程没有配套书籍,可以看看其他入门书并行了解) + python语言入门,精学是你应该具备的基本功,否则你还报班去吧,ML课程的编程作业需要认真思考,吴大师中四五课讲神经网络的课程也是十分有益,所以这门课不能放过任何一个细节,另外python语言的学习是一个长期的过程,二期将继续;

二期:网上算法学习的视频(稍微找找就有,不用报班),推荐七月在线邹博的课程或者小象学院或者其他讲解算法原理的公开课,配套书籍李航大神的《统计学习方法》+ python 语言继续学习(做PTA上的练习题);解释一下,在一期,你对机器学习的概念应该了解了,基本的原理明白并且通过课后作业深入体会了ml的大致样子,在这一阶段,配套统计学习方法中对算法的深入剖析,听各种课程推导该书中主要的公式,这是十分艰难的阶段,学到什么样子不好说,但是课程和这本书啃一下很有必要,自己选择关键的学习内容,概率图模型初级阶段一般是不太重要的(或者说还不到时候),而决策树这样的吴大师的课程没有,需要多学习,一些关键的公式推导,面试中还是很可能考察的;另外,python如果是你的第一门语言,编程的基本功需要继续下功夫,多做题,如果学过其他语言,你应该知道怎么办的哈。

三期:开始实践,拿起练好的python,准备搞模型吧!有这样几种学习内容,一是看一些网上多得是的机器学习实践课程,二期的时候你可能也听了,都可以;二是跟着这种实践课程提供的数据集,或者比较有名的数据集按照教程开始整;三是找一些中低难度的数据竞赛,稍微体验一下数据处理、特征工程的过程,体验工业上用机器学习在解决什么问题,比如预测血糖(可以看我的微博),比如预测用户消费行为等,通过比分和排名,看到自己的差距,多使用一些方法去尝试。四是,此时需要你认真了解一下sklearn的工具包,numpy, pandas,可视化matplotlib等。

四期:此时希望你有工作了或实习了。。当然此时还可以学一些更多的东西。一是数据结构与算法(这个就够学一段时间了)并刷题,简单的掌握链表,树,查找和排序是十分必要的;二是深度学习的知识,更多了,由浅入深,建议有计划的学习,另起一条主线;三是爬虫,python的爬虫也很简单,也是将来的一项重要技能,建议学一学;四是一些很杂的东西,比如linux系统命令、shell编程、git工具、中文自然语言处理及文本向量化的一些知识。

自己的路线啰啰嗦嗦说完了,下面推荐几个介绍学习路线的博客:

人工智能之机器学习路线图

机器学习(Machine Learning)&深度学习(Deep Learning)资料

大量机器学习(Machine Learning)&深度学习(Deep Learning)资料


后面两个话题是工作后的主要想法。

第三个问题,以粗略的眼界看,几大方向是视觉/图像,广告/搜索,推荐,NLP,策略,风控等等。方向之间难免有交叉,比如推荐中可能面对大量NLP方向的问题,或者说NLP是智能产品的基础。

个人目前从事策略,但是收效甚微。策略,类似于外卖派单策略的项目在做,也有许多针对公司营销的策略制定,不过,从算法组去推动策略比较难,从业务线方面,自上而下没有形成策略推动的体制,窃以为需要业务方面打通任督二脉,再将算法制定的策略应用上去才可行。目前鄙人已对策略死心。。这方面的项目,关键是了解业务,提出有效的解决方案(即数据处理、模型算法思路),模型方面不会用太复杂的,xgboost一类的即可,能得到不错的auc将模型落地应用才是重点,这是这一方向的关键吧,也有待商榷,毕竟业务如果十分复杂,模型方面也会有比较大的挑战。另外注意的一点是,项目涉及到很复杂的工程问题,我们公司是算法的也负责工程,java十分头疼;成型的公司往往算法和工程分开的。

在策略之外,目前刚接触NLP领域,虽然分词也算,但是我们指的还是具体的应用,比如客服机器人一类的应用,可以节省企业一大块人力吧。该领域相较图像,算是很容易上手的,目前鄙人正在入门,学习聊天机器人的相关理论,前路漫漫。这方面,模型上不使用个HMM,CRF,LSTM这些是不行的啦。

风控也算是听的多了,是在金融贷款方面很实际的一个方向,据说,也就是使用工业界的神器xgboost,关键在于数据和特征吧,十分接地气,机器学习入门的盆友可以考虑相关方向的工作先来着。

其他方向都不熟悉啦,不过也都应用广泛,知识体系庞大,前途一片光明。。。

最后一点,谈谈规划。入门,入行后,需要学习的东西太多了。技术方面知识体系还是要完整要扎实,工程方面web服务,java,数据库也要积累知识,方向上,不愿意搞策略,但是有好的场景还是可以搞,最好是当了leader后,NLP方面打算认真的研究一番,跟上前沿,趁着早现在也还可能进入推荐等方向,抓好机会。

以上,剧终,祝看到本文的机器学习小伙伴,前途似锦。

你可能感兴趣的:(个人感想,机器学习,机器学习,入门,进阶,NLP)