W jakim języku programowania zalecasz prototypowanie problemu uczenia maszynowego?

12

Obecnie pracuje w Octave, ale z powodu słabej dokumentacji postęp jest bardzo wolny.

Jaki język jest łatwy do opanowania i używania oraz dobrze udokumentowany, aby rozwiązać problemy z uczeniem maszynowym? Szukam prototypu na małym zestawie danych (tysiące przykładów), więc szybkość nie jest ważna.

EDYCJA: Opracowuję silnik rekomendacji. Tak więc jestem zainteresowany wykorzystaniem regularnej regresji liniowej, sieci neuronowych, SVN lub filtrowania grupowego.

B Seven
źródło
1
Kiedyś też zacząłem od Octave, ponieważ mój profesor interesował się matlabem (uuh, to było fajne podczas zajęć z wykorzystaniem biblioteki prof, ponieważ matlab i oktawa nie mają dokładnie tej samej składni), ale potem przełączyłem się na R i po prostu byłem zdumiony dzięki doskonałej dokumentacji i różnorodności bibliotek.
steffen
9
Python jest oczywiście bardzo łatwy do nauki i czytania, więc myślę, że to kwestia gustu. Proponuję te linki: python-Stat-warsztatu , co-programowanie-language-za-statystyczno-wnioskowania , maszynowego uczenia wykorzystujących-python , clojure
Steffen
1
Poleciłbym R, Python lub Matlab. Z powodów zbyt obszernych, by się z nimi zmierzyć, porzucę Matlaba. Dla osoby zajmującej się statystykami wybrałbym R, a dla programisty wybrałbym Python. W przypadku wewnętrznych pętli wybrałbym C / C ++. W wystarczającej skali koszty Matlaba przewyższają wszelkie korzyści.
Iterator
1
lub spójrz na
Julię

Odpowiedzi:

7

Jeśli chcesz użyć czegoś nieszablonowego, Weka może być świetnym punktem wyjścia. Nie trzeba nic programować. Importujesz swoje dane, wizualizujesz je i bawisz się różnymi modelami.

Następny w kolejności byłby R. Jest pewna krzywa uczenia się - szczególnie w przypadku mungowania danych, aby dopasować je do struktur danych R, ale kiedy już sobie z tym poradzisz, masz mnóstwo bibliotek, które oferują wszystkie możliwości uczenia maszynowego bez większego wysiłku.

Następnym krokiem byłoby ręczne programowanie algorytmów uczenia maszynowego. Ponieważ już używasz Octave i szukasz alternatyw, być może nie chcesz obsługiwać algorytmów kodu w innym systemie, ale po prostu korzystać z bibliotek napisanych przez innych ludzi.

Jeśli pójdziesz ścieżką R., książka Luisa Torgo (Data Mining with R: Learning with Case Studies) może okazać się bardzo przydatna (ujawnienie: brak powiązania). Opisuje dogłębne studia przypadków, które możesz dostosować do swojego problemu.

araroot
źródło
15

Możesz uzyskać lepsze odpowiedzi, jeśli określisz konkretne algorytmy, które Cię interesują. Używam R do tego rodzaju rzeczy (wykonuję ekonometrię szeregów czasowych, ale nie uczenie maszynowe); możesz zobaczyć istniejącą funkcjonalność tutaj:

http://cran.r-project.org/web/views/MachineLearning.html

i istnieje kod R do implementacji analizy w elementach statystycznego uczenia się Hastie, Tibshirani i Friedmana :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

System pakowania R jest całkiem świetny i popycha ludzi do dokumentowania swojego kodu, a także jest open source, więc zawsze możesz zajrzeć do implementacji. Nie korzystałem z Matlaba od kilku lat i nie używałem go do uczenia maszynowego - ich zestawy narzędzi są zwykle dobrze udokumentowane, ale mogą być drogie, ale kod udostępniony przez użytkownika będzie tak słabo udokumentowany jak każdy inny.

Szary
źródło
11

W swoim internetowym kursie uczenia maszynowego Andrew Ng sugeruje użycie Octave / Matlab.

Polecam zapisać się na kolejną edycję tego kursu: jest to naprawdę przydatne i nauczysz się wielu rzeczy o Octave i różnych algorytmach uczenia maszynowego.

