转行数据挖掘和机器学习(四)

IT资讯 3711 Views

目前从纯数学专业转行到机器学习领域已经有两年半了,又到了该总结转行经验和个人成长的时候。笔者在公司里面已经做过智能推荐系统智能安全系统智能运维系统。除此之外,笔者对量子计算等前沿内容也有所了解。不过,还是那句老话,大牛们请主动忽视以下内容,初学者可以用作参考。

1

编程语言

目前工业界的机器学习编程语言很多,基于个人的一些浅显的工作经验,发现目前比较常用的编程语言是 Python 和 SQL

通常来说,SQL 是为了从数据库中提取数据,然后进行必要的数据过滤,数据分析,数据提取。对于 SQL,需要掌握的内容有以下几点:聚合函数,数学函数,字符串函数,表格的连接函数,条件语句等。SQL 的经典教材有两本,分别是:

《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都有了》

2

机器学习

既然是做数据挖掘和机器学习的工作,那每个人都需要了解这方面的内容。在这里笔者推荐教材《机器学习实战》,作者是 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 算法等。这一个内容其实只写过一份网页版,后续会改成 ppt 的格式。

比逻辑回归算法还要简单的那就是线性回归算法了,目的都是针对连续型的数据进行预测,结果都十分容易解释。除了直接的线性回归之外,还有局部加权线性回归,岭回归,Lasso 和前向逐步线性回归等算法。这些细节可以参考文章《线性回归》

决策树 ID3,C4.5,CART 都是一些非常经典的算法,但是在工业界里面的使用场景不是很多。不过随着时间的推移和笔者对业务的理解,发现决策树在智能运维领域的根因分析上面有着独特的优势,正如这两篇文章所写的:《智能运维系统(一)》《根因分析的探索》

如果是针对转行的同学的话,那么大家肯定关心的是如何把之前的技能平滑地切入到新的领域中。如果学过数理统计的话,那么《最大似然估计》就是一个不错的切入点。

除了上面所说的算法,支持向量机算法(Support Vector Machine),GBDT 算法,随机森林算法,XgBoost 算法都是在工业界比较常见的算法。目前个人还没有对这类算法进行过总结,不过还是强烈建议大家去学习一下。2018年笔者应该会对这些算法进行一些个人的总结。

无监督学习算法也是整个机器学习领域的一大方向。提到无监督学习算法,就不得不提到聚类算法,其中最经典的还是 Kmeans 算法。这个可以参见文章《聚类算法(一)》《聚类算法(二)》。聚类算法的反面就是异常点检测算法,之前在异常点检测算法上面研究过一阵,也写过不少的文章。例如:

《异常点检测算法(一)》《异常点检测算法(二)》《异常点检测算法(三)》《异常点检测算法综述》

关联分析,也就是所谓的“啤酒与尿布”的故事。Apriori 和 FpGrowth 算法都有自己的优点和缺点,在智能运维里面经常会涉及到关联性的分析。无论是事件与事件的关联,时间序列与时间序列的关联,时间序列与事件的关联,都需要进行分析。之前微软也研究过《时序数据与事件的关联分析》,在这里分享给大家。

除此之外,强化学习也是机器学习的一个研究方向。随着 DeepMind 公司的 AlphaGo 打败围棋顶尖选手,能够自动玩游戏的智能 AI,强化学习已经成为了一个比较热门的研究方向。之前写过三篇关于强化学习的小文章《当强化学习遇见泛函分析》《用强化学习玩文本游戏》《深度学习与强化学习》供大家参考。

目前深度学习已经成为了机器学习的热门研究方向,无论是卷积神经网络 CNN 还是循环神经网络 RNN,都是研究的主流。之前在学习反向传播算法的时候,写过一篇如何基于 BP 算法训练 RNN 网络的文章《循环神经网络-Reccurent Neural Networks》

通常来说,循环神经网络是可以用来处理一些文本内容的,然后在这里也写过一篇文章来介绍文本里面的基本概念:《TF-IDF简介》

在现实社会中,社交网络已经成为了大家不可或缺的一部分,无论是在工业界还是学术界都有人对社交网络进行研究。之前也研究过 Google 的排序算法 PageRank 和其余的一些图算法,在这里也列举出来供大家参考《Graph Analysis and Its Application》

近些年,Google 等一些大公司也在大力发展量子计算,也有人进行量子计算与机器学习的研究,之前写过两篇科普性质的文章来介绍量子计算:《量子计算(一)》《量子计算(二)》

3

数理统计

数理统计方面还是有一些东西是蛮常用的。例如时间序列模型 ARMA 模型等。一些数据的指标,例如均值,方差,标准差,变异系数,相关系数,ROC曲线和AUC,召回率和正确率,交叉验证等。

除此之外,时间序列的异常检测在智能运维上面也有着自己的用武之地,例如对 KPI 曲线的异常检测和定位。有的学者也提过相应的方法《智能运维系统(二)》,里面用到了有监督的方法来进行时间序列的异常检测。

4

业务

在实际的工作中,最重要的一个因素就是理解业务,只有理解了业务的需求,才能够更好的完成领导所布置的任务。在做事情的时候,一定要形成闭环。那就是:了解业务需求-》调研业界方案-》查看是否适用-》上线效果。通过最终的效果和我们要做成的目标,来反推当前需要做的事情。一些学生时代的思维方式需要逐渐抛弃,参考文章:《开公众号之后的一些感想》

相关文章推荐:

1.转行数据挖掘和机器学习

2.当强化学习遇见泛函分析

3.特征工程简介

4.循环神经网络

5.聚类算法(一)

6.异常值检测算法(一)

7.异常值检测算法(二)

8.HIVE基础介绍

欢迎大家关注公众账号数学人生

(长按图片,识别二维码即可添加关注)

如未说明则本站原创,转载请注明出处:NULL » 转行数据挖掘和机器学习(四)