解答數據挖掘初學者心中的疑惑

本文中包含了數據挖掘初學者常見的問題,DMFighter對我以前回復的一些問題進行了精心的整理,在此也感謝他的辛勤工作。因爲訪問我博客的很多讀者會不斷重複提這些問題,所以我把DMFighter整理的帖子也轉載過來,請初學者們先行閱讀,希望能解答一些你們的疑惑。當然,我的回覆也只是個人間接,不免有失偏頗,也歡迎大家進行探討,給出你們的意見和建議。

所有內容均來自互聯網的一些博客,感謝他們的建議,在此我把一些比較好的彙總一下,大家共享

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

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

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

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

對不同算法的性能效果進行評估比較,總結各種算法的特點及適用範圍。當然,如果能對算法做些有益的改進更好,可以讓論文的學術性更強。最後,描述出應用了關聯分析的結果能帶來什麼效益(比如對貨架位置的調整、對客戶的交叉銷售等到)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

張前輩:您好!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你這位學長說得沒錯,脫離實際的純理論大多會消散於無形。至於甲乙方的區別,實際上也沒有想像中那麼大,特別是對於剛剛參加工作的基層員工來說,可能差不多。

先在乙方歷練幾年,然後跳到甲方,這種狀況我看到不少。也許是因爲在乙方接受的鍛鍊和學習到新知識經驗的機會更多些吧,可以在年輕時有更多的積累。當然,如果有很好的在甲方工作的機會,也是不錯的選擇。

到乙方工作,特別是對一直待在校園裏的應屆生來說,招聘方重點考察的大多是你的知識是否紮實、性格是否有利於融入團隊等方面。至於對行業的瞭解,一般很少有過多的期望,除非你有多年在相關行業做項目的經驗。

國內的研究機構還是以科研院所和高校爲主,待遇一般要比公司低,但也有很多人,包括我的師兄師姐以及同學,選擇了繼續做研究,因爲他們會從研究中獲得很多樂趣。另外一些研究機構是企業特別是外企的研究院,待遇也很好,但就要求你很出色纔有機會加入。做研究還有一個很好的地方,就是國外的院校或研究所。

後記:覺得自己的提問沒有意義,好像有些是明擺着的問題,又抑或是些不值得回答的問題似的。前輩若有時間,還望指點一二。我不急,若忙......

@張磊IDMer

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