機器學習—第一個月
01-24
背景
本人男,年齡25-26,坐標北京,曾經是一名再普通不過的Java開發工程師。
去年五月入坑,進入了一家人員不穩定、非技術驅動的互聯網創業公司。任何事情都有兩面性,我在最初的團隊里認識了一些數學背景好,熱愛與數據打交道,立志於機器學習、深度學習和人工智慧的同事。
之前,我覺得「機器學習」是一個離自己很遙遠的名詞,有很多關於機器學習這項技術或者這門學科的傳言:數學背景不好的人不能學,實際中機器學習沒什麼技術含量、調包和調參數就可以了,等等。
很慶幸,我最終排除了外界的干擾和內心的猶豫,從2017/02中旬正式開始學習機器學習,至今已有一個月。雖然中途穿插著學習python編程、複習數據結構和演算法,平均下來每天會有3-4小時投入到機器學習中。
個人學習路線
數學:
- 《線性代數》基本上已忘光,花了1小時複習了最基本的矩陣知識;
- 歷時一周,總投入大約30小時,較仔細地學習和複習了《概率論與統計》的知識;
- 其餘在機器學習中需要用到的數學知識,都是在機器學習演算法的學習過程中查漏補缺;
醜話說在前面,我非常地清楚,用這種態度對待數學肯定是錯誤的,基礎不紮實、原理理解不透徹等問題遲早會暴露。不過為了儘快入門機器學習,我決定不能在初期把大量精力投入到博大精深的數學裡。之後若有時間,還是應該系統地學習一遍《微積分》、《線性代數》、《概率論與統計》、《數學分析》等。
編程:
- Python編程,很多大牛都建議Python一天看書搞定。我個人學習編程語言的速度不快,或者是如果學的很快自己內心會發虛,所以我選擇的路線是較認真地學習Python。平均每周投入了5-8小時,最後都會寫一個100-200行的Python程序保持coding的感覺。
- 機器學習相關的包:Numpy、Pandas 和 scikit-learn。總共花了5小時去熟悉Numpy和Pandas,並沒有專門花時間學習scikit-learn。
機器學習-初體驗:
- 雖然數學和編程都不算好,相比較來說我對自己的編程能力自信一點。所以機器學習初體驗,我沒有選擇從學習具體的演算法開始,而是使用scikit-learn的包做一些case-study類似的項目。github上類似的項目很多,比如最經典的房價預測、文件分類、歌曲推薦等。總共投入時間大約15小時。
- 體驗完scikit-learn的演算法包之後,我接著學習了機器學習中一些基本的「模型評估與選擇」的方法論,比如confusion matrix、accuracy、precision、recall、fbeta-score、cross-validation、kFold等,並應用到「房價預測」這個項目中。總共投入時間大約15小時。
機器學習-演算法學習:
- 目前已學過的機器學習演算法全部是「監督學習」的範疇,包括線性回歸、邏輯回歸、決策樹、支持向量機、樸素貝葉斯和組合式學習(AdaBoost)。
- 對於上述的六種監督式機器學習演算法,目前的程度只達到了理解原理、理解數學推導、調用scikit-learn中的演算法包完成了一個簡單的教程項目。總共投入時間大約為40小時。
- 目前對這六種演算法掌握的程度肯定是不夠的,能夠自行推導數學過程 和 用python、numpy、pandas實現粗略版的演算法 是3月底這幾天的目標。(未完成)
- 總結我目前的經驗,我覺得如果能夠掌握下圖中所示的內容,可算作基本掌握了一個機器學習演算法。
總結
- 三月底,深入學習上述六種監督式機器學習演算法;
- 除了監督式機器學習,之後還有非監督式機器學習、強化學習;
- 除了機器學習,之後還有深度學習、無人車、圖像識別等各種相關深入技術;
- 我書讀的不多,記錄只為總結,分享只為交流;路漫漫其修遠兮,吾將上下而求索。
推薦閱讀:
※一些 Apple 有趣的秘聞
※工作時科學聽音樂,生產力不知高到哪裡去了
※老濕,你在哪裡找的汁源?
※面試新媒體運營,如何正確回答HR問題?12招拿走,不謝!