做者:Burak Kanber程序員
翻譯:王維強web
原文:http://burakkanber.com/blog/machine-learning-in-other-languages-introduction/算法
我熱衷於機器學習算法,並在該領域教授過一些課程,也在一些研討會中作過報告,對該課題很着迷。可是像全部的技術同樣只學些皮毛是遠遠不夠的,想作好任何事情,都需深刻實踐。網絡
我本身恰巧是個PHP和Javascript開發者,在這兩個技術領域內也教授過一些課程,並且像全部的普通程序員同樣我在Ruby,Python,Perl和C方面也有些經驗,可是更偏心PHP和JS。機器學習
每當我提及蒂達爾實驗室的機器學習算法是用PHP實現的,你們就會嘲諷地看着我說那怎麼可能。簡單來講,機器學習算法能夠用任何語言來實現,不少人並不介意經過草圖寫算法來了解基本原理,而後使用一些Python庫應付他們的工做,但是並無真正領悟黑箱中正在發生的過程。另一些人只是學術性的瞭解機器算法,使用Octave或者Matlab解決問題。工具
經過本系列文章,我將會教會你機器學習算法的基礎原理而且使用Javascript做爲算法實現的工具,而不是用Python或者Octave做爲範例語言。本來我打算用多個語言(PHP,JS,Perl,C, Ruby)寫這些文章,但最終選擇Javascript是由於如下緣由:學習
在我於頭腦中用Javascript寫這些文章之時,也請你本身選擇一門語言預寫一些例子做爲家庭做業!實踐決定你的掌握程度,用幾種語言數次編寫一樣的算法真的能幫你更好地瞭解這些範例。優化
使用像PHP或Javascript這樣的語言編寫機器學習算法是徹底有可能得到很好的執行表現的。我提倡用更多的其餘語言實現機器學習算法是由於這樣作能更好地幫你從草圖中瞭解基本原理,而且能讓你統一本身的背景知識,不至於在PHP的應用程序中還要寫Python腳本處理任務,你徹底能夠用純PHP來實現,而不是被迫切換到其餘語言。spa
好吧,不少時候,的確有不少事情不能用PHP或者Javascript來解決,好比不少高級算法中使用到的大型矩陣運算。實際上你也能用JS進行矩陣運算,只是差異在於「能作」仍是「高效地作」,NumPy或者Matlab的優點不在於他們能作矩陣運算,而是他們使用了優化的算法能高效地作矩陣運算,這些優化的運算方法咱們不會親自去作,除非致力於計算機線性代數的研究。這也不是個人強項,因此咱們只着重於機器學習,不要求高級的矩陣數學知識。你固然能夠嘗試慘烈地直面矩陣操做,可是會止步於低效的系統。做爲學習固然很好,只是我不鼓勵這樣作——我只在產品級的環境下才關注這方面的事。翻譯
咱們將要關注的算法既能夠用矩陣來解決,也能夠不用矩陣。咱們將會在這些算法中使用迭代的方法,固然大多數算法也能夠用線性代數來描述。解決問題有多種途徑,我鼓勵你們去使用線性代數的方法,可是那不是個人強項,因此我會使用其餘的方法。
個人這個系列文章將覆蓋: