零基礎自學如何成為合格的數據挖掘工程師?
1.數據挖掘工程師;
2.從哪裡搜集學習資源,比如網站,書單,視頻,完成從零基礎到入門,再到初、中、高級的課程;
3.學習理論肯定要用於實踐,從哪裡能找到練慣用的項目或者課題;。
ps.學習數據挖掘是因為自己對數據感興趣,我自己的情況,畢業於二本的數學專業,畢業後從事的是保險行業。
強烈推薦兩門公開課,難度很低,講得非常好。學完了應該可以直接上手幹活。
1. BerkeleyX: CS190.1x Scalable Machine Learning CS190.1x Course Info
這門課是伯克利開的,教機器學習基礎、Python Spark實現。我很懂機器學習,但不懂spark和python,花了1周多時間看完視頻、做完作業。如果沒機器學習基礎的話幾周應該夠了。學完了可以用spark處理大數據,做分類、推薦系統。
- 在牆內搭建虛擬機環境有困難,裝不好可以參照帖子 不用翻牆和等幾小時,搞定VM安裝
- 要是怎麼裝都不成功,原因很可能是沒有開Intel Virtualization,需要進BIOS設置一下。我們好幾個人都遇到這問題了。
- 這個裡面的視頻很卡,但是可以下載。希望有好心人下載傳網盤或者優酷~
更新:新的課已經開始了,這次的不需要在本地裝虛擬機,直接用databricks的伺服器就好,方便很多。而且這次是半年內上一系列的Spark課程,有興趣可以全學了。
鏈接:CS105x Course Info
2. 斯坦福公開課:
Convolutional Neural Networks for Visual
Recognition CS231n Convolutional Neural Networks for Visual Recognition
優酷視頻: 優酷網-中國第一視頻網,提供視頻播放,視頻發布,視頻搜索
這是我見過的講神經網路最清楚最簡單的課程,lecturer口才極好,英語說的清晰,配套的講義說得更清楚明白。如果連作業一起做了,應該有能力用deep learning的工具做一些圖像和視覺的工作。
- 課程講義里有使用Python、IPython做數值計算的快速入門CS231n Convolutional Neural Networks for Visual Recognition
- 作業需要用Python 2,不能用Python 3,除非你樂意像我一樣花時間把print全加括弧,把cPickle全改成Pickle,還要設置Pickle的編碼:Pickle incompatability of numpy arrays between Python 2 and 3
初學者想要深入學習的話,可以順著兩門課的內容、擴展材料繼續挖下去。
多說一句,不要報任何班。機器學習牛人要麼忙著科研,要麼是賺錢太容易,所以幾乎沒人開培訓班來賺錢。有名的培訓班,比如J***這樣的都是不入流的,以其昏昏使人昭昭。
數據挖掘工程師應該是 Data Mining Engineer,我覺得算是 Data Scientist 的一種(可能Data mining engineer更偏重於計算機架構和數據處理,但是我覺得互通),這個職位在美國是近期比較熱門的一個職位。因為越來越多的公司都意識到數據重要性。早期的公司,可能因為有了Data Scientist,更容易進行冷啟動,成熟的公司,可能因為有了Data Scientist可以在各個方面:市場,運營提高效率。特別是Uber 和 Airbnb 火了之後,招聘市場對Data Scientist 越來越熱捧。如果是一個 cs 的 undergraduate 或者是 math major 的 undergraduate,想成為一個好的 Data Scientist 並不需要太多時間就可以成為一個非常好的 Data Scientist。那麼在這裡,我們討論,如果要零基礎(至少高中要畢業吧)如何成為一個比較合格的 Data Scientist 從業者,我想至少要在以下幾個方面進行更好的磨練。
數學
Data Scientist 的數學基礎要好,特別是 statistics,probability,和重點中的重點 Linear Algebra。當這幾門學好了之後,Data Scientist 最核心的 Machine Learning 和 Data Mining 其實就是往深的延展和變化。
首先要說的是 Linear Algebra。
這個絕對是重點中的重點。必須要學好。在實際學習過程中你會發現,Machine Learning 和 Data Mining 用到的很多 Algorithm 是需要 matrix 推導的。因為很多演算法的核心就是找最優解,而推演算出最優解的過程是需要非常夯實的 Linear Algebra 的基礎的。推薦以下學習的途徑:
- http://cs229.stanford.edu/section/cs229-linalg.pdf 斯坦福的一些講義,可以當做基礎的看一下。
- Linear Algebra MIT的在線課程,是有難度的,但是從基礎學起是很好的。有Exam配套solution
- http://joshua.smcvt.edu/linearalgebra/book.pdf 這本書比較基礎,可以看一下。
- Bretscher, Linear Algebra with Applications Princeton Linear Algebra 的教科書,我覺得很不錯,太貴沒有買。
其次是 stats 和 probability 這兩個是要一起學的。因為是互補的,而且最基本的思想是一樣的。stats 和 probability 的學習途徑很多。(雖然本人更喜歡probability 一些,覺得stats有些枯燥)。因為對於Data Scientist 來說有一個比較重要的要素是從sample推導到集合。這兩門課是不僅僅讓你的思想更加豐滿,有的時候扮演的是必殺技的角色。那麼就直接上我覺得比較好的學習途徑吧:
- 初級:
- Textbook: Introduction to Probability, 2nd Edition 這本書很多學校都作為教材。可以淘寶影印版
- Probability and Statistics (Open + Free) stanford 怎麼著也不是很差
- https://www.coursera.org/learn/probability-intro Coursera 比較簡單但是很多思想真的很好
- 浙大出的《概率論與數理統計》大學的教材,看得第一本比較系統的書
必須要掌握一些概率論的定律,如何推演,內在是什麼意思。各種distributions的意義也同樣重要。舉個例子:比較常用的Logistic Distribution。這個是一個比較常用的分布,你必須要了解它的pdf和cdf,要明白 sigmoid function 是怎麼來的,它的求導怎麼算。更重要的是必須知道Logistic Distribution的參數 和 這兩個參數是幹嘛的,如果可以研究還可以研究一下它的物理含義,因為物理意義在現實生活中非常有用。當你在分析數據的時候,看到某些數據呈現的時候會本能的反應出哪種distribution可能會很好的暫時性的描述這些數據的規律。換句話說:如何將數據結構化,歸納化,學好 stats 和 probability 尤其重要。
- 中級:
有了上面的基礎,可以學習比較難的。我覺得更近一步可以學一些 applied math,因為基礎打好了之後,應用比較重要。
- Elements of Statistical Learning: data mining, inference, and prediction.
2nd Edition. 這本stats的書比較難,但是很好
我在這個階段經常做的事情是深究,就是當你遇到某個問題的時候就把這個問題詳細的研究一遍。比如我記得原來學 Baye"s theorem 的時候,把幾個公式就記一下。後來要用到 bayesian regression 了,我再系統地學了一遍,發現 Baye"s theorem 理解的好,對於後面學習 bayesian regression是多麼的重要。很長一段時間我不能理解 prior 的意義在哪裡。回顧所有的基礎,你會發現,你的理解會更上一層。
- 高級:
更高一層的學習就應該深度學習 Machine Learning 和 Data Mining 的東西了。我一開始學的不是 Machine Learning,是Operation Research,通俗地講就是優化(optimization) 。Machine Learning 很多的時候是 predicting。但是核心的思想我覺得是一樣的。學的越深需要學得肯定就越多,就直接推薦一些書和材料吧:
- Manning | Machine Learning in Action Machine Learning In Action 這本書比較基礎,還有實際的coding演習,我覺得很不錯,讓人有一個基礎的概念。
- awesome-machine-learning/books.md at master · josephmisiti/awesome-machine-learning · GitHub github 上整理的machine learning 的書籍
- Machine Learning 絕對經典中的經典,我非常喜歡通俗易懂
- Introduction to Data Mining Introduction to data mining 我覺得是 data mining 的bible 我買了印影版,當字典在用。
- OptimalLearning Optimal Learning 有點難讀,導師的書就推薦一下。
- https://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/Chapter11.pdf Markov chain 的講義
還有很多。。。。我這邊有很多資料,如果有需要可以私信我,當時買了很多電子書。抱著學習的態度我們一起交流。
計算機
寫程序對 Data Scientist 來說同樣重要。如果說數學是戰術,那麼編程就是武器。ETL,data processing,data analyze 都需要很好的編程功底。如果說你用matlab和sas就能做好 data scientist 我是不相信的。
- 基礎:
最基礎的話先學一些 C++ 吧。或者Java,至少很多學校的 cs 101 要學一下。我這邊提供一些免費的在線課程吧:
- CS101 Introduction to Computing Principles Stanford CS
- introcs.cs.princeton.edu/ Princeton CS
- 進階:
我的話一般平時都用 python,用R的時候也不是很多,因為更喜歡python。學好python,不僅可以做很多演算法的事情,而且big data system 都會開放 python 的 api(雖然java比較多)。python 並不是很難,看源碼是一個比較好的方式。各種math toolkit的源碼:numpy,scipy的源碼看一看,我覺得對於成為一個好的data scietist 很有幫助。一開始如何學呢,我學的是google的python course,非常非常好:
- https://developers.google.com/edu/python/introduction 一天之後應該就可以入門了。
- R和python基本上都各有利弊,分析數據的時候可能用R比較多,介紹一下R的一個比較好的工具,R studio
- python in action
- 高階:
- Hadoop 的一套東西都需要知道吧。什麼是 Big Table,什麼是 Map reduce,什麼是 NoSql。其實說白了就是要掌握big data 的工具,不用hadoop也要了解其他的工具。
- 現在用spark 和 storm的越來越多了,我很喜歡 spark,但是坑有點多,這邊特別希望能和有過實戰的人交流。最近我也想把spark部署到自己公司的機器上,然後優化一下開源出來和大家一起分享。
其他
除了這些我覺得作為一個 Data Scientist,除非你就做一個最最基礎的大數據架構師(雖然很多人覺得這和 Data Scientist 是完全兩個不一樣的工作,但是當年我在 start up的時候要同時做這兩個工作)還必須要懂得如何和市場結合起來,解決實際的問題。Data Scientist 更多的並不是 science 而是engineering,需要著手解決實際的問題。讓更多的事情通過數據來變得更有效率以及更加直觀。多思考,多想像,對數據有敬畏之心,就可以很好的成為一位 Data Scientist
kaggle,這一個關鍵詞對你來說就夠用了
這個有點難呀 要入門 入了門的人怎麼看都簡單 在門外很痛苦
先掌握基本技能,比如方法,工具的使用,會建模分析。再找一個企業進去工作,只有真正在工作中提升才是最大的。
這個就比較困難了,畢竟死看書本還是很難理解的,建議題主可以去一些培訓機構的官網上看看,很多培訓機構應該都有免費視頻的,哪怕是能夠看到免費的最初幾節課,稍微入了門,也是有很大幫助的。
Big Data是近來的一個技術熱點,但從名字就能判斷出來它並不是什麼新詞。畢竟,大匙一個相對概念。歷史上,資料庫、數據倉庫、數據集市等信息管理領域的技術,很大程度上也是為了解決大規模數據的問題。被譽為數據之父的Bill Inmon早在20世紀90年代就經常將Big Data掛在嘴邊了。要處理如此龐大的數據,它的基本流程如上圖。
數據抽取與集成
● 大數據的一個重要特點就是多樣性,這就意味著數據來源極其廣泛,數據類型極為繁雜。這種複雜的數據環境給大數據的處理帶來極大的挑戰。
● 要想處理大數據,首先必須對所需數據源的數據進行抽取和集成,從中提取出關係和實體,經過關聯和聚合之後採用統一定義的結構來存儲這些數據。
● 在數據集成和提取時需要對數據進行清洗,保證數據質量及可信性。
● 現有的數據抽取與集成方式可以大致分為以下四種類型:數據整合、數據聯邦、數據傳播和混合方法等。
數據分析
● 傳統的分析技術如數據挖掘、機器學習、統計分析等在大數據時代需要做出調整,因為這些技術在大數據時代面臨著一些新的挑戰:
1、數據量大並不一定意味著數據價值的增加,相反這往往意味著數據噪音的增多
2、大數據時代的演算法需要進行調整(邦弗朗尼原理)
3、數據量大並不一定意味著數據價值的增加,相反這往往意味著數據噪音的增多
數據解釋
● 數據分析是大數據處理的核心,但是用戶往往更關心結果的展示。如果分析的結果正確但是沒有採用適當的解釋方法,則所得到的結果很可能讓用戶難以理解,極端情況下甚至會誤導用戶。
● 大數據時代的數據分析結果往往也是海量的,同時結果之間的關聯關係極其複雜,採用傳統的解釋方法基本不可行
● 可以考慮從下面兩個方面提升數據解釋能力:
-- 引入可視化技術
-- 讓用戶能夠在一定程度上了解和參與具體的分析過程
然而,Big Data作為一個專有名詞成為熱點,主要應歸功於近年來互聯網、雲計算、移動和物聯網的迅猛發展。無所不在的移動設備、RFID、無限感測器每分每秒都在產生數據,數以億計用戶的互聯網服務時時刻刻在產生巨量的交互……要處理的數據量實在是太長、增長太快了,而業務需求和競爭壓力對數據處理的實時性、有效性又提出了更高要求,傳統的常規技術手段根本無法應付。在這種情況下,技術人員紛紛研發和採用了一批新技術。
01
存儲
存儲分散式緩存、基於MPP的分散式資料庫、分散式文件系統、各種NoSQL分散式存儲方案,內存資料庫等
02
計算
Map Reduce、流計算、圖計算……
03
應用
HIVE,pig,mahout,Sqoop以及ETL工具,統計與報告工具等
下面以Google為例,我們來看看它的技術演進
Google 於2006 年首先提出了雲計算的概念,並研發了一系列雲計算技術和工具。難能可貴的是Google 並未將這些技術完全封閉,而是以論文的形式逐步公開。
正是這些公開的論文,使得以GFS、MapReduce、Bigtable為代表的一系列大數據處理技術被廣泛了解並得到應用,同時還催生出以Hadoop為代表的一系列雲計算開源工具。這些工具有些是完整的處理平台,有些則是專門針對特定的大數據處理應用。
現金一些主流的處理平台和工具
就實踐方面來說,Hadoop 已經發展成為目前最為流行的大數據處理平台
Hadoop是一個分散式系統基礎架構,由Apache基金會開發。
Hadoop是一個開源的可運行於大規模集群上的分散式並行編程框架,藉助於Hadoop,程序員可以輕鬆地編寫分散式並行程序,將其運行於計算機集群上,完成海量數據的計算。
Hadoop採用了分散式存儲方式,提高了讀寫速度,並擴大了存儲容量。採用MapReduce來整合分散式文件系統上的數據,可保證分析和處理數據的高效。與此同時,Hadoop還採用存儲冗餘數據的方式保證了數據的安全性。
Hadoop作用
Hadoop中HDFS的高容錯特性,以及它是基於Java 語言開發的,這使得Hadoop可以部署在低廉的計算機集群中,同時不限於某個操作系統。Hadoop中HDFS的數據管理能力,MapReduce處理任務時的高效率,以及它的開源特性,使其在同類的分散式系統中大放異彩,並在眾多行業和科研領域中被廣泛採用。
Hadoop功能Hadoop優點
●可擴展:不論是存儲的可擴展還是計算的可擴展都是Hadoop的設計根本。
●經濟:框架可以運行在任何普通的PC上。
●可靠:分散式文件系統的備份恢復機制以及MapReduce的任務監控保證了分散式處理的可靠性。(元數據磁碟錯誤,心跳測試,副本數)
●高效:分散式文件系統的高效數據交互實現以及MapReduce結合Local Data處理的模式,為高效處理海量的信息作了基礎準備。
Hadoop生態系統圖
謝謝閱讀!
從現在開始準備考研。
推薦我的一門課程,全棧數據工程師養成攻略 - 網易雲課堂 ,感興趣的話可以關注
後續還會結合更多實例,例如我做過的一些項目和參加過的一些比賽,出一些其他視頻教程
0. 英語好是必須的。
1. 現在DM不如前兩年那麼火了,有點回歸理性,轉行要慎重。
2. 建議通過一個項目來入手,串起應知應會的知識點。不妨搭個基於nutch-Hadoop的數據挖掘系統,爬一些行業相關的網站,再用Python實現幾個常用的聚類分類演算法,就算入門了。
找一些中文的基礎教程的話可以看一下數析學院(http://datacademy.io),都是國人翻譯好的免費資源。
有那精力還不如學個java啊,數據結構什麼的→_→當個互聯網碼農性價比高多了
只能入個門吧
我覺得挖掘機工程師更有可能
這裡安利一個學習資源,入門機器學習的科研神器——數據超市,裡面封裝了常見的機器學習演算法,可以讓你在無需編程的前提下,快速上手機器學習,輔助你學習演算法,當然你還可以搭建分析流程快速學習演算法
機器學習系列(7)_機器學習路線圖(附資料) - CSDN博客 ,轉載一波,非常系統且全面。
有興趣是好事,起碼能驅動你學下去。雖然很難,但是不給樓主潑冷水。
講講我自己的例子吧。數據挖掘不同於nlp和cv之類的問題,因為建模比較複雜(不同數據的處理套路很不一樣),這個也是我做了一段時間後轉投cv的原因,當然cv因為主流idea太多,學習也很累,瘋狂刷paper 。
現在講我學習方法。首先當然是擬合工具了,這個主流的肯定是機器學習(可用sklearn )了,具體說應該是一系列集成模型,xgb啊lightgbm之類的。這個需要樓主自己去學原理,然後熟悉api(兩者同樣重要)!
之後是數據清理工具,建議熟悉了python 基本數據結構後去學習numpy pandas等工具,panda 提供了類似sql的處理機制,所以計算個統計量非常方便。
上面的參考教程,推薦林軒田老師的,或者ng的,兩位的課程都可以在course 上找到。配套作業主要是模型的原理實現,如果樓主未來想往機器學習系統底層開發做,建議完成。
剩下的就是實戰了,建議kaggle 的101題目入門,對了別做minst,那個真的不能鍛煉你的處理數據能力,可能你想了很久的特徵,沒有我一個conv層提的好。數據處理很重要,好的特徵能讓你高別人若干百分點,模型可能只有1-2%的收益。
邊學邊做最好。api很熟沒有提取特徵的思路,或者有想法卻不能實現都不好。
最後祝樓主成功!加油!
【知乎小透明首答】我也是自學成為數據挖掘工程師的。我在請教過我校美籍華人老師、學校簽約培訓班老師、專業課老師後,確定了自己的學習路線:
搭建LINUX環境,裝上Linux,然後學習它的簡單指令,然後主要學習hadooop,目前還在學習linux,嘿嘿
你上班需要接觸數據。零基礎也不是一點不懂,一般都是計算機專業或數學專業的吧!
其次,買書、看視頻、去培訓班學習。
只有理論與實際相結合才能學得好!
最後,需要有個內行人帶一帶。
自從互聯網+的的發展,推動了數據挖掘的興起,是時下非常火的專業,完全無基礎,自學還是很有難度的,建議去一些專門的培訓機構培訓,再加上自學,然後找相應的工作結合實際操練
簡單,先考研再讀個博。博士能畢業,應該學的差不多了!
推薦閱讀:
※意識到了自己沒有辦法成為 top 1% 的程序員,還應該選擇程序員的道路么?
※有哪些比較好的機器學習、數據挖掘、計算機視覺的訂閱號、微博或者是論壇?
※機器學習(machine learning)在經濟學領域是否有應用前景?
※從事經濟、金融工作的人都是通過什麼渠道獲得數據資源,運用什麼軟體來分析行業狀態和經濟走勢的?
※調參這事兒,為什麼越干越覺得像老中醫看病?