1. 程式人生 > >機器學習--入門答疑

機器學習--入門答疑

類別 邏輯 啤酒 gre 是否 知識結構 中間 場景 討論

剛接觸機器學習這一個月我都做了什麽?

這一個月,從對機器學習充滿好奇與畏懼,到對各種算法稍有理解以及圍繞推薦場景的編碼實踐,算是對機器學習有了一個入門的體驗。但是中間也踩過不少坑,比如啃過線性代數的教材、看過無聊的機器學習課程、追過高端的機器學習書籍、陷入一個算法無法自拔(最後也沒整明白)...其實,學習機器學習沒有那麽難,也很容易走偏。謹以此文,作為ML入門小白的一個小小的參考...

本篇雖不是這一個月的流水賬,但是基本按照下面的思路對著一個月做了一次總結:

  • 什麽是機器學習?
  • 機器學習都有什麽算法?
  • 個人對機器學習的三種境界理解
  • 推薦的學習路線
  • 推薦資源

希望讀者有所收獲,另外,如果文中有任何理解上的錯誤,還望指正!

什麽是機器學習?

之前在沒有具體接觸到機器學習前,我大概對他有一個概念上的認識,覺得是一種很高級的算法,能讓機器學會很多的事情,就像...《我的機器人女友》裏那樣!

或者是《機械公敵》裏的智能機器人?...

但是,這些其實都是對機器學習的一種誤解。機器學習並不是讓機器像人一樣會學習,而是通過一種固定的編程模式,對數據進行處理。按照百度的定義,它是這樣的:

專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。

其實機器學習就是通過一些前人總結的數據公式,幫我們簡化了很多手工操作很麻煩甚至無法操作的事情。就舉個身邊很常見的例子,當你在淘寶搜索了某個寶貝後,之後的商品頁面會為你推薦跟這個搜索相關的商品;再比汽車在經過司機的一段駕駛後,汽車自己能基於道路狀況自動調整方向盤以及車速,實現無人駕駛;再如,家裏的熱水器會記錄你使用熱水的時間,提前一段時間燒水,而在其他時間不加熱,以節省水電。這些都是機器學習,都是身邊已經出現或者即將出現的場景,所以,機器學習其實就在我們身邊。

機器學習都有哪些算法?

在機器學習中,算法可以按照多種維度進行分類,比如監督學習、無監督學習、強化學習等...讓人看著就眼暈。

記得有一篇文章總結的就非常易懂,他認為機器學習其實可以分成三類,分類、回歸、聚類。

  • 分類聽著名字就很容易理解了,比如給你一筐水果,水果裏面有蘋果、香蕉,需要把它們分成兩類。
  • 回歸來源於單詞regression,它可以理解成是一種預測,比如線性回歸,他可以根據樣本數據學習出一個線性的公式,比如y=ax,當你給定一個x的值時,可以推算出對應的y值。當然具體的場景中,就不是簡單的一維了...
  • 聚類,跟前面的分類有些不同,比如一筐水果,你都不知道裏面裝的是什麽,需要通過味道、顏色、形狀、大小等多個屬性,把它們進行歸類。

結合到算法裏面:

  • 分類相關的算法有:K-近鄰算法、決策樹、樸素貝葉斯、邏輯回歸、支持向量機等
  • 回歸相關的算法有:線性回歸、樹回歸等
  • 聚類相關的算法有:K-均值算法、Apriori等

如果看過一遍《機器學習實戰》,應該就會對上述的算法有一定的了解。不需要到公式推導級別,先能了解他們的用法即可,比如:

  • K-近鄰就是已知幾個分類,判斷新的節點屬於哪個分類時,只需要看距離它一定範圍內,哪個分類的數據多。有點像近朱者赤近墨者黑的意思。
  • 決策樹就是通過一大堆的問題,判斷屬於哪個分類。比如,相親的時候,會問“你是做什麽的?”“有沒有房?”“有沒有車?”——最後判斷,是否繼續交往。
  • 樸素貝葉斯看著名字高大上,其實就是根據概率選擇,屬於哪個分類的概率大,就歸屬這個分類
  • 邏輯回歸它是把線性回歸的結果映射到01區間
  • 線性回歸可以簡單的理解成y=ax,但是其實在多維空間比這個復雜得多
  • K-均值就是一大堆散落的點,隨機幾個中心,這些點按照距離選擇他們最近的中心組成一個類別
  • Apriori只要說一個啤酒與尿布,大家就應該明白了。

