機器學習工程師31門課程(視訊):從新手到專業

大資料探勘DT資料分析發表於2018-03-02

640?wx_fmt=gif&wxfrom=5&wx_lazy=1

 向AI轉型的程式設計師都關注了這個號???


大資料探勘DT資料分析  公眾號: datadw



機器學習不僅僅是模型

產生這個問題的原因就是所有人都以為機器學習的模型就是機器學習本身,以為對那些個演算法理解了就是機器學習的大牛了,但實際上完全不是這樣的。

模型是誰在玩呢?模型是科學家發明出來的, 是各個大公司的各個科學家,研究員發明出來的,這個發明出來是會出論文的,是他們用來虐我們的智商的,一般情況下,你發明不了模型吧(如果可以,可以不要往下看了,你可以走學術那條路)?你修改不了模型吧?

所以說,學會了模型,只是剛剛剛剛入門,甚至還算不上入門吧

那各個公司的那麼多演算法工程師在幹嘛呢?我們以一個搜尋排序的演算法工程師為例,他們在做甚呢?他們在

觀察資料--->找特徵--->設計演算法--->演算法驗證--->洗資料--->工程化--->上線看效果--->goto 觀察資料 


而且一個成熟的系統中,一般模型已經大概確定了,如果效果不是特別不好不會換模型,比如一個公司的搜尋排序系統用了機器學習的邏輯迴歸模型,你要改成別的模型一般不太可能,那麼只能做一些特徵上的補充。

好,我們通過這個流程來看看一個機器學習的演算法工程師到底還要什麼能力。

觀察資料

小明每天就在工位上看資料,查資料,看錶格,畫曲線,發現像銷量,收藏,點選等等這種能想到的特徵早就被用了,就這麼耗了三個月,沒有任何進展,人都崩潰了,來了這麼久,機器學習程式碼毛都沒看到呢。

第四個月,他發現一點問題,他發現有些商品,評論什麼的都挺好,感覺產品質量也不錯,但就是銷量上不去,所以老排後面,於是,他把這些評論都是五星,但是銷量比較差的商品濾出來了,想看看他們有什麼共性。

觀察資料階段,你說要什麼能力?呵呵,只能告訴你,需要資料敏感性,其實也就是告訴你需要全面的能力,需要經驗,需要產品經理的能力。

除了這些,你還需要能隨手編指令碼程式碼的能力,遇到有些資料需要初步處理,可能需要隨手編程式碼處理,而且編的要快,因為這些程式碼可能就用一兩次就不用了,所以需要比較強大的指令碼語言能力,那麼python至少要熟悉吧,shell要會吧。

找特徵

資料觀察下來發現了問題,現在要找特徵了,要找特徵,也就是找什麼因素導致銷量上不去的,首先,需要想象力,然後去驗證你的想象力。

小明的想象力爆棚,即便這樣,也搞了一個月才發現這些個商品有個共同特徵,那就是圖片都比較爛,讓人一看就不想點。臥槽,要是能把圖片質量加入到排序因素裡面的話,是不是有奇效呢?圖片質量作為特徵,這之前可沒人做過,終於找到一個特徵了。

所以在這一階段,畢竟大家的想象力都是有限的,更多的是經驗值,才能找到符合當前場景的特徵。

設計演算法

特徵是找到了,但怎麼把這個特徵加到排序模型裡面去呢?圖片好不好,有多好,這些機器怎麼理解呢?如果不能把圖片質量變成一個數學上的向量,那永遠都無法加入到排序模型裡面去。

這一階段是真正考驗演算法工程師的地方了,那就是將特徵向量化,小明觀察到越好看的影像往往顏色變化更多,而質量差的圖片往往顏色沒什麼變化,於是他想到一種辦法,先把影像資料進行傅立葉變換,變成頻域的資料,根據傅立葉變換的性質,高頻部分的幅度高表示影像的顏色變化很明顯,如果低頻部分高,表示顏色變化不明顯,這和觀察到的影像資訊基本能匹配上,這樣一副影像的好壞,就可以用傅立葉變換後高頻部分的幅度表示了,然後在做一些歸一化的變化,就把影像向量化了,向量化以後就可以加入到排序模型去了。

