一位數據挖掘成功人士給數據挖掘在讀研究生的建議

原文見http://www.cognoschina.net/club/viewthread.php?tid=1518


關於數據挖掘方面的研究,我原來也走過一些彎路。其實從數據挖掘的起源可以發現,它並不是一門嶄新的科學,而是綜合了統計分析、機器學習、人工智能、數據庫等諸多方面的研究成果而成,同時與專家系統、知識管理等研究方向不同的是,數據挖掘更側重於應用的層面。

因此來說,數據挖掘融合了相當多的內容,試圖全面瞭解所有的細節會花費很長的時間。因此我建議你的第一步是用大概三個月的時間瞭解數據挖掘的幾個常用技術:分類、聚類、預測、關聯分析、孤立點分析等等。這種瞭解是比較粗的,目標是明白這些技術是用來幹什麼的,典型的算法大致是怎樣的,以及在什麼情況下應該選用什麼樣的技術和算法。

經過初步瞭解之後,就要進入選題的階段,選擇自己感興趣的某個具體方向,然後通讀該方向的經典論文(綜述、主要發展方向、應用成果)。選題階段可能會花費較長的時間,比如一年。此時,要逐漸明確突破點,也就是將來你論文的創新點。創新對於研究來說非常重要,一方面該創新的確比原來的方法要好,另一方面該創新的確具有實用的價值。

隨後,就要來實現自己的想法。通常對於碩士論文來說,需要建立原型系統,進行試驗,並用試驗結果來支持自己的論文主題。原型系統就是對自己創新點的實現,需要很好地設計開發。需要注意的是,原型系統的建立和開發商用系統不同,需要體現比較好的理論基礎。也就是說,原型系統並不是簡單地用於實現功能,而是將你的一整套理論付諸實現。這種理論基礎也將會包含在你的論文中,以體現論文的理論高度。

原型系統的搭建以及產生令人信服試驗結果,這個過程一般需要至少一年的時間。所以要集中精力於核心部分(體現論文創新點的部分),外圍的界面等等不應投入太多的精力,以免進度失控。

最後是論文的整理和寫作了。建議你在之前的階段中逐步先寫出一些篇幅較短的論文(用於發在期刊、會議上),比如綜述、體系框架、算法內核、應用等等。這樣在最後寫畢業論文時就有了足夠多的內容,會寫得更好更快一些。

以上只是泛泛而談。其實我覺得其中的關鍵點在於選題,而選題的好壞取決於你對數據挖掘研究現狀的瞭解、你的興趣和專長、以及該方向在應用上的意義。建議你和導師、同行多交流,能夠讓自己的方向更清晰。

至於數據挖掘領域的就業,應該來說還是前景不錯的。如果你對研究有興趣,象微軟研究院、Google、高校研究所都是不錯的地方;如果你對實際應用有興趣,很多大的公司包括IBM、Accenture、亞信等等都有相應的人力需求,當然一些甲方的單位比如證券、保險、金融等等單位也都需要分析人才。

關於論文如何創新

“創新”是個很尖銳的問題。以前我幫導師審論文時,給論文評分包括幾個要素,分別是理論基礎是否堅實、研究問題的重要性、研究成果的創新性等。

所謂創新,就是你解決問題的方法是否和其他人的解決方法有所不同,而這種不同又是否更有利於解決問題。因此,要發現創新點,實際上需要充分的準備和深入的研究。

①充分的準備:既然創新是找出解決問題的更好方法,那麼首先你就要發現問題,而且要發現有價值的問題。當找到這種問題時,再去查找有沒有人提出瞭解決這個問題的方法,他們的方法是怎樣的,還存在什麼不足之處。

這個階段需要做大量的調查蒐集的工作,也是做研究的準備階段,常常需要通讀相關研究領域的經典文獻以及最新進展,寫讀書筆記予以總結。