這麽多算法其實只是機器學習中的一部分....

機器學習的應用場景

機器學習的應用還是很廣泛的,比如無人駕駛、機器人等等高大上的東西,以及咱們身邊的拼車算法、電商的個性化推薦、婚戀網站的快速配偶等等。只要是涉及到數據之間的關系,都可以使用機器學習來達到很好的效果。

個人理解的機器學習的三種境界

這三種境界純粹是個人的胡亂設定,僅僅是為了給自己的學習定下一個目標!

第一層 了解算法的過程和作用


這種一般是那些自學機器學習的朋友,在看過幾本機器學習相關的書籍後,對所有的算法都有一點了解。能跟別討論一些機器學習的算法和用途,並且能理解相關技術分享大致過程。

第二層 能把算法運用到實踐中


這一層可以認為是對某個機器學習的庫比較熟悉,能真正的利用機器學習來解決一些問題。比如可以使用Spark MLLib中的某個算法解決實際的問題,如基於物品或者用戶的協同過濾算法。這就好像是使用現代的機械工具蓋房子,而不是像過去純人工搬石頭壘長城,效率和產出上都要好的多。

第三層 對算法的推導融會貫通


這種可以說是集數學與計算機功底於一身,是倚天劍與屠龍刀的合體。對數學公式推導了如指掌,各種模型的優化也深諳其道。其實機器學習使用某個庫出一個簡單的效果很簡單,但是想要對算法模型進行優化卻很難,大多時候都是盯著算法結果,目瞪口呆,不知道下一步該怎麽辦。如果對算法了解的很深,對實際的業務又很熟悉,那麽就能結合兩點對算法模型進行優化,改進機器學習的結果。

個人學習機器學習的路線規劃

經過不到一個月的學習,對機器學習也算是初步有了一定的了解,最起碼知道機器學習能幹什麽了,所以現在還在處於上面的第一個境界....

這期間也走了不少的彎路,浪費了不少的時間。所以在這裏總結一下,也給大家當做一個參考:

  • 1 最快的入門方式,就是先百度、必應一下,了解下機器學習的概念。
  • 2 推薦閱讀《機器學習實戰》了解下機器學習相關的算法。我之前也看過機械工業出版社的《機器學習》、也看過點周誌華老師的《機器學習》,前一本概念太多,後一本公式也挺多。《機器學習實戰》相對來說要好得多,先介紹點理論背景,在基於python介紹下算法的實現以及一兩個案例。
  • 3 很多人都覺得機器學習需要很好的數學功底,於是學習機器學習前,先捧著高數、線代、概率論看,結果看了兩天,覺得枯燥無味,就打算放棄。其實沒必要的,結合上面的《機器學習實戰》,遇到什麽公式,進行相應的復習就行了,這也是為什麽把數學放在第三個步驟。其實機器學習裏面能理解高數的求導、線代的矩陣以及向量、概率的期望方差等就差不多了,其他有需要的話針對學習就行。
  • 4 學習機器學習肯定是要看吳恩達老師的公開課了,公開課的地址,我剛看了兩集,感覺還是非常不錯的。
  • 5 學習Spark MLLib相關的算法實現,如果有時間的話,可以看看源碼。

通過上面的學習,暫時可以到達第二個層次了。我想一般搞計算機的,應該很少有能對各種算法推導融會貫通的。所以第三種境界,就留給其他人吧....

推薦資源

1 《機器學習實戰》

  • 推薦指數:★★★★★
  • 推薦理由: 理論、算法都有,比較好懂

2 機器學習 斯坦福 公開課

  • 推薦指數:★★★★☆
  • 推薦理由:權威大拿帶你飛,還有什麽理由不上車?

3 《推薦系統實踐》

  • 推薦指數:★★★☆☆
  • 推薦理由:如果是想做個性化推薦,那麽必須要看看這本書!

4 Spark MLLib官方文檔以及example代碼樣例

  • 推薦指數:★★☆☆☆
  • 推薦理由:官方文檔大體上知道有什麽內容就行,主要是推薦看看example裏面提供的代碼,能幫助少走不少彎路。

出處:http://www.cnblogs.com/xing901022/p/6953696.html

機器學習--入門答疑