這一步,你可能會用到你學習的機器學習模型,但肯定只佔了一小部分,大部分情況需要你根據當前場景自己建立一個數學模型,而不是機器學習模型,你說這一階段需要什麼技能?雖然我這裡舉的例子比較極端,但是數學抽象能力,數學建模能力和數學工具的熟練使用是必不可少的,並且同樣需要較強的程式設計能力,這已不是上一步的指令碼能力,是實打實的計算機演算法程式設計能力了。

演算法驗證

演算法是設計好了,還要設計一個演算法的離線驗證方法來證明給你的老大看說我的演算法是有效果的,不然哪那麼多機會讓你到線上去試啊,這一步也是各種綜合能力的組合,關鍵是在這一步上,你要用一種通俗的語言從理論上說服你的老大,這是一種什麼能力?強大的語言表達能力。

除了這個你還需要設計出一個上線以後的AB測試方案,能夠很好的測試出你的演算法是否真的有效。

洗資料

特徵找到了,演算法也設計得差不多能體現特徵了,體力活來了,那就是洗資料,這是演算法工程師的必修課,資料不是你想要什麼樣子他就長得什麼樣子的,所以要把資料變成你想要的樣子,然後去掉無效的資料可是個體力活。

像上面這個例子,首先可能大家的圖片大小都不一樣,要變成一個尺寸才好進行變換,有些商品有多個圖片,可能需要找出質量最好的再處理等等等等。

這一階段首先也是要指令碼語言處理能力,而且還需要掌握一些資料處理工具的使用,關鍵還要有足夠的耐性和信心,當然,必不可少的是優秀的程式設計能力。

工程化

好了,前面的坑你全跨過來了,到了這一步了,呵呵,演算法設計完了,資料也準備好了,估計半年過去了,那趕快放到線上去吧,你以為拿著一堆指令碼就能上線了啊,得考慮工程化了,如果把你的演算法嵌入到原有系統中,如果保證你的演算法的效率,別一跑跑一天,程式碼的健壯性也要考慮啊,如果是線上演算法,還得考慮效能,別把記憶體乾沒了。

這一步,你才真正的用上了你上面學的機器學習的hadoop,spark工具,看了上面說的,要完成工程化這一步,得有什麼能力不用我說了吧,這是一個標準的軟體開發工程師的必要技能,還是高階開發工程師哦。

上線看效果

所有的都做完了,前前後後10個月了,終於可以上線了,好了,真正的考驗來了,看看上線的效果唄,產品經理說,做個AB測試吧,結果呵呵了,點選率降低了,小明啊!這10個月忙活下來點選率還下降了???老闆還不把你罵死,所以,你必須有強大的抗打擊能力。

呵呵,趕快下線吧,從頭看看哪裡出了問題,又花了一個月修改了演算法,重新上線,恩,這次不錯,點選率提高了0.2個百分點,繼續努力吧,看看還有沒有什麼可以挖掘的,於是,你就goto到了看資料的那一步。

別看這0.2,大的資料集合下,提高0.2已經是非常不錯的提高了,所以花這麼多錢,養演算法工程師,要是一年能出幾次0.2,那就是真值了。

讓我們總結一下

上面這麼多的過程,靠一個人全部完成確實有點困難,我說的有點誇張,中間有些步驟是有人配合的,觀察資料的時候有產品經理配合你,洗資料的時候有資料工程師配合你,工程化的時候有系統工程師配合你,但是作為機器學習的演算法工程師,整個過程你都得能hold得住啊,所以即便是你一個人應該也要能完成整個流程才行。

這只是一個標準的演算法工程師應該具備的能力,當然我這裡是以搜尋演算法舉例的,其他的演算法工程師也差不太多,總跑不過上面幾個過程,當然,你要是牛人,能根據場景修改這個機器學習的模型,甚至自己能想個模型,那就更厲害了。

好,我們把上面的重點標記的部分取出來彙總一下,讓我們看看一個演算法工程師需要具備哪些技能:

  • 資料敏感性,觀察力

  • 數學抽象能力,數學建模能力和數學工具的熟練使用的能力

  • 能隨手編指令碼程式碼的能力,強大的計算機演算法程式設計能力,高階開發工程師的素質

  • 想象力,耐性和信心,較強的語言表達能力,抗打擊能力

  • 然後,還有很關鍵的一點,你需要很聰明。


