2018年的最后一個(gè)月(11月末至12月末)我參與研究基于機(jī)器學(xué)習(xí)與深度學(xué)習(xí)算法的大地電磁反演項(xiàng)目谁鳍。通過這一個(gè)月的學(xué)習(xí)研究赊舶,一方面熟悉、掌握了使用Tensorflow框架結(jié)合scikit-learn構(gòu)建、訓(xùn)練神經(jīng)網(wǎng)絡(luò)的方法,另一方面更系統(tǒng)地學(xué)習(xí)了更廣泛的機(jī)器學(xué)習(xí)的相關(guān)算法木西。
深度學(xué)習(xí)
Tensorflow是我使用的深度學(xué)習(xí)框架工具,Tensorflow目前提供tf.keras
和tf.estimator
兩個(gè)主要的高層API(是的随静,獨(dú)立的keras API已經(jīng)被默認(rèn)包括在Tensorflow里面八千。)平日一直使用的是Keras,由于想要結(jié)合AutoML的概念燎猛,使用AdaNet工具進(jìn)行神經(jīng)網(wǎng)絡(luò)的自動(dòng)優(yōu)化恋捆,就學(xué)習(xí)使用AdaNet要求的Estimator API。
機(jī)器學(xué)習(xí)
The Hundred-Page Machine Learning Book 是這一個(gè)月使用的主要學(xué)習(xí)材料扛门,這本書篇幅短小鸠信,內(nèi)容精煉,在內(nèi)容的深度和廣度之間達(dá)到了完美的平衡论寨,可以感受到該書與普通堆疊概念方法的教材之間的明顯差異星立。
由于待解決的問題為多目標(biāo)的回歸問題,而出去Random Forest葬凳,大部分的機(jī)器學(xué)習(xí)算法(SVM绰垂、xgboost)本身都不支持多目標(biāo),因而試用了scikit-learn的sklearn.multioutput.MultiOutputRegressor
火焰,但效果不佳劲装。
下圖為目前學(xué)習(xí)到機(jī)器學(xué)習(xí)算法思維導(dǎo)圖:
dask
由于所使用的數(shù)據(jù)為正演生成的響應(yīng)數(shù)據(jù),為覆蓋各種地層模型昌简,生成數(shù)據(jù)量較大占业,使用pandas進(jìn)行讀取,scikit-learn進(jìn)行預(yù)處理纯赎,全部數(shù)據(jù)被讀取到內(nèi)存中谦疾,內(nèi)存容量接近飽和,幾乎無法處理犬金。dask能夠處理大于內(nèi)存容量的數(shù)據(jù)念恍,它的目的是為了解決數(shù)據(jù)的分布式處理,它實(shí)現(xiàn)了pandas晚顷、scikit-learn的API峰伙,使用方便。同時(shí)该默,通過安裝dask-xgboost瞳氓,也解決了xgboost在windows系統(tǒng)下難以安裝的問題。
推薦書目
Keras實(shí)際使用推薦閱讀:
Keras作者Fancois Chollet編寫的Deep Learning with Python
Scikit-learn中各種機(jī)器學(xué)習(xí)算法的實(shí)際使用方法除文檔外可以參考:
Andreas Muller 與 Sarah Guido合著的Introduction to Machine Learning with Python: A Guide for Data Scientists
當(dāng)然入門機(jī)器學(xué)習(xí)推薦:
The Hundred-Page Machine Learning Book