數據挖掘入門基礎知識疑惑?
本科階段只學過C語言,外加一些線性代數,概率論的知識。現在碩士階段進行數據挖掘、自然語言處理的學習中感覺到力不從心。不知道從何去入手,有一堆書也不知道先後順序或者如何搭配。數據結構與演算法、離散數學、資料庫等內容也不清楚。總而言之就是相當之困惑,感覺前景一片黑暗,希望能有人幫我解下惑,不勝感激!!
1 工具的學習(排列有序)
python(我用的python tutorial,細節可以查書learning python,然後查詢一些文檔比如,numpy,matplotlib官方文檔)
java (我先看的 head first java, 然後thinking in java看了一部分)
linux shell (越熟越好,我只是刷了鳥哥那本入門書的前半部分)
hadoop (需要會折騰,在win電腦上不好配置,如果實驗室有環境或者有人幫忙帶帶入門最好。
2 機器學習入門(排列有序)
集體編程智慧(把例子刷一遍,一方面是理解入門數據挖掘,一方面更熟悉下python)
數據挖掘導論,機器學習(tom mitchell),Andrew Ng的機器學習課程,機器學習實戰(主要參考下書中的代碼,書中代碼並不是非常完美,主要用來入門)。。
這幾個材料建議選其中一、二個為核心連貫學習,其他可以參考。比如你先用數據挖掘導論了解一些基本的概念,用Andrew Ng的機器學習課程進行比較細緻的學習,其中要實習一些演算法的時候可以參考機器學習實戰,某些演算法看不懂時候可以參考其他書籍
Kaggle找幾個最簡單的題進行入門實戰。(比如泰坦尼克號那題)
可以適當了解一些機器學習的具體應用,如:推薦系統、圖像處理、語音或搜索。(結合自己的興趣專業選擇某一個深入學習)
Pattern Recognition And Machine Learning,The Elements of Statistical Learning 兩本理論非常詳細的巨著,如果有精力一定要看看。建議從第一本看起(因為我也只能勉強看懂第一本,第二本如果其他人都說很經典,可以看懂的話肯定是要看的)。
3 數據結構基礎
演算法導論+leetcode在線題目
總結:
看書要多動手,多總結,比如看了個樸素貝葉斯演算法,最好把這個方法總結一下,然後編寫代碼實現簡單的例子。參考更多的書籍,參考baidu
-----------------------------
另外如果想找份工作一定要多多實習,只要有一份不錯的實習經驗找個好工作的概率大大增加。從另外一個角度,不要把寶全部壓在校招上
你現在碩士,不知道是否讀博,時間也短,動手把自己碩士畢業要用的演算法code出來,這個過程你自然就知道該補什麼了。這個領域很大,包括入門都是,碩士畢業沒必要大而全,小而精就好。
從數學的角度談一下吧:最基本的理解數據挖掘,應該需要最優化,凸分析(這個其實只要一點點),線性代數,統計學,數值計算等(等我想起來了再補充)。老實說,對數學課程的種類不多,範圍不大,但是對理解的深度卻要求頗高。你不理解歐式空間距離,就沒辦法理解k臨近,你不理解條件概率和最大似然估計就不理解貝葉斯、EM演算法,你不理解馬爾可夫, 你就不理解隱式馬爾可夫,你不理解梯度,就沒法理解梯度下降法,你不理解常用的數值演算法思路,就沒法理解隨機梯度下降法。
總而言之,大多數工科學術學習數學的套路:記公式,套題。是不太適合進行深入學習的。數學中有很多公認的直覺性的東西,也許聰明人他沒有在專業數學領域學習過,也有這種直覺,但是對於大多數人認為數學很難,也就是因為既沒有大量的時間去琢磨數學思維,又沒有「天賦」。
對於題主的建議,就像前面的朋友說的,希望你從少數演算法入手,理解意義,code出來,在這個code的過程中,發現自己不理解的,再去查資料,會提升很快。
謝邀。首先得明確一個問題:你為什麼要學習數據挖掘?
為了發論文畢業?
為了找工作?
為了提升自己?
學習大數據最有效率的方法就是在實際項目中操作,如果只是單純的看看書,上上公開課,能夠培養起對大數據領域全方位的認識,但是如果沒有真刀真槍的實戰,很難培養出真正的數據挖掘水平。
所以,如果項目中有實際的數據可用,或者手邊有可用的數據,我的經驗是:直接從做一個小demo開始,按照教材的例子一步步的建模,遇到不懂的名詞馬上google或者翻教材,讀書不在於多,在於精讀,推薦先看我在專欄里和之前答案里推薦的教材,由淺入深。有時候書上的某一個知識點不懂,就看看另一本教材怎麼說,或者直接看英文原版,但不要在一個地方糾結太久。你有一定的基礎,相信理論上的知識不是問題,建議從python編程入手,簡單好學,擴展包含了很多機器學習、數據挖掘、可視化的package,還能製作爬蟲抓取數據,現在已經是很多高校入門數據科學必學的編程語言。
延伸閱讀:
如何系統地學習數據挖掘? - 知乎
零基礎學習 Hadoop 該如何下手?
「高效能」數據科學家的十個好習慣
做數據分析不得不看的書有哪些?
數據達人養成計劃LIVE:Live - 全新的實時問答
新鮮出爐,評價4~5星,你可以試試。
我也是正在做數據挖掘的研究生。
首先,放棄C吧,用C做數據挖掘是不可想像的,先學個PYTHON。
其次,數據結構與演算法、離散數學、資料庫這些都不重要(對新手來說)。先把機器學習的演算法刷一遍。推薦本書,機器學習實戰,把裡面的代碼敲一遍,基本就差不多了。再學點spark,你已經可以開始做比賽或者項目了。
最後,數據挖掘:概念與技術看看這本書, 韓家煒寫的,大牛不解釋。
看完以上的內容研究生馬馬虎虎的畢業也就差不多了,要想深入的話,項目經驗必不可少。
-------------------------------16-3-29更新----------------------------------
前幾天周志華大牛來我們學校開講座,給我們推薦了他寫的書,圖書館借來確實不錯,也推薦給大家:
http://www.amazon.cn/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%91%A8%E5%BF%97%E5%8D%8E/dp/B01ARKEV1G/ref=sr_1_1?ie=UTF8qid=1459234068sr=8-1keywords=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
數據挖掘門外漢,自然語言處理愛好者弱答:
首先入門:看《數學之美》吧,作為一個非科班出身的強烈推薦的入門讀物,沒有其二只有其一,看了它你就知道你要做什麼了。
關於工具:python或者matlab,在我們那個時代,實驗室流行的還是後者,不過我強烈推薦前者,目前老外寫的使用python的機器學習和數據挖掘或自然語言處理的書籍噹噹上還是能找到不少,也是近幾年發展起來的,我們那時候都還沒有,現在你們可幸福了。(目前這類實踐也有專門的網站可以學習,有了它操練起來吧,然後一句句實驗例子和結果,最後組合自己想法這樣)
關於專業書:三大塊:機器學習類(方法),概率統計類(理論基礎),數據挖掘類(實踐)。這個在百度或谷歌搜下「十大推薦書籍」,基本上都有了,然後圖書館借咯,書不在多,在於細細品味。
最後切勿一口一個胖子。
一樓肖博的建議挺好的,我也補充一下。
首先,樓主有一定的C基礎,那基本的數據結構和語法應該問題不大,資料庫就是一個應用型的東西,難度也不大。這是需要掌握。其次,python r sas java甚至matlab必須掌握一門,具體哪一門要看你的導師以及師兄之前的代碼積累是哪一門。當年我甚至是C#加oracle做的。
然後制定文獻閱讀及演算法實現計劃,以研究生的水平,2周1篇甚至1周1篇kdd相關研究方向的論文。一開始看會非常慢,看習慣之後就好了。最好讀之前先讀相關方向的綜述論文。我們是一星期一個文獻閱讀分享會,有很多論文自己沒有讀但是同門一分享就了解了很多。lda,lasso,hmm,gmm還有概率圖等都是其他人讀了分享的,分享會這個東西挺好的。
制定3個月實現其中一篇論文演算法的計劃,一年可以積累3-4個演算法進行實驗對比。數據的話使用kaggle的數據。
同時,精通幾大基礎演算法的推導。當時我們老師讓我們學的是EM演算法,最大熵,SVM還有一些如牛頓法等的簡單凸優化演算法。最後考試還要吧推導寫一遍,比較崩潰。
研究生2年搞定以上肯定沒有問題,然後研二下應該就可以發論文寫畢業論文了,研三隨意畢業沒有問題。
祝樓主順利。
可以嘗試先學習下關於數據挖掘常用的演算法。試著自己能把代碼敲出來,這樣對演算法就有基本的了解了。我推薦看下 機器學習實戰,這本書對常見的演算法介紹的蠻詳細的。裡面也有代碼可以試著自己敲出來。這樣才算學會~~~~
那麼用哪種編程語言呢,上面推薦的這本書用的 python,有個好處就是python 有比較好的現成的演算法庫,矩陣計算庫,比如,scikit-learn,numpy。不用太多關心編程語言本身,專註於演算法實現。
至於以後可能會用到c++,java或者scala這些,到時候就看你用到啥工具了。。可以選擇一個深入學習下。
有了基本的演算法認識,然後應該可以跟著實驗室的項目啥的~~~完了就知道自己哪些缺的,需要去補。選擇自己感興趣的領域,小小深入下~~
再推薦個網站,kaggle,上面有很多的練習~~~
1什麼是數據挖掘/分析
簡單地說就是,在大型資料庫中,自動發現有用信息的過程,加以分析。其中資料庫中的知識發現是重要的環節,也就是人們說的KDD,knowledge discovery in database。
2KDD是什麼
其實就是一個數據處理的過程,從輸入數據開始,進行預處理工作,包括特徵選擇,維歸約規範化和選擇數據子集等等,隨後進行分析和挖掘,再經過處理,例如模式過濾,可視化,模式表示等,最後形成可用信息的過程。
3數據挖掘要解決什麼問題
具體的講主要是以下幾個,首先是數據的可伸縮性,提高或改變數據的可伸縮度。其次是解決數據高維性的問題。處理異種數據和複雜數據。解決數據所有權與分布問題。對非傳統的分析進行合理處理。
4數據挖掘的任務
其實主要包括四個大塊,可以獨立運行,也可以聯合操作,分別是聚類分析,預測建模,關聯分析,異常檢測。
聚類分析實用的技術包括K均值,凝聚層次聚類,dbscan,簇評估等,主要目的是通過基於原型,密度,圖等的聚類,發現其間的關係。
預測建模則更多的是一種可視化角度分析方法,利用分類,回歸等方法,來建立模型解決問題。
關聯分析顧名思義,更多強調數據中的特徵強關聯,例如說過一萬次的啤酒與尿布等。
異常檢驗則主要是識別不同於其他數據的具有顯著特徵值的數據。
想學習數據挖掘,幾個基礎知識是必備。首先是線性代數,包括向量,矩陣等。否則你根本不會是用科學工具。其次是維歸約,包括PCA,SVD等技術的使用。還有概率統計,回歸方程,優化,也是必備知識。暫時寫這麼多,有時間再多說些。
謝邀。
最近一直在反思自己的學習方式是否正確,看很多別人推薦的書和視頻,學語言學演算法。因為總感覺有不足的地方,所以一直在Input.
我覺得正確的方式是主動的去output. 就是找本書翻翻,了解了基本的概念之後就去做具體的東西,做的過程中,用到什麼學什麼。你是做數據挖掘的,一開始機器學習的演算法搞那麼清楚沒什麼卵用,扭頭就忘了。你做的東西基本成型了,有自己的理解了,覺得別人的包不好用了,再去學機器學習就知道自己為什麼去學了。表示忍不住,針對題主的話來回答問題吧。
本科階段只學過C語言——這個太坑了,建議儘快掌握Java或Python。
外加一些線性代數,概率論的知識——這個不錯,不過事實上本科階段的知識並不夠用,但別擔心。
現在碩士階段進行數據挖掘、自然語言處理的學習中感覺到力不從心。不知道從何去入手,有一堆書也不知道先後順序或者如何搭配——未知題主手上現在有什麼書,個人推薦《Python自然語言處理》,簡單易懂,有中文版,雖然比較厚但是內容相對全一些,真的很容易上手。這個書還可以讓人一邊學一邊做實驗。
數據結構與演算法、離散數學、資料庫等內容也不清楚——這幾個不捉急,可以先放放。
另外就是雖然都不怎麼推薦讀中文文獻,但是題主想要上手的話,去找一些中文的綜述性文獻來讀還是可以幫助了解領域的。另外就是關於寫代碼,如果只學過C的話,雖然自己編演算法肯定是個學習的好途徑,不過我還是建議同時也看一些已有的開源工具的代碼,自然語言處理方向開源的代碼很多,可以到網上多多搜索,掛在自己的機器上試試。總之就是別有什麼畏難情緒,我當初一頭霧水地上了這個道兒,也畢業了,23333
「數據挖掘」這個概念被搞爛了。
在國內是兩層分化,高級的碩士畢業3年後年收入是40萬CNY(行業平均水平),低級的就是普通勞力了。
區別就在於理論基礎能否熟練運用,書本知識是否真的學明白了。
我是搞信息分析的,也想學數據挖掘,但實踐中發現最後還是回到了數理統計。
本人研究生,自學數據挖掘,在看the element of statistical learning,同時學習python編程。。。真心建議看斯坦福公開課:機器學習。。。
統計出身,也曾入計算機學院一起學習演算法,機器學習,數據挖掘這些課程。個人的感覺是,先學統計還是先學編程和相關的數據挖掘包,起點不同,思考方式會不同,但並不耽誤做事,因為目的都是解決問題。
選擇先了解統計的話,建議The Elements of Statistical Learning,配合R和Python。選擇Python編程直接邊做邊學的話,看Scikit-Learn的Documentations,配合KDD的題目和數據,還有Andrew Ng的機器學習公開課,書的話,推薦Tom Mitchell的Machine Learning.
路徑很多,資源很多,最重要是興趣和保持專註,因為這個領域發展很快,競爭也越來越大,需要不斷學習下去。要教機器學東西呢,自己都拎不清邏輯和路徑,眼光不夠遠,就不好啦。
默默說一句,上面這些答案很少有科班的啊.....
建議題主參考 北京大學數據科學院 張志華講解機器學習課程http://ocw.sjtu.edu.cn/G2S/OCW/cn/CourseDetails.htm?Id=398
對於我們大部分人來說,數據挖掘基本上都是靠著自學完成的。
學習數據挖掘有一個誤區:就是不知道從哪本書開始學,可能這本書看了幾章突然發現某些知識點不會了,不能繼續下去,又去看其他的書。視頻也是如此。
-是這些書不適合入門嗎?
-不是的。
通常,學習數據挖掘,都是從學習機器學習演算法開始,這是對的。
HOWEVER!
隨便找一本講機器學習演算法的書,需要的數學基礎,除了大學三門數學公共課,還包括:統計學、矩陣分析、實分析、複分析、凸優化、隨機分布、數值分析、離散數學、偏微分方程、運籌學、隨機過程、抽象代數、泛函分析、微分幾何、拓撲學……
-難道需要把這些都學會才能真正看懂機器學習嗎?
-definitely NO!
實際上,機器學習所用到的,只不過是這些學科中一點點的知識罷了,而不是全部。掌握以上全部知識。的確對學習機器學習有絕對大幫助,但隊友計算機/軟體工程專業或非理科改行的人來說,沒有三四年的苦工是不可能掌握這些的。
作為一個本科二年級就開始學習數據挖掘,到現在已經工作三年的過來人,我對此深有體會。
每個人的基礎都是不同的,所以,選擇一條絕對適合你的學習路線,知道你需要哪些知識點,如果快速理解,才是真正有意義的學習方法。 數據挖掘學起來,會有無數難關讓你想放棄,想繞過他。但請記住,真正解決這些難題的方法,或許只是翻開某本數學書,花上幾分鐘看一下其概念。
末尾來個硬廣。
我們 6位BAT及金融機構從事數據科學領域工作的工程師,現提供量身定製的計劃,基於我們團隊在讀研期間及工作中的共同經驗,讓大家少走彎路,直達理想的標準。
我們很了解新手的處境,知道新手會遇到什麼困難。我們知道這些困難如何解決。所以為您制定的方案,就是從現有的學習視頻和書籍中(我們會為您提供)為您選一條適合您走的路,適合您的學習順序,讓您在遇到困難時,已經知道癥結,從而能夠繼續深入的學習。
詳情請戳
數據挖掘 完整學習路線+學習方案指南
分享一下我入門的過程。
自己動手實現基礎演算法,從基礎演算法開始搞起,不要一來就搞複雜的演算法,貝葉斯 邏輯回歸 決策樹 kmeans,慢慢地再把一個複雜的演算法搞透,想做圖像可以弄CNN,想做nlp可以搞最大墒 lda rnn。
實現這些演算法編碼能力 演算法能力 數學能力都會上來,leetcode我也做,但主要是用來應付面試的本人電力負荷預測領域,一直以來用c做預測,都是基本演算法實現
近年來大數據熱,預測需要研究數據挖掘,但對數據的分析處理大部分還在excel 階段
想通過一些實例入門,但是又是動手小白。對怎麼做完全沒有概念,求大牛指導
數據挖掘的概念範疇很廣,從大的方面說,包括理論和實踐兩方面。理論方面:高數、線代、概率論、數據結構、機器學習演算法、最優化、運籌學、隨機過程等。實踐方面:分析工具(Matlab、Python、R、SAS等)、分析範式、數據理解、可視化等。前者看一本經典教材即可,推薦《機器學習》或《數據挖掘概念與技術》,後者就需要多練習多實踐,熟能生巧,如果用Python的話推薦《機器學習實戰》邊學邊練。數據分析就像做飯一樣,做的次數多了自然就有經驗了,是一門工程性很強的實踐活動,分享讀博士期間收集的一些數據集,可用來練習實踐。各領域公開數據集下載 - 知乎專欄
推薦閱讀:
※AI領域的灌水之風如何破局?
※怎麼培養數據分析的能力?
※機器學習里的 kernel 是指什麼?
※零基礎自學如何成為合格的數據挖掘工程師?
※意識到了自己沒有辦法成為 top 1% 的程序員,還應該選擇程序員的道路么?