2013-08-12 40 views
3

我問自己,大多數人是否自己編寫機器學習算法本身,或者他們是否可能使用Weka或R包等現有解決方案。機器學習在實踐中:自己編寫算法還是使用Weka?

當然,這取決於問題 - 但我們假設我想使用像神經網絡這樣的通用解決方案。是否有理由自己編寫代碼?更好地理解機制並適應它?還是標準化解決方案的想法更重要?

+1

這個問題可能太離題了,無法回答。我的建議是問問自己,你是否想要建立一些東西來學習一些東西。如果更多後者,自己寫代碼。 – DuckMaestro

+0

@ DuckMaestro2:我會學到兩件事情。我將用這兩種技術來構建一些東西。編寫代碼涉及到兩個方面,當然,我自己需要更多的編碼來實現一個算法。 關於哪個話題是無關緊要的? – Martin

回答

10

這不是一個好的問題Stackoverflow。這是一個意見問題,而不是編程問題。

不過,這是我的看法:

這取決於你想要做什麼。

  • 如果你想找到哪種算法效果最好爲您的數據的問題在手邊,儘量ELKI,Weka中,R,Matlab的,SciPy的,等等。嘗試所有可以找到的算法,並花費更多時間對數據進行預處理。

  • 如果您知道您需要哪種算法,並且需要將其投入生產,那麼這些工具中的許多工具的性能不夠好,或者不夠容易集成。相反,請檢查是否可以找到提供所需功能的低級庫(如libSVM)。如果這些不存在,請推出您自己的優化代碼。

  • 如果你想在做研究在這個領域,你最好是擴大現有的工具。 ELKI和Weka都有可以插入的API來提供擴展。 R並沒有真正的API(CRAN它是一團糟......),但是人們只是把他們的代碼轉儲到某個地方,並希望添加一個手冊來說明如何使用它。擴展這些框架可以爲您節省大量的工作量:您可以使用比較方法,並且可以重複使用大量的代碼。例如ELKI有很多索引結構來加速算法。大多數情況下,索引加速比寫實際算法難得多。因此,如果您可以重複使用現有的索引,這也會使您的算法速度更快(您也將從這些框架的未來增強中受益)。

  • 如果你想瞭解現有的算法你最好自己實現它們。您會驚訝地發現,與在課堂上教授的內容相比,優化某些算法還有多少。例如。 APRIORI。基本想法很簡單。但是讓所有的修剪細節都正確,我說20個學生中有1個得到了這些細節。如果你實現了APRIORI,然後將其與已知的良好實現進行比較,並試圖理解爲什麼你的速度要慢很多,那麼你實際上會發現算法的細節。不要驚訝地發現ELKI,R,Weka等之間的性能差異達到了100倍 - 它仍然可以是相同的算法,只是在實際使用的數據結構,內存佈局等方面實現或多或少的效率。

+0

感謝您指出了這一點,儘管它不是100%構建的stackoverflow。自己開始機器學習很難,因此它非常有幫助。 – Martin

+0

幫助部分提供了一些關於好問題和壞問題的提示。(http://stackoverflow.com/help/dont-ask)總的來說,投票,提問和意見問題不適用於質量檢查站點,但應該去聊天或討論論壇。涉及小*代碼片段*的問題通常很好。 –