我的Machine Learning學習之路


[comment]: # 我的Machine Learning學習之路

從2016年年初,開始用python寫一個簡單的爬蟲,幫我收集一些數據。
6月份,開始學習Machine Learning的相關知識。
9月開始學習Spark和Scala。
現在想,整理一下思路。
先感謝下我的好友王峰給我的一些建議。他在Spark和Scala上有一些經驗,讓我前進的速度加快了一些。

學習算法

作為一個程序猿,以前多次嘗試看過一些機器學習方面的書,其過程可以說是步履闌珊,碰到的阻力很大。
主要原因是,讀這些機器學習的書,需要有一些數學方面的背景。
問題就在這些數學背景上,這些背景不僅僅是數學技巧,也有一些共識。對於缺乏這些背景的我,即使一個簡單的公式,也有時會感到困惑。
如果你像我一樣是一個程序猿,我建議讀Peter Harrington寫的Machine Learning in Action (中文書名是《機器學習實戰》)。
這本書是以開發者的知識背景來寫的,並且提供的python代碼可以下載,方便開發人員理解。

我寫了一些博文,主要作用是幫助我理解學習的算法。大部分寫的不好,后來我自己都看不懂。以后慢慢修正一下。
機器學習實戰 - 讀書筆記(03) - 決策樹
機器學習實戰 - 讀書筆記(04) - 朴素貝葉斯
機器學習實戰 - 讀書筆記(05) - Logistic回歸
機器學習實戰 - 讀書筆記(06) – SVM支持向量機
機器學習實戰 - 讀書筆記(07) - 利用AdaBoost元算法提高分類性能
機器學習實戰 - 讀書筆記(08) - 預測數值型數據:回歸
機器學習實戰 - 讀書筆記(10) - 利用K-均值聚類算法對未標注數據分組
機器學習實戰 - 讀書筆記(11) - 使用Apriori算法進行關聯分析
機器學習實戰 - 讀書筆記(12) - 使用FP-growth算法來高效發現頻繁項集
機器學習實戰 - 讀書筆記(13) - 利用PCA來簡化數據
機器學習實戰 - 讀書筆記(14) - 利用SVD簡化數據

學習算法的Level

  • Level 1: 了解如何使用算法

  • Level 2: 了解算法的正確使用場景
    正確的使用一個算法,需要經驗和對算法理論的了解。
    我以前有些這方面的經驗,很多錯誤在於不正確地使用了算法。
    當我們編程序給別人用時:

    • 需要理解算法
      最低要求,也要有一些基本的統計知識。

    • 需要實現算法
      實現算法一般比較簡單,需要注意性能和精度。
      基本上這部分在實現好后,比較穩定。

    • 需要實現將用戶數據應用到算法上的過程。
      這是程序員主要干的工作,接口、性能上的考慮很多。

    • 需要理解用戶的使用場景。
      這部分價值很大。
      一方面,寫單元測試是不可避免的,理解用戶的場景才能寫出有效的單元測試程序。
      另外,會有很多處理客戶問題的工作,也是長經驗的機會。

  • Level 3: 了解算法的后面的數學理論
    有人覺得這個用處不大。我覺得了解數學理論,可以:

    • 成為真正的行家
    • 未來的路還很遠,怎么能戛然而止!
    • 使用算法來幫助自己的一些事情,或者實現一個新的算法。
    • 現在人工智能的潛力很大,可以自己好好玩玩。

學習python

在數據量不大的情況下(幾個G),單機上就可以很好跑機器學習的程序。
這時,Python的用途就很大,不僅有已經實現好的算法,也可以實現爬蟲,從網上獲取數據。

學習Scala和函數式編程

對於大數據處理來說,Spark和Scala結合是現在的大趨勢。
我寫的博文有:
學習Scala: 初學者應該了解的知識
函數式編程 : 一個程序猿進化的故事
Scala underscore的用途
不變(Invariant), 協變(Covarinat), 逆變(Contravariant) : 一個程序猿進化的故事
Scala Collection簡介
Scala on Visual Studio Code

學習Spark架構

我寫的博文有:
Spark集群 + Akka + Kafka + Scala 開發(1) : 配置開發環境
Spark集群 + Akka + Kafka + Scala 開發(2) : 開發一個Spark應用
Spark集群 + Akka + Kafka + Scala 開發(3) : 開發一個Akka + Spark的應用
Spark集群 + Akka + Kafka + Scala 開發(4) : 開發一個Kafka + Spark的應用

學習在Spark上的機器學習項目開發經驗

學習更多的算法

蒙特卡洛樹算法

成為Spark的Contributer

成為Spark的Contributer是件很cool的事。

  • 可以讀讀Spark的代碼,從中應該可以增長不少。
  • 然后,嘗試修一些Spark的Bugs。

深度學習

路還很長。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM