2018年的最后一个月(11月末至12月末)我参与研究基于机器学习与深度学习算法的大地电磁反演项目。通过这一个月的学习研究,一方面熟悉、掌握了使用Tensorflow框架结合scikit-learn构建、训练神经网络的方法,另一方面更系统地学习了更广泛的机器学习的相关算法。
深度学习
Tensorflow是我使用的深度学习框架工具,Tensorflow目前提供tf.keras
和tf.estimator
两个主要的高层API(是的,独立的keras API已经被默认包括在Tensorflow里面。)平日一直使用的是Keras,由于想要结合AutoML的概念,使用AdaNet工具进行神经网络的自动优化,就学习使用AdaNet要求的Estimator API。
机器学习
The Hundred-Page Machine Learning Book 是这一个月使用的主要学习材料,这本书篇幅短小,内容精炼,在内容的深度和广度之间达到了完美的平衡,可以感受到该书与普通堆叠概念方法的教材之间的明显差异。
由于待解决的问题为多目标的回归问题,而出去Random Forest,大部分的机器学习算法(SVM、xgboost)本身都不支持多目标,因而试用了scikit-learn的sklearn.multioutput.MultiOutputRegressor
,但效果不佳。
下图为目前学习到机器学习算法思维导图:
dask
由于所使用的数据为正演生成的响应数据,为覆盖各种地层模型,生成数据量较大,使用pandas进行读取,scikit-learn进行预处理,全部数据被读取到内存中,内存容量接近饱和,几乎无法处理。dask能够处理大于内存容量的数据,它的目的是为了解决数据的分布式处理,它实现了pandas、scikit-learn的API,使用方便。同时,通过安装dask-xgboost,也解决了xgboost在windows系统下难以安装的问题。
推荐书目
Keras实际使用推荐阅读:
Keras作者Fancois Chollet编写的Deep Learning with Python
Scikit-learn中各种机器学习算法的实际使用方法除文档外可以参考:
Andreas Muller 与 Sarah Guido合著的Introduction to Machine Learning with Python: A Guide for Data Scientists
当然入门机器学习推荐:
The Hundred-Page Machine Learning Book