數據挖掘(數據分析)從業指南
一位數據挖掘成功人士 給 數據挖掘在讀研究生 的建議:
關於數據挖掘方麵的研究,我原來也走過一些彎路。其實從數據挖掘的起源可以發現,它並不是一門嶄新的科學,而是綜合了統計分析、機器學習、人工智能、數據庫等諸多方麵的研究成果而成,同時與專家係統、知識管理等研究方向不同的是,數據挖掘更側重於應用的層麵。
因此來說,數據挖掘融合了相當多的內容,試圖全麵了解所有的細節會花費很長的時間。因此我建議你的第一步是用大概三個月的時間了解數據挖掘的幾個常用技術:分類、聚類、預測、關聯分析、孤立點分析等等。這種了解是比較粗的,目標是明白這些技術是用來幹什麼的,典型的算法大致是怎樣的,以及在什麼情況下應該選用什麼樣的技術和算法。
經過初步了解之後,就要進入選題的階段,選擇自己感興趣的某個具體方向,然後通讀該方向的經典論文(綜述、主要發展方向、應用成果)。選題階段可能會花費較長的時間,比如一年。此時,要逐漸明確突破點,也就是將來你論文的創新點。創新對於研究來說非常重要,一方麵該創新的確比原來的方法要好,另一方麵該創新的確具有實用的價值。
隨後,就要來實現自己的想法。通常對於碩士論文來說,需要建立原型係統,進行試驗,並用試驗結果來支持自己的論文主題。原型係統就是對自己創新點的實現,需要很好地設計和開發。需要注意的是,原型係統的建立和開發商用係統不同,需要體現比較好的理論基礎。也就是說,原型係統並不是簡單地用於實現功能,而是將你的一整套理論付諸實現。這種理論基礎也將會包含在你的論文中,以體現論文的理論高度。
原型係統的搭建以及產生令人信服試驗結果,這個過程一般需要至少一年的時間。所以要集中精力於核心部分(體現論文創新點的部分),外圍的界麵等等不應投入太多的精力,以免進度失控。
最後是論文的整理和寫作了。建議你在之前的階段中逐步先寫出一些篇幅較短的論文(用於發在期刊、會議上),比如綜述、體係框架、算法內核、應用等等。這樣在最後寫畢業論文時就有了足夠多的內容,會寫得更好更快一些。
以上隻是泛泛而談。其實我覺得其中的關鍵點在於選題,而選題的好壞取決於你對數據挖掘研究現狀的了解、你的興趣和專長、以及該方向在應用上的意義。建議你和導師、同行多交流,能夠讓自己的方向更清晰。
至於數據挖掘領域的就業,應該來說還是前景不錯的。如果你對研究有興趣,象微軟研究院、Google、高校研究所都是不錯的地方;如果你對實際應用有興趣,很多大的公司包括IBM、Accenture、亞信等等都有相應的人力需求,當然一些甲方的單位比如證券、保險、金融等等單位也都需要分析人才。
關於論文如何創新
“創新”是個很尖銳的問題。以前我幫導師審論文時,給論文評分包括幾個要素,分別是理論基礎是否堅實、研究問題的重要性、研究成果的創新性等。
所謂創新,就是你解決問題的方法是否和其他人的解決方法有所不同,而這種不同又是否更有利於解決問題。因此,要發現創新點,實際上需要充分的準備和深入的研究。
①充分的準備:既然創新是找出解決問題的更好方法,那麼首先你就要發現問題,而且要發現有價值的問題。當找到這種問題時,再去查找有沒有人提出了解決這個問題的方法,他們的方法是怎樣的,還存在什麼不足之處。
這個階段需要做大量的調查搜集的工作,也是做研究的準備階段,常常需要通讀相關研究領域的經典文獻以及最新進展,寫讀書筆記予以總結。
②深入的研究:當你發現了值得研究的問題,並且知道在這個問題上還沒有很好的解決方法時,你就有了創新的機會。找出現有解決方法的不足之處,提出自己的解決思路,並予以驗證,通過試驗或者推理證明你的方法是有效的,創新點也就產生了。說起來容易做起來難,就象醞釀一個新發明一樣,常常會需要大量的試驗和周密的思考,而且也有可能忙了很久而一無所獲。
希望說到這裏沒有讓你心生懼怕,但我見過的一些認真做研究的人的確投入了很多的時間和精力才有所成就。當然對於國內的研究生來說,我倒是覺得在碩士階段去追求顯著的創新是不切實際的(個人的一管之見),其實把第一步做好已經不錯了。如果沒有做好第一步,打好基礎,就急於找些創新點,那麼這些所謂的創新點常常是毫無意義的,寫出來的論文最終避免不了被扔到垃圾桶的命運(我以前寫的一些論文也是如此)。大家常常說國內的研究論文質量很差,很大程度上也是源於我們現在的教育製度,要求研究生畢業前必須在SCI、EI或核心期刊上發表若幹篇論文,重量而不重質,造就了現在的核心期刊完全變成了完成畢業任務的自留地。
話題扯遠了,回到你關心的問題-如何找創新點。必要的文獻閱讀是不可缺的,了解研究現狀和背景,才可能發現創新點。如果你想這個階段快一些的話,也有些捷徑,比如你可以到一些研究單位或學者的站點上,察看他們目前的研究動態,一般來說他們正在研究的內容常常是目前還未解決的,這樣你可以盡快找到創新點的主攻方向。
數據挖掘人員從事的工作內容?
是不是開發數據挖掘平台、為別的企業單位量身製作DM、DW係統?除了這些還能有些什麼?
讀博深造的必要性
現在隻是無指導的自學狀態,能否在碩士畢業後勝任數據挖掘方麵的工作呢?考取名校的博士進一步深入學習的必要性大不大?
自學時的大方向
文本、Web等,讀博時肯定就某種具體方向深入研究,現在是否應該也自己重點專注於一種方向,而不是僅泛泛的熟悉各個方麵?
以下為blog主人的回複:
1.數據挖掘人員從事的工作和你所說的差不多,我認識的一些朋友大多在IT公司,為甲方實施DM、DW和BI等項目;還有一些是在甲方做分析人員,利用所掌握的數據挖掘知識來解決一些業務問題。
2.就以上的工作內容來說,我覺得碩士已經足以勝任,當然最重要的不是學位,而是運用你學到的知識來解決問題的能力。如果希望在理論研究上進一步發展,讀博也不錯,但發展方向會有所不同。
3.在碩士階段,我覺得還是全麵了解會更好一些。當然,因為數據挖掘涉及的內容較多,還是應該在一些方麵有所側重,比如那些得到廣泛應用的算法及其應用上,包括決策樹、聚類、回歸、神經網絡等等。這樣即便你以後不去讀博,對找工作也會有所幫助。
請問:現在數據挖掘開發主流平台和編程語言。那些更有優勢呢?現在大都用什麼呢 謝謝
以下為blog主人的回複:
現在一般應該是用Java開發的比較多,據我所知的,SAS Enterprise Miner客戶端是用Java開發,開源的數據挖掘工具Weka也是用Java開發的。當然其後台服務器端的軟件有部分可能會是C開發的,主要是出於性能的考慮。
如果你對數據挖掘平台開發有興趣的話,建議你去開源代碼網站SourceForge(https://sourceforge.net/)看看,可以找到相應的源代碼,也可以參加到他們的開發團隊中,共同開發。
請教: 1 為甲方做的針對行業的數據挖掘中,如果通過SAS等通用的軟件,如何體現行業不同、部門不同的特色要求?為他建立預測模型的過程中會對SAS的功能進行插件式的擴展嗎,還是SAS本身已經足夠建立特定的模型?
也就是說所謂的量身定製,也就是使用同一個軟件建立不同的模型,開發過程中不涉及軟件的改造?
2 是否數據挖掘人員不必是一個程序員?日常的工作已經很少涉及編程?
以下為blog主人的回複:
1.SAS的Enterprise Miner是通用型的數據挖掘軟件,所以要滿足客戶的特定分析需求,常常會采取兩種方法實現:一是做項目,通過項目團隊的開發和實施,來建立客戶所需的應用;另一種是采用SAS的行業解決方案(是SAS通過多年來對行業需求及解決方案的總結,形成的完整的solution),然後進行客戶化定製。
大多數情況下,不需要對SAS的功能進行擴展,而是用SAS的軟件就可以解決業務問題。所以我們通常做的項目不是軟件開發,而是項目實施。
2.如果單純從建立挖掘模型的角度來說,挖掘人員的確不必是程序員,隻要應用合適的挖掘算法,基於分析數據進行建模,並對模型進行調優就可以了。但實際上,挖掘人員並不隻做這些,更多的時候是做數據準備和數據探索,其中就可能需要進行編程,當然這些程序通常用於數據處理、模型結果的發布等等。
就我個人的經驗和了解,數據準備常常占一個數據挖掘項目工作量的60%~70%左右。
另外幾個問題:
我是中國海洋大學一名研一生,專業是數據庫。我想自己選擇一門方向,認真的學習,作為終身職業。譬如 java程序員、數據挖掘人員、數據庫管理人員等等。我比較喜歡數據挖掘,但是若幹問題難以釋惑。
問題1:現在選擇數據挖掘作為終身職業是明智之舉嗎?
現在網上對數據挖掘的前景討論的很厲害,褒貶不一。但是至少可以確定的是數據挖掘已經越來越被重視了。如你所言,大家看到的隻是表麵,許多成功的案例企業沒有對外公開。但不可否認的是,數據挖掘在中國的應用有屠龍之技的嫌疑,廣大的企業還沒有重視起來。
總之,男怕投錯行,這個問題總是敲擊著我。如果我是您的弟弟,您會鼓勵我走數據挖掘之路嗎?還是推薦其他的IT職業?
IDMer:
就我個人的觀點,數據挖掘的發展還是前途很廣闊的。說白了,數據挖掘就是一種分析問題的手段,問題一直會有,解決問題的手段也就一直有存在的必要。也許你聽說過美國早期西部淘金熱的時候,富起來的不是淘金者,而是為淘金者提供工具、水的人,甚至因為礦工需要結實耐磨的衣服,以致於牛仔褲風行起來並經久不衰。
至於你提到“屠龍之技”之說,隻是很多人因為不熟悉數據挖掘的內部技術而產生的莫測高深的感覺。其實,數據挖掘本身並不是新技術,它融合了來自於統計學、數據庫和機器學習等多學科已經成熟的內容,冠上了一個看起來比較時髦的名字而已。
組成數據挖掘的這三門支柱學科都已經發展了多年,也已得到了廣泛的應用。那麼我們也有理由相信它們的融合,能幫助我們解決更多的分析方麵的問題。何況,業界還是有很多的成功案例,體現出數據挖掘所帶了獨特優勢,而這些,是傳統的BI(報表、OLAP等)無法支持的。
以上說了不少數據挖掘的好話,下麵再看看硬幣的另一麵。如果你是我的弟弟(嗬嗬,雖然我沒有,但也和很多年輕的師弟師妹聊過擇業的話題),我會建議你不做IT業,哈哈,一句半真半假的玩笑。因為在IT這個行業看起來還是滿辛苦的,而且在很多項目中,常常需要重複一些沒什麼技術含量的任務,消耗的精力不少,獲得的成就感卻不多。
Anyway,我的建議,其實也是我原來給自己的一句座右銘:認為對的就去做。找到自己的興趣所在,並且感覺也有發展,那就盡力去做好了。
問題2:如果我現在選擇了數據挖掘,應該怎麼做?
您曾經在博客上回複一位北郵同學,建議熟悉學習各種算法;建立模型,創新思路改進算法撰寫論文。
我當前的計劃是 學習各種算法的原理;學習java語言;研究weka源碼,深入了解幾種經典算法的步驟;學習了解ETL,數據倉庫、OLAP等;通過使用的數據集建立挖掘模型;思考論文;有空的話 還得SPSS或其他一個流行軟件的使用方法。其中,我覺得難點是對數據集的整理形成挖掘流程的輸入。
其中,我也有若幹疑惑:掌握一門數據庫是很重要的,但是沒有時間一一了解SQL Server、Oracle、DB2等,但是在求職時,又說不定單位要求會哪門數據庫!?我想就SQL Server單獨進行深入的學習,包括學習在SQL Server中數據倉庫的建立和數據挖掘的應用,其他的也就不管了。不知我這個選一而棄其他的打算可取不可取?
IDMer:
從你的計劃來看,還是對自己要掌握的知識和技能,劃出了一個範圍。看上去還不錯,我隻是從個人的經驗出發,建議你不必苛求自己十八般武藝樣樣精通,很多方麵隻需基本了解,選擇幾個重點來練成自己的絕活。人的精力畢竟有限,目標越大就越難實現。
至於選擇那些作為重點,就需要在廣泛了解的基礎上,結合自己的興趣進行篩選了。
關於數據庫的掌握,我覺得熟悉一種產品已經足夠。SQL Server、Oracle、DB2都是關係數據庫,在學生階段把關係數據庫的基礎理論打牢,熟練運用SQL語句就可以了。這些主流數據庫之間的差異,不是遵循的標準不同,而是產品的特性有別,以及在性能調優時的技巧。
問題3:如何使學習階段與行業應用靠攏?
有一位學長,建議我學技術的時候要和行業靠攏,否則,“沒有行業背景的技術會很飄”。我覺得他說的有道理,技術是相當寬泛的,你不可能麵麵俱到;而且,當你實際工作後,也就專於一個行業,技術的需要麵也就變窄了。這樣,有利於學習重點,不至於在學習時,麵麵俱到,沒有突出。
但是,在數據挖掘方麵,曾經請教過你,數據挖掘人員的工作性質。一種是在甲方做分析人員,利用所掌握的數據挖掘知識來解決一些業務問題。一種是在IT公司,為甲方實施DM、DW和BI等項目(前輩自己便屬於此類?)。
在這裏,我不太明白作為甲方,日常具體做些什麼?難道是類似於網管性質的?那樣不更傾向於數據庫管理人員?他們還算是專業的數據挖掘人員嗎,怎麼覺得公司不大會安排這樣的職位呢?
我比較傾向於做乙方,那樣好像更專業似的。但是,乙方的話,都說數據挖掘在金融、電信、銀行還是銷售等方麵主要應用。難道這意味著要學習或了解金融電信的背景、CRM、經濟學、Excel……?
還有,您曾提到,畢業後也可以做研究工作,我覺得提供研究工作的崗位畢竟是少的。而且,那樣掙錢多嗎(流汗中)?
是否現在應該考慮以後進哪個(哪類)公司,現在根據它的要求來強化自己呢?
IDMer:
你這位學長說得沒錯,脫離實際的純理論大多會消散於無形。至於甲乙方的區別,實際上也沒有想像中那麼大,特別是對於剛剛參加工作的基層員工來說,可能差不多。
先在乙方曆練幾年,然後跳到甲方,這種狀況我看到不少。也許是因為在乙方接受的鍛煉和學習到新知識經驗的機會更多些吧,可以在年輕時有更多的積累。當然,如果有很好的在甲方工作的機會,也是不錯的選擇。
到乙方工作,特別是對一直待在校園裏的應屆生來說,招聘方重點考察的大多是你的知識是否紮實、性格是否有利於融入團隊等方麵。至於對行業的了解,一般很少有過多的期望,除非你有多年在相關行業做項目的經驗。
國內的研究機構還是以科研院所和高校為主,待遇一般要比公司低,但也有很多人,包括我的師兄師姐以及同學,選擇了繼續做研究,因為他們會從研究中獲得很多樂趣。另外一些研究機構是企業特別是外企的研究院,待遇也很好,但就要求你很出色才有機會加入。做研究還有一個很好的地方,就是國外的院校或研究所。
最後更新:2017-04-03 05:39:58