學習機器學習演算法一定要做到會手寫編程實現嗎?還是只要拿到數據後知道使用哪個演算法調用numpy的包就行?

數據挖掘、機器學習


相比自己實現更重要的是理解各種原理,關起書本拿一張白紙,把每一種模型是怎麼學習的,各種公式推導,步驟都完完整整寫下來。多想想不同模型之間的差異。 然後再去寫代碼實現,不要以為自己能實現代碼了就充分理解模型了,對模型一知半解看著推導步驟也是可以把代碼寫出來的。


numpy裡面哪有機器學習演算法


前者要做到 另外再加上推公式

推公式和實現是差別蠻大的兩件事

許多演算法需要實現的只是公式最後推出來的結果 大部分推導過程體現不在代碼里 這些是光實現學不到的

而實現中又有一些的工程技巧 這是光推公式學不到的

至於你說的直接使用numpy里的演算法 我不了解 我只拿numpy當矩陣庫用過 不知道它提供什麼層面的演算法 能說的具體點么


看了之前的回答發現知乎都是演算法大神啊。

你們真的確定所有演算法都能自己實現的嗎?

搜搜svm crf memm,看看全地球一共有幾個實現了的庫。


最好實現一遍。再簡單的模型或者演算法也有細節問題,實現一遍就會發現。而這些細節問題積累多了就會對模型和演算法理解更深入,這就是經驗的由來。而機器學習經驗很重要,說個真實經歷:我優化了兩天的模型不如我老大五分鐘調個閾值效果好


這取決於你學機器學習是為了什麼。

情形1:

如果你只想快速入門,能解決點並不複雜的問題,那麼確實知道大概用那些演算法就行了,scikit-learn裡面的演算法基本上夠用了。當然,你可能會遇到某些參數、甚至某些演算法不知道是幹什麼用的情況。沒關係,反正你也沒時間慢慢學,就不管這些參數/演算法就好了。

如果你用某個演算法發現管用,你很開心,儘管你對於同一個演算法用在新數據上是否還會管用完全沒底;如果你用某個演算法發現不管用,你不懂也不想懂為什麼,總之換一個別的演算法再試試就好了;如果你試了所有你知道的演算法發現都不好用,你也不明白問題出在哪裡,總之只能得出結論說機器學習對你的問題不管用。

情形2:

你對機器學習理論及大部分演算法挺熟悉,但編程能力較弱,用會numpy、pandas,調用scikit-learn已經費了好大力氣,實在沒本事自己實現演算法。

簡單組合用現成演算法能解決的問題,相信對你都不成問題了。雖然未必能完美解決,但至少你知道一套相對科學的體系,而不是把機器學習當算命道具用。只是當現成的演算法解決不了你的問題,或者想用現成的庫里沒有的演算法時,你就束手無策了。

情形3:

你既對機器學習理論熟悉,又有不錯的編程能力,實現過常用的那些演算法。雖然你的實現不是最快最高效的,甚至離最快的差了不少,但至少是正確的。更複雜的演算法雖然你沒有一一去編程實現,但你確信只要參照相關資料,你花點時間也能實現出來。

-------

以上三類人,如果我是老闆來招人做機器學習,第一類直接略過;第二類如果理論很強、有數學類PhD學位的話可以考慮招來做理論研究,不然也略過;即便是第三類,可能在一般應屆生里已經算不錯的了,但看起來還是差了些實踐經驗和軟體工程方面的能力。

所以題主,你如果只是學著玩的話參照情形1就好了。


常用的工具類包scikitlearn有各種經典的演算法可以調用,至於numpy,它只是個計算模塊。但是既然你想走這個方向又怎麼可能不踏踏實實去學習呢。你至少要知道為什麼你使用的方法好,為什麼你使用的方法又不好,怎麼改比較好是吧。總不能效果不好就換演算法,能用的演算法就那幾個。我一直記得學過一篇文章《超抵抗力最大的路徑走》,學習技術不走最難的路就算了,怎麼還能想著偷懶呢。


matlab要會的


一般來說很底層的工具你不用寫 寫了也沒現成的性能好 比如說pca裡面計算特徵值的演算法可以不寫 但是pca要會寫


不自己實現一遍,那還叫學習機器學習演算法嗎?


如果你只知道調用哪個包,你憑什麼讓別人相信你真的很懂機器學習?你的特徵工程怎麼做?模型評估呢?人家就請年紀輕輕的你在宏觀上指導整個項目了?等你做了大量項目,真真成了這一行的專家再想不寫代碼的事情吧。現在首要的是先把成績做出來,其他都是扯淡。自己建模,寫代碼吧。機器學習的項目不是那麼好做的。別拿到數據無從下手


機器學習要學好,基礎一定要打好,優化問題,統計學,到最基本的線性分類問題,聚類問題,再到一些常用的演算法,svm,kmeans,knn,adaboost等等,一定要仔仔細細地搞清楚原理,最好都能自己用matlab,python等自己實現一遍。那些只大概了解原理沒有真正自己摸索過的,我們現在面試也經常會遇到,基本上聊個五分鐘就能看出來,基本上都卡掉了。


。。。

題主一定是害怕編程的統計狗。

顯然是一定要會的。而且要很熟練。對演算法細枝末節的改動什麼的。。。


你都不想學習,你的機器能學習嗎?


請定義「學習」先。


題主一定是害怕編程的信計狗。


學計算機一定要會手寫數據結構嗎,還是只要調容器庫就可以了


差距在於如果面試時能寫, 錢會多一些


java自己玩玩就好了。


sklearn包,nolearn包是機器學習的

基本的演算法知道原理

簡單的可以實現。


推薦閱讀:

如何理解機器學習中雜訊影響模型複雜度問題?
研究生畢業做機器學習數據挖掘程序員發展前景如何?在這方面跟博士競爭差距會有多大?
知乎上有哪些關於大數據、推薦系統、機器學習之類的專欄?
文本分類中,CHI演算法、TFIDF演算法、TextRank演算法都應該對應哪個環節?如何選擇?
AlphaGo 的學習決策模型是否能用於股票市場的交易?

TAG:數據挖掘 | 機器學習 |