②深入的研究:當你發現了值得研究的問題,並且知道在這個問題上還沒有很好的解決方法時,你就有了創新的機會。找出現有解決方法的不足之處,提出自己的解決思路,並予以驗證,通過試驗或者推理證明你的方法是有效的,創新點也就產生了。說起來容易做起來難,就象醞釀一個新發明一樣,常常會需要大量的試驗和周密的思考,而且也有可能忙了很久而一無所獲。

希望說到這裏沒有讓你心生懼怕,但我見過的一些認真做研究的人的確投入了很多的時間和精力纔有所成就。當然對於國內的研究生來說,我倒是覺得在碩士階段去追求顯著的創新是不切實際的(個人的一管之見),其實把第一步做好已經不錯了。如果沒有做好第一步,打好基礎,就急於找些創新點,那麼這些所謂的創新點常常是毫無意義的,寫出來的論文最終避免不了被扔到垃圾桶的命運(我以前寫的一些論文也是如此)。大家常常說國內的研究論文質量很差,很大程度上也是源於我們現在的教育制度,要求研究生畢業前必須在SCI、EI或核心期刊上發若干篇論文,重量而不重質,造就了現在的核心期刊完全變成了完成畢業任務的自留地。

話題扯遠了,回到你關心的問題-如何找創新點。必要的文獻閱讀是不可缺的,瞭解研究現狀和背景,纔可能發現創新點。如果你想這個階段快一些的話,也有些捷徑,比如你可以到一些研究單位或學者的站點上,察看他們目前的研究動態,一般來說他們正在研究的內容常常是目前還未解決的,這樣你可以儘快找到創新點的主攻方向。

1數據挖掘人員從事的工作內容

是不是開發數據挖掘平臺、爲別的企業單位量身製作DM、DW系統?除了這些還能有些什麼?

2讀博深造的必要性

現在只是無指導的自學狀態,能否在碩士畢業後勝任數據挖掘方面的工作呢?考取名校的博士進一步深入學習的必要性大不大?

3自學時的大方向

文本、Web等,讀博時肯定就某種具體方向深入研究,現在是否應該也自己重點專注於一種方向,而不是僅泛泛的熟悉各個方面?

以下爲blog主人的回覆:

1.數據挖掘人員從事的工作和你所說的差不多,我認識的一些朋友大多在IT公司,爲甲方實施DM、DW和BI等項目;還有一些是在甲方做分析人員,利用所掌握的數據挖掘知識來解決一些業務問題。

2.就以上的工作內容來說,我覺得碩士已經足以勝任,當然最重要的不是學位,而是運用你學到的知識來解決問題的能力。如果希望在理論研究上進一步發展,讀博也不錯,但發展方向會有所不同。

3.在碩士階段,我覺得還是全面瞭解會更好一些。當然,因爲數據挖掘涉及的內容較多,還是應該在一些方面有所側重,比如那些得到廣泛應用的算法及其應用上,包括決策樹、聚類、迴歸、神經網絡等等。這樣即便你以後不去讀博,對找工作也會有所幫助。

請問:現在數據挖掘開發主流平臺和編程語言。那些更有優勢呢?現在大都用什麼呢 謝謝

以下爲blog主人的回覆:

現在一般應該是用Java開發的比較多,據我所知的,SAS Enterprise Miner客戶端是用Java開發,開源的數據挖掘工具Weka也是用Java開發的。當然其後臺服務器端的軟件有部分可能會是C開發的,主要是出於性能的考慮。

