進行數據挖掘時演算法需要學習到什麼樣的程度?

大家接觸到的數據挖掘崗位,需要對演算法的推導、證明深入了解嗎,學習演算法和軟體應該怎麼平衡一下?


謝邀。

如果你是問怎麽去Microsoft、Google、Amazon面試之類的,恐怕我不是一個好例子:我用過不同的演算法,但他們卻問我課本的東西:有些東西是需要溫習考試的。

但如果是應付工作需要,那就邊學邊做。其實我是物理出身,數據挖掘是啥什麽都不懂,但就在不同的project上學,遇到問題就問人家,或是到網上找計算機科學的文章。(我最近要寫一個演算法去讀句子然後分類,然後我到網上找了一個辨別文章作者的自動方法,拿來改了用。)開始還有到Coursera修課,自己看書等等。數據挖掘的方法極多,除了一些大家都知的機器學習演算法外,還有很多不常見的。

去解決問題,不是懂得多少演算法,而是可以不可以找到新方法解決現有問題,要有big picture。


說說我的一點經驗吧,數據挖掘的水很深,簡單的就是統計分析,複雜一點的是數據建模,高深一點的是機器學習。不過我們還是要從基礎構架來——數據存儲和處理。我作為一個數據挖掘工程師一半以上的工作時間都是折騰各種資料庫和存儲,MySQL, pgSQL,Mongo,ElasticSearch,DynamoDB,HIVE, Pig,S3,以及hadoop和spark這種大規模集群計算的工具,哦哦還有python這門非常適合數據處理的語言。如果按照金字塔來看這些都是處在最底層的,只有這些問題都解決了才能往上走。


可以在實踐中學習。

我剛乾生物信息的時候是編程菜鳥,毛都不懂。


當你能夠切身體會到數據比演算法重要的時候就夠了。


理解業務,理解數據,遠比具體演算法重要

不過學習演算法的話,我個人覺得需要涉獵很多領域:數理統計、分類、聚類、頻繁模式、離群點、時間序列分析、自然語言處理、推薦系統等,結合具體數據情況,還可能涉及到大規模分散式數據挖掘、流式數據挖掘等


推薦閱讀:

如何構造 n 個數使其最小公倍數(LCM)=其和?( n 個數互不相等)
std::unique為什麼不用一個hash table實現,而是要先std::sort?
如何優雅地證明這道卡片排序問題?
如何求解遞推式 T(n) = T(n-1) + T(floor(n/2)) + 1?
如何評價2017年山東省第八屆acm省賽?

TAG:演算法 | 數據挖掘 | 數據分析 | R編程語言 |