回头看一下,目前已经从纯数学专业转行到数据挖掘和机器学习领域有一年半了,又到了该总结转行经验的时候。还是那句老话,大牛们请主动忽视以下内容,初学者可以用作参考。
目前工业界的机器学习编程语言很多,基于个人的一些浅显的工作经验,发现目前比较常用的编程语言是 Python 和 HIVE。
通常来说,HIVE 是为了从数据库中提取数据,然后进行必要的数据过滤,数据分析,数据提取。对于 HIVE,需要掌握的内容有以下几点:聚合函数,数学函数,字符串函数,表格的连接函数,条件语句等。HIVE 的经典教材有两本,分别是:
《HIVE编程指南》,作者 Edward Capriolo
《SQL基础教程》,作者 Mick
PS:个人特别喜欢《SQL基础教程》,极易上手,易学易通。之前写过一篇文章总结 HIVE 的使用细节,提供给大家做参考:《HIVE基础介绍》
对于编程语言 Python 来说,目前深度学习的框架 Tensorflow 等,都可以使用 Python 进行编程。除此之外,Python 还有各种各样的数值计算库和机器学习库等着大家去使用,例如 Numpy,Scipy,ScikitLearn,matplotlib 等。其中,Scikitlearn 的文档是非常详细的,特别适合初学者入门学习。至于 Python 教材的话,其实有很多,例如:《Python基础教程》,作者是 Magnus Lie Hetland,这本书特别适合初学者看。如果是网络教材的话,推荐参考 廖雪峰 的官方网站,地址是:http://www.liaoxuefeng.com/
至于开发环境的话,一般来说公司都会使用Linux,有一本书可以提供给大家做参考:《Linux命令行与Shell脚本编程大全》,作者 Richard Blum/ Christine Bresnahan
既然是处理大数据,那么 MapReduce,Hadoop,Spark 等内容需要了解。参考文章:《一文看懂大数据的生态技术圈,Hadoop,Hive,Spark都有了》
既然是做数据挖掘和机器学习的工作,那每个人都需要了解这方面的内容。在这里笔者推荐教材《机器学习实战》,作者是 Peter Harrington。阅读这本书需要读者掌握 Python 语言,加上 Numpy,Scipy,matplotlib 函数库的一些基础内容。源代码的话可以在网上找到,然后根据书本的章节逐步学习即可。
除了《机器学习实战》之外,周志华老师所写的《机器学习》西瓜书也是不错的选择。建议初学者结合这两本书一起学习,周志华老师的《机器学习》介绍了多种机器学习算法,并有简单的例子和数学原理进行描述。
既然提到了机器学习,那就简单地总结一下里面的一些算法吧。
如果是做推荐业务的团队,那么使用地最多的还是逻辑回归算法(Logistic Regression),ItemCF 和 UserCF,物质扩散和热传导算法(Heat Spreading) 算法。由于 LR 是使用线性的方法来处理非线性的问题,并且实际的环境中会有物品的特征和用户的特征,因此会导致特征工程比较复杂,交叉项多(二维或者三维的交叉)。因此,在实际的工作中,特征工程的作用就显得十分重要。工程师和业务人员要根据物品和用户进行必要的特征构造,形成物品特征,用户特征,交叉特征等。之前也写过一篇文章《特征工程简介》,供大家参考。
除此之外,涉及到在线优化的问题,Google 在几年前提出了一个 FTRL 算法。论文是 Ad Click Prediction a View from the Trenches,里面会涉及 SGD 算法,Truncated Gradient 算法,RDA 算法,FOBOS 算法,以及最终的 FTRL 算法等。
比逻辑回归算法还要简单的那就是线性回归算法了,目的都是针对连续型的数据进行预测,结果都十分容易解释。除了直接的线性回归之外,还有局部加权线性回归,岭回归,Lasso 和前向逐步线性回归等算法。这些细节可以参考文章《线性回归》。
如果是针对转行的同学的话,那么大家肯定关心的是如何把之前的技能平滑地切入到新的领域中。如果学过数理统计的话,那么《最大似然估计》就是一个不错的切入点。
除了上面所说的算法,支持向量机算法(Support Vector Machine),GBDT 算法,随机森林算法,XgBoost 算法都是在工业界比较常见的算法。目前个人还没有对这类算法进行过总结,不过还是强烈建议大家去学习一下。2017年笔者应该会对这些算法进行一些个人的总结。
无监督学习算法也是整个机器学习领域的一大方向。提到无监督学习算法,就不得不提到聚类算法,其中最经典的还是 Kmeans 算法。这个可以参见文章《聚类算法(一)》。聚类算法的反面就是异常点检测算法,之前在异常点检测算法上面研究过一阵,也写过不少的文章。例如:
《异常点检测算法(一)》,《异常点检测算法(二)》,《异常点检测算法(三)》,《异常点检测算法综述》。
除此之外,强化学习也是机器学习的一个研究方向。随着 DeepMind 公司的 AlphaGo 打败围棋顶尖选手,能够自动玩游戏的智能 AI,强化学习已经成为了一个比较热门的研究方向。之前写过一篇关于强化学习和泛函分析的小文章《当强化学习遇见泛函分析》,供大家参考。
目前深度学习已经成为了机器学习的热门研究方向,无论是卷积神经网络 CNN 还是循环神经网络 RNN,都是研究的主流。之前在学习反向传播算法的时候,写过一篇如何基于 BP 算法训练 RNN 网络的文章《循环神经网络-Reccurent Neural Networks》。
数理统计方面还是有一些东西是蛮常用的。例如时间序列模型 ARMA 模型等。一些数据的指标,例如均值,方差,标准差,变异系数,相关系数,ROC曲线和AUC,召回率和正确率,交叉验证等。
在实际的工作中,最重要的一个因素就是理解业务,只有理解了业务的需求,才能够更好的完成领导所布置的任务。在做事情的时候,一定要形成闭环。那就是:了解业务需求-》调研业界方案-》查看是否适用-》上线效果。通过最终的效果和我们要做成的目标,来反推当前需要做的事情。一些学生时代的思维方式需要逐渐抛弃,参考文章:《开公众号之后的一些感想》。
欢迎大家关注公众账号数学人生
(长按图片,识别二维码即可添加关注)