如果你對數據挖掘平臺開發有興趣的話,建議你去開源代碼網站SourceForge(
http://sourceforge.net/)看看,可以找到相應的源代碼,也可以參加到他們的開發團隊中,共同開發。

請教: 1 爲甲方做的針對行業的數據挖掘中,如果通過SAS等通用的軟件,如何體現行業不同、部門不同的特色要求?爲他建立預測模型的過程中會對SAS的功能進行插件式的擴展嗎,還是SAS本身已經足夠建立特定的模型?

也就是說所謂的量身定製,也就是使用同一個軟件建立不同的模型,開發過程中不涉及軟件的改造?

2 是否數據挖掘人員不必是一個程序員?日常的工作已經很少涉及編程?

以下爲blog主人的回覆:

1.SAS的Enterprise Miner是通用型的數據挖掘軟件,所以要滿足客戶的特定分析需求,常常會採取兩種方法實現:一是做項目,通過項目團隊的開發和實施,來建立客戶所需的應用;另一種是採用SAS的行業解決方案(是SAS通過多年來對行業需求及解決方案的總結,形成的完整的solution),然後進行客戶化定製。

大多數情況下,不需要對SAS的功能進行擴展,而是用SAS的軟件就可以解決業務問題。所以我們通常做的項目不是軟件開發,而是項目實施。

2.如果單純從建立挖掘模型的角度來說,挖掘人員的確不必是程序員,只要應用合適的挖掘算法,基於分析數據進行建模,並對模型進行調優就可以了。但實際上,挖掘人員並不只做這些,更多的時候是做數據準備和數據探索,其中就可能需要進行編程,當然這些程序通常用於數據處理、模型結果的發佈等等。

就我個人的經驗和了解,數據準備常常佔一個數據挖掘項目工作量的60%~70%左右。

以下來自:
http://blogger.org.cn/blog/more.asp?name=idmer&id=24891

張前輩:您好!

我是中國海洋大學一名研一生,專業是數據庫。我想自己選擇一門方向,認真的學習,作爲終身職業。譬如 java程序員、數據挖掘人員、數據庫管理人員等等。我比較喜歡數據挖掘,但是若干問題難以釋惑。

問題1:現在選擇數據挖掘作爲終身職業是明智之舉嗎?

現在網上對數據挖掘的前景討論的很厲害,褒貶不一。但是至少可以確定的是數據挖掘已經越來越被重視了。如你所言,大家看到的只是表面,許多成功的案例企業沒有對外公開。但不可否認的是,數據挖掘在中國的應用有屠龍之技的嫌疑,廣大的企業還沒有重視起來。

總之,男怕投錯行,這個問題總是敲擊着我。如果我是您的弟弟,您會鼓勵我走數據挖掘之路嗎?還是推薦其他的IT職業?

IDMer:

就我個人的觀點,數據挖掘的發展還是前途很廣闊的。說白了,數據挖掘就是一種分析問題的手段,問題一直會有,解決問題的手段也就一直有存在的必要。也許你聽說過美國早期西部淘金熱的時候,富起來的不是淘金者,而是爲淘金者提供工具、水的人,甚至因爲礦工需要結實耐磨的衣服,以致於牛仔褲風行起來並經久不衰。

至於你提到“屠龍之技”之說,只是很多人因爲不熟悉數據挖掘的內部技術而產生的莫測高深的感覺。其實,數據挖掘本身並不是新技術,它融合了來自於統計學、數據庫和機器學習等多學科已經成熟的內容,冠上了一個看起來比較時髦的名字而已。

組成數據挖掘的這三門支柱學科都已經發展了多年,也已得到了廣泛的應用。那麼我們也有理由相信它們的融合,能幫助我們解決更多的分析方面的問題。何況,業界還是有很多的成功案例,體現出數據挖掘所帶了獨特優勢,而這些,是傳統的BI(報表、OLAP等)無法支持的。

以上說了不少數據挖掘的好話,下面再看看硬幣的另一面。如果你是我的弟弟(呵呵,雖然我沒有,但也和很多年輕的師弟師妹聊過擇業的話題),我會建議你不做IT業,哈哈,一句半真半假的玩笑。因爲在IT這個行業看起來還是滿辛苦的,而且在很多項目中,常常需要重複一些沒什麼技術含量的任務,消耗的精力不少,獲得的成就感卻不多。

Anyway,我的建議,其實也是我原來給自己的一句座右銘:認爲對的就去做。找到自己的興趣所在,並且感覺也有發展,那就盡力去做好了。

問題2:如果我現在選擇了數據挖掘,應該怎麼做?

您曾經在博客上回復一位北郵同學,建議熟悉學習各種算法;建立模型,創新思路改進算法撰寫論文。

我當前的計劃是 學習各種算法的原理;學習java語言;研究weka源碼,深入瞭解幾種經典算法的步驟;學習瞭解ETL數據倉庫、OLAP等;通過使用的數據集建立挖掘模型;思考論文;有空的話 還得SPSS或其他一個流行軟件的使用方法。其中,我覺得難點是對數據集的整理形成挖掘流程的輸入。

其中,我也有若干疑惑:掌握一門數據庫是很重要的,但是沒有時間一一瞭解SQLServerOracle、DB2等,但是在求職時,又說不定單位要求會哪門數據庫!?我想就SQL Server單獨進行深入的學習,包括學習在SQL Server中數據倉庫的建立和數據挖掘的應用,其他的也就不管了。不知我這個選一而棄其他的打算可取不可取?

IDMer:

從你的計劃來看,還是對自己要掌握的知識和技能,劃出了一個範圍。看上去還不錯,我只是從個人的經驗出發,建議你不必苛求自己十八般武藝樣樣精通,很多方面只需基本瞭解,選擇幾個重點來練成自己的絕活。人的精力畢竟有限,目標越大就越難實現。

至於選擇那些作爲重點,就需要在廣泛瞭解的基礎上,結合自己的興趣進行篩選了。

關於數據庫的掌握,我覺得熟悉一種產品已經足夠。SQL Server、Oracle、DB2都是關係數據庫,在學生階段把關係數據庫的基礎理論打牢,熟練運用SQL語句就可以了。這些主流數據庫之間的差異,不是遵循的標準不同,而是產品的特性有別,以及在性能調優時的技巧。

問題3:如何使學習階段與行業應用靠攏?

有一位學長,建議我學技術的時候要和行業靠攏,否則,“沒有行業背景的技術會很飄”。我覺得他說的有道理,技術是相當寬泛的,你不可能面面俱到;而且,當你實際工作後,也就專於一個行業,技術的需要面也就變窄了。這樣,有利於學習重點,不至於在學習時,面面俱到,沒有突出。

但是,在數據挖掘方面,曾經請教過你,數據挖掘人員的工作性質。一種是在甲方做分析人員,利用所掌握的數據挖掘知識來解決一些業務問題。一種是在IT公司,爲甲方實施DM、DW和BI等項目(前輩自己便屬於此類?)。

在這裏,我不太明白作爲甲方,日常具體做些什麼?難道是類似於網管性質的?那樣不更傾向於數據庫管理人員?他們還算是專業的數據挖掘人員嗎,怎麼覺得公司不大會安排這樣的職位呢?

我比較傾向於做乙方,那樣好像更專業似的。但是,乙方的話,都說數據挖掘在金融、電信、銀行還是銷售等方面主要應用。難道這意味着要學習或瞭解金融電信的背景、CRM、經濟學、Excel……?

還有,您曾提到,畢業後也可以做研究工作,我覺得提供研究工作的崗位畢竟是少的。而且,那樣掙錢多嗎(流汗中)?

是否現在應該考慮以後進哪個(哪類)公司,現在根據它的要求來強化自己呢?

數據挖掘交流討論(3,答Freshm 2008-12-9的留言)
博士你好: 從事數據挖掘應用,要打好那些基礎,望結合您的經驗給予詳細指導,以及給一點應用於移動方面的實踐案例。
我的回覆:不好意思,我不是博士,請別叫我博士。非常高興跟你交流數據挖掘的應用。數據挖掘因爲是個綜合性應用,涉及的專業知識很多(有數據倉庫、統計專業、編程能力、展示展現技術、挖掘技能、所具體應用的相關業務能力),但是真正從數據挖掘項目實踐的角度講,溝通能力和對挖掘的興趣愛好是最重要的,有了愛好纔可以願意鑽研,有了不錯的溝通能力,纔可以正確理解業務問題,才能正確把業務問題轉化成挖掘問題,纔可以在相關不同專業人才之間清楚表達你的意圖和想法,取得他們的理解和支持。所以我認爲溝通能力和興趣愛好是個人的數據挖掘的核心競爭力,是很難學到的;而其他的相關專業知識誰都可以學,算不上個人發展的核心競爭力。
除了最重要的溝通能力和興趣愛好外,在專業能力培養中,如果你一定要排個先後次序的話, 一方面看你職業興趣的側重點,另一方面對於數據挖掘的應用來說,我覺得數據挖掘技能可能是相對而言最重要的, 因爲數據挖掘作爲一個典型的團隊作業,一個人不可能完成所有相關專業的工作,而其中數據挖掘能力可能是挖掘實踐中專業能力的核心,當然相關業務的能力同樣(甚至更)重要,比如做數據庫營銷時,你不但應該有好的挖掘技能,你更應該是個市場營銷專家。所以國內外面臨數據挖掘複合型人才缺乏時,一致公認的好的解決辦法是讓業務人員學習挖掘技能(這比讓挖掘技術人員學習業務技能更有效、更合理)。
說到這裏可能很多數據倉庫專家、程序員、統計師等等都要扔磚頭了,對不起,我沒有別的意思,你們的專業對於數據挖掘都很重要,大家本來就是一個整體的,但是作爲單獨一個個體的人來說,精力有限,時間有限,不可能這些領域都能掌握,在這種情況下,選擇最重要的核心,我想應該是數據挖掘技能和相關業務能力吧(從另外的一個極端的例子,我們可以看, 比如一個迷你型的挖掘項目,一個懂得市場營銷和數據挖掘技能的人應該可以勝任。這其中他雖然不懂數據倉庫,但是簡單的Excel就足以勝任高打6萬個樣本的數據處理;他雖然不懂專業的展示展現技能,但是隻要他自己看的懂就行了,這就無需什麼展示展現;前面說過,統計技能是應該掌握的,這對一個人的迷你項目很重要;他雖然不懂編程,但是專業挖掘工具和挖掘技能足夠讓他操練的;這樣在迷你項目中,一個懂得挖掘技能和市場營銷業務能力的人就可以圓滿完成了,甚至在一個數據源中根據業務需求可以無窮無盡的挖掘不同的項目思路,試問就是這個迷你項目,單純的一個數據倉庫專家、單純的一個程序員、單純的一個展示展現技師、甚至單純的一個挖掘技術專家,都是無法勝任的)。這從另一個方面也說明了爲什麼溝通能力的重要,這些個完全不同的專業領域,想要有效有機地整合在一起進行數據挖掘項目實踐,你說沒有好的溝通能力行嗎?
數據挖掘能力只能在項目實踐的熔爐中提升、昇華,所以跟着項目學挖掘是最有效的捷徑。國外學習挖掘的人都是一開始跟着老闆做項目,剛開始不懂不要緊,越不懂越知道應該學什麼,才能學得越快越有效果。我不知道國內的數據挖掘學生是怎樣學的,但是從網上的一些論壇看,很多都是紙上談兵,這樣很浪費時間,很沒有效率。
另外現在國內關於數據挖掘的概念都很混亂,很多BI只是侷限在報表的展示和簡單的統計分析,卻也號稱是數據挖掘;另一方面,國內真正規模化實施數據挖掘的行業是屈指可數(銀行、保險公司、移動通訊),其他行業的應用就只能算是小規模的,比如很多大學都有些相關的挖掘課題、挖掘項目,但都比較分散,而且都是處於摸索階段,但是我相信數據挖掘在中國一定是好的前景,因爲這是歷史發展的必然,呵呵。
講到移動方面的實踐案例,如果你是來自移動的話,你一定知道國內有家叫華院分析的公司(申明,我跟這家公司沒有任何關係,我只是站在數據挖掘者的角度分析過中國大多數的號稱數據挖掘服務公司,覺得華院還不錯,比很多徒有虛名的大公司來得更實際),他們的業務現在已經覆蓋了絕大多數中國省級移動公司的分析挖掘項目,你上網搜索一下應該可以找到一些詳細的資料吧。我對華院分析印象最深的一點就是2002年這個公司白手起家,自己不懂不要緊,一邊自學一邊開始拓展客戶,到現在在中國的移動通訊市場全面開花,的確佩服佩服呀。他們最開始都是用EXCEL處理數據,用肉眼比較選擇比較不同的模型,你可以想象這其中的艱難吧。這個故事其實也告訴我們,數據挖掘也是可以創造一些神奇的故事的,你說呢?
至於移動通訊的具體的數據挖掘的應用,那太多了,比如不同話費套餐的制訂、客戶流失模型、不同服務交叉銷售模型、不同客戶對優惠的彈性分析、客戶羣體細分模型、不同客戶生命週期模型、渠道選擇模型、惡意欺詐預警模型,太多了,記住,從客戶的需求出發,從實踐中的問題出發,移動中可以發現太多的挖掘項目。最後告訴你一個祕密,當你數據挖掘能力提升到一定程度時,你會發現無論什麼行業,其實數據挖掘的應用有大部分是重合的相似的,這樣你會覺得更輕鬆。
以上是個人的淺見,僅供參考,祝挖掘快樂!
數據挖掘從業人員工作分析

1.數據挖掘從業人員的願景:
數據挖掘就業的途徑從我看來有以下幾種,(注意:本文所說的數據挖掘不包括數據倉庫或數據庫管理員的角色)。
A:做科研(在高校、科研單位以及大型企業,主要研究算法、應用等)
B:做程序開發設計(在企業做數據挖掘及其相關程序算法的實現等)
C:數據分析師(在存在海量數據的企事業單位做諮詢、分析等)
2.數據挖掘從業人員切入點:
根據上面的從業方向倒序並延伸來說說需要掌握的技能。
C,數據分析師:需要有深厚的數理統計基礎,可以不知道人工智能和計算機編程等相關技術,但是需要熟練使用主流的數據挖掘(或統計分析)工具 。從這個方面切入數據挖掘領域的話你需要學習《數理統計》、《概率論》、《統計學習基礎:數據挖掘、推理與預測 》、《金融數據挖掘》,《業務建模與數據挖掘》、《數據挖掘實踐 》等,當然也少不了你使用的工具的對應說明書了,如SPSS、SAS等廠商的《SAS數據挖掘與分析》、《數據挖掘Clementine應用實務 》、《EXCEL 2007數據挖掘完全手冊》等,如果多看一些如《中文版 數據挖掘原理》 等書籍那就更好了。
B,程序設計開發:主要是實現數據挖掘現有的算法和研發新的算法以及根據實際需要結合核心算法做一些程序開發實現工作。要想扮演好這個角色,你不但需要熟悉至少一門編程語言如(C,C++,Java,Delphi等)和數據庫原理和操作,對數據挖掘基礎課程有所瞭解,讀過《數據挖掘概念與技術》(韓家煒著)、《人工智能及其應用》。有一點了解以後,如果對程序比較熟悉的話並且時間允許,可以尋找一些開源的數據挖掘軟件研究分析,也可以參考如《數據挖掘:實用機器學習技術及Java實現》等一些教程
A.做科研:這裏的科研相對來說比較概括,屬於技術型的相對高級級別,也是B,C的歸宿,那麼相應的也就需要對B、C的必備基礎知識了。
可能之後不會續寫一篇《數據挖掘進階》了,這邊大概說一下B和C的進一步要求:
B當前主要包括如下方向:企業數據挖掘、Web數據挖掘、空間數據挖掘、多媒體數據挖掘等等;
C當前主要應用於:電信CRM、金融、諮詢業等等;
最後說一下大家有必要熟悉數據挖掘工具:Google ,或許你也可以搜索到這篇文章,當然也可以搜索到人才招聘的相關職位需求以及其他資料,一如你當初搜索到 DMResearch 一樣。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章