當然,你如果能做到以上那麼幾點,基本上也會很聰明瞭,如果真能做到這樣,反而那些機器學習的模型,理論和工具就顯得不那麼重要了,因為那些也只是知識和工具,隨時都可以學嘛。

你說,這些是靠看幾篇部落格,看幾本書,上幾次課就能具備的麼??

當然,我們這裡討論的是一般情況,如果你一心就是做研究的話,那麼需要把上述技能熟練度再提高一個量級。

最後,正在學習機器學習,勵志做演算法工程師的你,準備好踏這些坑了麼??

很多的工程師都想轉行到這個崗位。本文根據 Coursera 上面的課程,列了一個從新手到專業工程師的學習計劃,提供給大家學習。以下是具體的學習路徑:


以下課程均有課程連結


https://www.jianshu.com/p/32b21d32663c


機器學習工程師必修課(6門課程)

  • 課程 1:Algorithmic Toolbox(共35小時)

  • 課程 2:Data Structures(共35小時)

  • 課程 3:Algorithms on Graphs(共20小時)

  • 課程 4:Algorithms on Strings(共23小時)

  • 課程 5:Advanced Algorithms and Complexity(共43小時)

  • 課程 6:Genome Assembly Programming Challenge(共19小時)


初級機器學習工程師(6門課程)

  • 課程 1 :Machine Learning(共45小時)

  • 課程 2 :Introduction to Data Science in Python(共21小時)

  • 課程 3 :Applied Plotting, Charting & Data Representation in Python(共15小時)

  • 課程 4 :Applied Machine Learning in Python(共22小時)

  • 課程 5 :Applied Text Mining in Python(共16小時)

  • 課程 6 :Applied Social Network Analysis in Python(共17小時)



中級機器學習工程師(4門課程)

  • 課程 1 :Machine Learning Foundations: A Case Study Approach(共21小時)

  • 課程 2 :Machine Learning: Regression(共26小時)

  • 課程 3 :Machine Learning: Classification(共23小時)

  • 課程 4 :Machine Learning: Clustering & Retrieval(共21小時)

高階機器學習工程師(3門課程)

  • 課程 1 :Neural Networks and Deep Learning(共5小時)

  • 課程 2 :Improving Deep Neural Networks(共5小時)

  • 課程 3 :Structuring Machine Learning Projects(共5小時)



本文來自 微信公眾號 datadw  【大資料探勘DT資料分析】


機器學習工程師方向選擇(12門課程)

  • 課程 1 :Google Cloud Platform Big Data and Machine Learning Fundamentals(共8小時)

  • 課程 2 :Leveraging Unstructured Data with Cloud Dataproc on Google Cloud Platform(共5小時)

  • 課程 3 :Serverless Data Analysis with Google BigQuery and Cloud Dataflow(共6小時)

  • 課程 4 :Serverless Machine Learning with Tensorflow on Google Cloud Platform(共8小時)

  • 課程 5 :Building Resilient Streaming Systems on Google Cloud Platform(共5小時)

  • 課程 6 :Introduction to Recommender Systems: Non-Personalized and Content-Based(共14小時)

  • 課程 7 :Nearest Neighbor Collaborative Filtering(共11小時)

  • 課程 8 :Recommender Systems: Evaluation and Metrics(共8小時)

  • 課程 9 :Matrix Factorization and Advanced Techniques(共7小時)

  • 課程 10 :Probabilistic Graphical Models 1: Representation(共27小時)

  • 課程 11 :Probabilistic Graphical Models 2: Inference(共22小時)

  • 課程 12 :Probabilistic Graphical Models 3: Learning(共22小時)


人工智慧大資料與深度學習

搜尋新增微信公眾號:weic2c

640?wx_fmt=png

長按圖片,識別二維碼,點關注



大資料探勘DT資料分析

搜尋新增微信公眾號:datadw


教你機器學習,教你資料探勘

640?wx_fmt=jpeg

長按圖片,識別二維碼,點關注

相關文章