機器學習核心算法各個擊破

0. 前言

  近年來,隨着 Google 的 AlphaGo 打敗韓國圍棋棋手李世乭之後,機器學習尤其是深度學習的熱潮席捲了整個IT界。所有的互聯網公司,尤其是 Google 微軟,百度,騰訊等巨頭,無不在佈局人工智能技術和市場。百度,騰訊,阿里巴巴,京東,等互聯網巨頭甚至都在美國硅谷大肆高薪挖掘人工智能人才。現在在北京,只要是機器學習算法崗位,少則月薪 20k,甚至100k 以上……
  
  不錯,新時代時代來了,我們從互聯網走向移動互聯網,現在又從移動互聯網走向人工智能時代。業內有人稱這一次的人工智能爆發是互聯網3.0時代的開啓。去年國家教育部已經把Python和人工智能技術列入中小學生課程培養計劃中。所以,爲了不讓我們在這個時代的浪潮中被擊倒,趕緊從基礎學起,入門機器學習,走進人工智能的大門……

1. 機器學習在人工智能中的地位

  也許目前AI領域最火的概念是深度學習,於是乎很多初學者就直奔深度學習而去,覺得可以繞過機器學習這個門檻。那麼這麼做對還是不對呢?
  

image.png-82.3kB

圖1、 機器學習、深度學習以及人工智能的關係

  

  我們首先了解一下機器學習、深度學習以及人工智能的關係。如圖1,我們很清楚的知道:人工智能包含機器學習,而深度學習又是機器學習的一個重要分支。
  
  那麼爲什麼我們應該從機器學習而不應該是當下最火的深度學習開始入門呢?原因很簡單,機器學習是深度學習的基礎,深度學習其實就是機器學習的一個分支演化過來的。如果你不深入學習傳統機器學習算法思路和思想,那麼你直接學習或者使用深度學習技術是很危險的,因爲你的根基將很不牢固,而且學習深度學習的難度也會大很多。

2. 機器學習的學習方法

  

image.png-131.9kB

圖 2. 機器學習的學習路線

  如上圖2是我個人總結的機器學習算法學習路線圖,它適合所有的初學者。相信很多同學都聽說了,機器學習需要強大的數學功底。那麼是不是本科生,數學基礎不是非常好的畢業生或者從業者就不能學習機器學習呢?答案是否定的。是的,前面那句話沒錯,機器學習需要強大的數學功底,但是更精確的解釋應該是這樣的:你數學功力有多厚決定着你在機器學習領域能走多遠,但是如果是入門,成爲一名互聯網算法應用工程師的話,其實要求並不是很高,並不是每個人都要成爲 Andrew NG 那樣成爲頂級機器學習科學家。
  
  當然,我相信所有想從事或者轉行機器學習的同學,基本的編程基礎是有的,這點應該不需要過多的強調。
  
  那麼接下來就是本文最關鍵的地方:經典機器學習算法的學習,本課程是讀者結合自己多年學習與工作經驗挑選出的最具有實踐意義的常用核心機器學習算法。

image.png-77.9kB
image.png-22.5kB

  
  以上算法能夠包含機器學習的方方面面了,喫透了這些算法,從事互聯網算法工程師的工作肯定沒問題。當然想要繼續深究,我會在最後一節講述。
  
  簡單的機器學習算法,例如KNN、K-Means、樸素貝葉斯等,代碼能力稍微強一點的讀者可以自己實現,然後拿經典數據集去實驗,這樣更能加深自己對算法的理解。當然更進一步的是可以參加一些算法比賽,提升自己的算法實戰能力。

3. 機器學習算法的挑戰

  上面講了機器學習算法的學習方法,那麼機器學習算法學習過程中有什麼樣的挑戰呢?
  
  爲了回答這個問題,我先告訴大家一個問題,沒有一個機器學習算法是萬能的,也沒有一個機器學習算法是沒有缺點的。正因爲如此,纔會有不同的算法層出不窮,百花齊放!
  
  也許你聽說過AdaBoost算法很厲害;也許你聽說SVM算法精確,理論非常的完美;也許最近幾年Kaggle比賽中XGBoost火的一塌糊,理論完美精度奇高;可是最近幾年深度學習又瘋狂崛起……爲什麼會出現這種現象呢?難道他們是簡單的更新換代,新算法出來老的東西就可以徹底被替代了嗎?顯然不是這樣的,大家各自都有自己的特點與長處。面對不同的問題,我們應該選擇不同的機器學習算法,而什麼情況下選擇什麼算法,該從什麼角度去思考這個問題是值得每一位初學者深思的問題,這就是挑戰所在!
  
  在這裏,我簡單拿XGBoost和深度學習作比較,說一下他們各自的優缺點和擅長領域。當數據維度不是特別高,並且具有固定維度的時候XGBoost表現良好,能夠獲得很高的準確度和計算速度;但是當數據維度很高,達到數十萬百萬級別的時候,這時候XGBoost就會顯得很喫力,精度和時間效率就明顯不行,這時候深度學習的用處就來了。可以簡單地將他們倆比作小轎車和大卡車的區別,只有瞭解了每個算法的原理之後我們才知道如何進行選擇。

4. 作者經驗和課程特色

  作者研究生期間曾在微軟實習,從事知識圖譜數據分析挖掘相關工作。畢業先後就職於京東和阿里巴巴,主要從事的都是機器學習反欺詐檢測和數據挖掘相關的工作。目前就職於陌陌,擔任推薦算法工程師,負責陌陌直播算法推薦。
  
  本課程是機器學習的入門並拔高課程,注重理論與實戰的結合。致力於用白話的方式講解算法中的數學原理,並帶有完整的源代碼幫助讀者進行實踐。同時還會結合作者本人在機器學習數據挖掘領域的經驗和BAT等一線互聯網面試經歷,列舉常見的機器學習面試題以及相關答題技巧。幫助讀者從理論到實踐,再到搞定面試 BAT 的一系列能力的培養。

5. 學完該課程之後該如何提升

  其實學完這麼課程,基本上能夠達到機器學習核心算法入門了。對於一個對自己嚴格要求的同學來說這肯定是不夠的,那麼接下來該如何提升自己呢?所謂師傅領進門,修行在個人。因此在這裏結合我個人的學習經歷,給大家一點參考建議:

  1. 閱讀機器學習經典教材,個人比較推薦李航老師的《統計學習方法》。如果英語可以的話可以學習《The Elements of Statistical Learning》。

  2. 在學習每種經典算法的時候,最好要找出它的原始論文以及相關論文來搞清楚這個算法發展的來龍去脈。機器學習大牛都是會去看無數的論文的,這個我相信沒有例外。

  3. 如果想深入瞭解各個算法的具體實現過程,進一步掌握造輪子的能力。可以參見著名的開源庫的實現:Python我比較推薦scikit-learn,Java我比較推薦Smile或者weka。

如果每個初學者都能堅持不懈地按照我說的方法去做,總有一天你也會成爲AI界的一顆新星!
  

課程鏈接: 機器學習核心算法各個擊破




對機器學習和人工智能感興趣,請掃碼關注微信公衆號!
這裏寫圖片描述

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章