如何優雅的入門機器學習
這兩年,人工智慧已經火到了全民皆知的地步。隨著阿爾法狗聲名鵲起之後,無人駕駛、人臉識別、郵箱分類、圖片美化、聲紋識別等人工智慧的產物都進入了大家的視線。大家都對人工智慧的前景很看好。其中不乏一些想入門人工智慧的學生和IT類職員。
本文並不是給大家上人生課,用機器學習的語言來說,我這篇文章不是分類文,而是迴歸文。也就是說,具體要不要入門人工智慧,大家要自己想好了,如果已經堅定了信念,今後要在人工智慧的路上走下去的話,恭喜你,你至少已經成功了四分之一。我結合著自己在人工智慧領域的經驗,給大家分享下該如何入門人工智慧,希望能夠幫助處於迷茫中的人群。
人工智慧只是一個大領域,他擁有兩個小領域,一個是機器學習,另一個是深度學習。那麼同學們是不是一入門,就要抉擇是選擇深度學習還是機器學習呢? 一入門就選的話,估計同學們會很痛苦,還好,這個時候並不需要選擇,因為深度學習是機器學習的子類,換句話說就是,想要學習深度學習,機器學習的部分知識你也是要掌握的。那麼擺在大家面前的就只剩下一條路了,先學習機器學習!
我不會像很多文章那樣列舉幾十個連結堆在那,毫無前後關係,內容多的讓人崩潰。
我結合著自己學習的心路歷程,推薦幾個經典的東西,讓大家優雅的入門。
- 數學基礎部分
學習機器學習,要有一些數學基礎,好在要求的數學基礎都是高中及大學的層次,相信大家都學過。即使忘了,再去尋找以前的記憶也相對容易一些。我列舉下必備的知識。
1.線性代數(矩陣、特徵值、特徵向量、秩)
2.微積分(極限、導數、拉格朗日中值、泰勒級數展開)
3.統計學 (相關性分析、期望、方差、分佈、指標)
注:很多文章都說凸優化的知識,其實凸優化多數都是用在研究領域,對於剛入門作用不大,暫時不建議大家看。
書籍方面:去翻下大學相關課程教材即可。不建議從頭開始學,很耗時,去翻翻上面說的幾部分內容就可以。如果覺得不夠可以再去看看吳軍的《數學之美》和李航的《統計學習方法》。這兩本書還是比較經典的。
視訊方面:我錄製了一門機器學習入門的課,感興趣的話,可以看下。
- Python語言基礎
現在機器學習中,Python語言用的居多。如果你是程式設計師出身,已經有過Python,C++,Java語言的話,這一步就很簡單了。如果你現在還不懂程式語言,也沒關係,Python是一門很簡單的語言。Python語言其實也有難點,但好在機器學習裡面用不上,是不是有難以掩飾的激動【劫後餘生臉】.相信大家經過1周時間基本就可以應用了。我給同學們列舉下該學習哪部分。
基礎部分:推薦給大家一個網上的教程,如果這個連結失效了,也可以自己在搜尋引擎上搜《Python3教程》關鍵字(這裡推薦大家學習Python3,如果已經有了Python2的基礎,也可以忽略)
https://m.runoob.com/python3/。
模組部分:Numpy、Pandas、Matplotlib。這幾個是需要大家掌握的。大家自己在搜尋引擎上搜。如果我以後發現好的這方面的文章,再推薦給大家。
視訊方面:我也錄製了一門Python基礎入門的課,就是針對這三個模組進行的講解。感興趣的話,可以看下。
其他的呢,可以看下scikit-learn這個模組。他是機器學習的一個Python庫。有很多機器學習方面的模型,用scikit-learn可以很快的實現。大家也可以在瞭解機器學習之後,再學習也可以。
- 機器學習基礎
這一部分內容還是很多的,講的都是一些經典的入門演算法,大家要好好的感受下這些演算法的精髓。
-
線性迴歸、梯度下降、邏輯迴歸
-
決策樹和隨機森林(ID3、C4.5、CART、GBDT、RandomForest)
-
SVM (軟間隔、損失函式、核函式、SMO演算法、libSVM)
-
聚類(K-Means、聚譜類SC)
-
EM演算法(最大似然估計、Jensen不等式、混合高斯分佈、主題模型pLSA)
-
主題模型LDA
-
隱馬爾可夫模型
書籍方面:Andrew Ng — Machine Learning Coursera from Stanford
視訊方面:我也錄製了一門機器學習基礎入門的課。
有了上面的基礎,選擇一門由淺入深的課程來學習。基礎打下後,對機器學習已經有了充足的瞭解,可以用機器學習來解決一個實際的問題。解決實際問題的時候,可能涉及到上面基礎部分的延伸,相信有了上面的基礎部分,再繼續學習起來就容易很多。通過實戰經驗積累以後,可以考慮繼續進行學習。這時候有兩個選擇,深度學習或者繼續機器學習。深度學習是目前最火熱的機器學習方向,這裡推薦大家選擇TensorFlow框架。它是谷歌公司的開源框架,雖然說並不是最早的,但是無論它背後的技術沉澱,還是它的更新速度都是好的。也在開源的眾多深度學習的框架中遙遙領先。深度學習其中一些方法已經跟傳統的機器學習不太一樣,因此可以單獨學習。除了深度學習以外,機器學習還包括統計學習,整合學習等實用方法。如果條件足夠,可以同時學習兩者,一些規律對兩者是共通的。學習完後,你已經具備了較強的知識儲備,可以進入較難的實戰。這時候有兩個選擇,工業界的可以選擇看開源專案,以改程式碼為目的來讀程式碼;學術界的可以看特定領域的論文,為解決問題而想發論文。無論哪者,都需要知識過硬,以及較強的編碼能力,因此很能考察和鍛鍊水平。經過這個階段以後,可以說是踏入AI領域的門了。
入門之後也算是值得高興了,但是你離精通其實還有很遠的一段路要走,想要在這個行業長久地活下去,內功的修煉要比外功重要得多,不然會活得很累,也很難獲得一個優秀的晉升空間。入門之後,趕快找一家公司去工作。在工作中會把你學習的知識融會貫通。而且剛步入公司,也會有一些大拿級別的人帶你。這樣的話,對你今後的發展都有很大的幫助。
另外列舉一些面試中經常考的知識點。
線性迴歸數學推導
可用性評估:獲取難度、覆蓋率、準確率
特徵清洗:清洗異常樣本
取樣:資料不均衡、樣本權重
單個特徵:無量綱化(標準化、歸一化)、二值化、離散化、缺失值(均值)、啞編碼(一個定性特徵擴充套件為N個定量特徵)
資料變換:log、指數、Box-Cox 降維:主成分分析PCA、線性判別分析LDA、SVD分解
特徵選擇:Filter(相關係數、卡方檢驗)、Wrapper(AUC、設計評價函式A*、Embedded(L1-Lasso、L2-Ridge、決策樹、DL)