學習機器學習演算法一定要做到會手寫編程實現嗎?還是只要拿到數據後知道使用哪個演算法調用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 的學習決策模型是否能用於股票市場的交易?