轉行AI之學習方法

初學機器學習可能有一個誤區,就是一上來就陷入到對各種高大上演算法的追逐當中。動不動就我能不能用深度學習去解決這個問題啊?我是不是要用boosting演算法做一些模型融合啊?我一直持有一個觀點,『脫離業務和數據的演算法討論是毫無意義的』。

實際上按我們的學習經驗,從一個數據源開始,即使是用最傳統,已經應用多年的機器學習演算法,先完整地走完機器學習的整個工作流程,不斷嘗試各種演算法深挖這些數據的價值,在運用過程中把數據、特徵和演算法搞透,真正積累出項目經驗 才是最快、最靠譜的學習路徑。

那如何獲取數據和項目呢?一個捷徑就是積极參加國內外各種數據挖掘競賽,數據直接下載下來,按照競賽的要求去不斷優化,積累經驗。國外的Kaggle和國內的DataCastle 以及阿里天池比賽都是很好的平台,你可以在上面獲取真實的數據和數據科學家們一起學習和進行競賽,嘗試使用已經學過的所有知識來完成這個比賽本身也是一件很有樂趣的事情。和其他數據科學家的討論能開闊視野,對機器學習演算法有更深層次的認識。

有意思的是,有些平台,比如阿里天池比賽,甚至給出了從數據處理模型訓練模型評估可視化模型融合增強的全部組件,你要做的事情只是參與比賽,獲取數據,然後使用這些組件去實現自己的idea即可。不廢話,直接劃重點上乾貨。如果你覺得機器學習難,那一定是你打開的方式不對(認真臉)。

機器學習看似難度大,但對入門者來說,也還是有一條通用的學習路徑。正如前幾個專欄里介紹的,還有很多優秀的入門資料可以大大降低學習門檻,同時激發學習的樂趣。

簡單的說,學習方法大概如下:

編程技能機器學習知識 ----> 動手實踐擼代碼 ----> 數據科學比賽 ----> 實際項目經驗數學基礎

機器學習是一個將理論演算法與計算機工程技術緊密結合的領域,你需要紮實的理論基礎來幫助你分析數據,同業是需要工程能力去開發模型和部署服務。所以需要【編程技能】【機器學習知識】【數學基礎】三個方面軍齊頭並進,才能最終奪取勝利的果實。

轉行AI的人里也可以分三類,一類是程序員出身,具有很好的工程經驗;一類是統計學數學電子通信類出身,具有較為紮實的理論基礎;還有一類既沒有豐富的編程經驗也沒有紮實理論基礎,例如我們學材料的...這三類同學入門AI,需要加強的部分是不一樣的。

1.編程技能-python

Life is short, I use python!

在google, facebook等巨頭欽定之後,人工智慧領域的當紅辣子雞莫過於python。Python的工具庫還是滿全的,從數據獲取到數據清理和機器學習演算法應有盡有。與R相比,更加全面。

對於python, 除掌握其自身語法外,還應該著重掌握下面這些庫:

pandas:超級excel,表格式操作數據,數據清洗和預處理的強大工具。

numpy:數值計算庫,快的不要不要的。

matplotlib:模仿MATLAB的數據可視化工具。

scikit-learn:封裝超級好的機器學習庫,一些簡便的演算法用起來不要太順手。

ipython notebook:數據科學家和演算法工程師的筆記本,強力推薦。


2.數學基礎

微積分:是機器學習中的核心知識之一,無論是梯度下降法中的求梯度還是反向傳播中的誤差傳遞的推導都需要用到微積分。

線性代數:神經網路中大量的計算都是矩陣乘法,這就需要用到線性代數的知識了。計算向量的餘弦相似度也要用到內積運算。此外,矩陣的各種分解辦法也出現在主成分分析和奇異值分解中。

概率論與統計學:廣義的說,機器學習的核心是統計推斷。所以機器學習的巨頭不少都是統計學大師,如邁克爾喬丹,楊樂坤,辛頓等。機器學習中大量的用到貝葉斯公式,隱馬爾科夫模型等等。

誠然,數學很重要,但是我建議,具有本科數學基礎的你,不要花費太多時間去刷數學書,這是南轅北轍,最好的辦法還是直搗黃龍學習機器學習演算法,到了看不懂的地方再去補充相應的數學知識,斯坦福的教程里就有大量的數學補充材料,很多時候讀明白這些補充材料就夠了。

3.項目經驗

一個誤區:很多新手初學機器學習,上來就追求複雜的深度學習模型和高大上的演算法如AlexNet, ResNet。tensorflow和keras各種API全部調用一遍,卻不知道自己在幹什麼,俗稱調包俠。

一個觀點:脫離實際業務和數據的演算法都是空中樓閣。

一條路徑:按照我的學習經驗,從數據清洗到特徵工程,再用最傳統的演算法把整個流程走一遍,不斷的比較和嘗試各種演算法,把特徵和演算法搞透,才是最快最靠譜的學習方法。

兩個項目:國外的Kaggle和阿里雲天池都是獲取項目經驗的好途徑。我的建議是每個入門機器學習的人都應該參加兩個項目。一個傳統機器學習應用場景的項目,如阿里移動推薦演算法。通過傳統應用場景熟悉邏輯斯特回歸,支持向量機和梯度增強決策樹等演算法。一個深度學習應用場景的項目,如肺癌識別和診斷,通過深度學習應用場景熟悉深度學習各種演算法的優勢和應用場景。

就說這麼多,大家放手去干吧!


推薦閱讀:

python動態的網頁數據json里沒有中文字元怎麼辦?
千里挑一的我乎妹子大V排行榜(數據初探1)
AI-challenger-stock 數據處理代碼
如何看待 Instagram 將所有 Web 後端遷移到 Python 3.6 ?
python中BeautifulSoup解析然後select提取到的內容如何用正則來來匹配?

TAG:人工智能 | Python | 机器学习 |