EDYCJA 1 : Zgadzam się z innymi osobami, które wolą pracować w języku R. Jednak przy rozwiązywaniu problemów uczenia maszynowego większość twoich obliczeń ma postać macierzy, a jak wskazano w @Wayne, Matlab lub Octave są bardzo popularne z powodu ich mocy. Możesz rzucić okiem na proponowane przez innych studentów rozwiązania dotyczące kursów uczenia maszynowego; na pewno możesz się od nich nauczyć:

Gkokaisel Github

Merwan Github

Manuel Ramón
źródło
1
Jestem zapisany do tej edycji kursu! Problem polega na tym, że robienie najprostszych rzeczy poza kursem nie działa! Dokumentacja jest bezużyteczna.
B, 7
3
Muszę powiedzieć, że Matlab (a więc Octave) to straszny język programowania. Jest bardzo popularny w dziedzinie inżynierii i uczenia maszynowego, ale wynika to z jego mocy i jest stosowany w szkołach, a nie dlatego, że jest to nowoczesny język programowania. To powiedziawszy, będziesz bardziej prawdopodobne, że napotkasz teksty uczące się na maszynie, które go używają, niż na R lub Python.
Wayne
1
Całą moją pracę wykonuję w MATLAB, nie jest to najlepszy język programowania na świecie (powiedziałbym, że R jest jeszcze gorszy; o), ale warto go wytrwać, ponieważ jest bardzo dobry do badań nad uczeniem maszynowym. W przypadku sieci neuronowych poszukaj biblioteki NETLAB, a także zbadaj proces Gaussa za pomocą biblioteki GPML, obie są doskonałymi bitami zestawu, a IIRC oba działają z oktawą. W przypadku regularnej regresji liniowej jest to tylko jedna linia MATLAB, w przypadku modeli nieliniowych istnieje zestaw narzędzi GKM, theoval.cmp.uea.ac.uk/projects/gkm (przepraszam, że nie jest jeszcze mnualny).
Dikran Torbacz
1
Obliczenia macierzowe można również wykonać w R, chociaż zapis, na przykład t(A) %*% B, jest mniej intuicyjny niż w Matlabie.
Itamar,
1
Czy nie ma dobrych bibliotek macierzy dla każdego języka wysokiego poziomu, takiego jak C #, Java, Python i Perl?
B, 7
10

Scikit-learn (obecnie sklearn) powinna spełniać kilka kryteriów opisanych wy (prędkości, dobrze zaprojektowanych klas do obsługi danych, modele i wyników), w tym ukierunkowanych zastosowaniach (L1 / L2 karane regresji, SVM, itd.). Jest wyposażony w bogaty zestaw dokumentacji i wiele przykładów . Zobacz także jego opis w artykule opublikowanym w JMLR.

Alternatywną strukturą w Pythonie jest Orange , której można używać za pomocą delikatnego interfejsu GUI lub bezpośrednio w wierszu poleceń. W przypadku wspólnego filtrowania Pyrsvd może być interesujące, ale nigdy go nie próbowałem. Jednak Apache Mahout może z pewnością zostać użyty do wspólnego filtrowania .

chl
źródło
1

Jeśli masz na myśli prototyp przemysłowy (tj. Coś, co robią ludzie, a nie dla czystych badań), pyton jest w tej chwili jedyną drogą.

Jeśli korzystasz z Matlaba, Octave lub R, otrzymasz łatwe w użyciu środowisko do badań ML, ale koszmarem będzie uruchomienie modelu z interfejsem użytkownika lub usługą internetową.

W Pythonie mamy szczęście, że mamy zarówno rozległy ekosystem naukowy ( sklearn dla ML, pandy do zawijania danych, matplotlib / seaborn do wizualizacji), jak i ekosystem aplikacji (pomyśl o django i jego strukturze reszty ).

Python to łatwy język do nauki. Mam nadzieję, że w przyszłości ekosystem Javascript stanie się naukowo zdrowy jako Python, ale pomimo świetnych projektów nie widzę tego wkrótce.

Nie zawijaj się w pudełku, użyj ogólnego języka!

Pieroit
źródło