天天看點

一位資料挖掘成功人士 給 資料挖掘在讀研究所學生 的建議

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

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

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

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

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

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

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

至于資料挖掘領域的就業,應該來說還是前景不錯的。如果你對研究有興趣,象微軟研究院、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或其他一個流行軟體的使用方法。其中,我覺得難點是對資料集的整理形成挖掘流程的輸入。

其中,我也有若幹疑惑:掌握一門資料庫是很重要的,但是沒有時間一一了解SQL Server、Oracle、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 一樣。

Cited from:http://www.cognoschina.net/club/viewthread.php?tid=1518