Qual linguagem de programação você recomenda para criar um protótipo de um problema de aprendizado de máquina?

12

Atualmente trabalhando no Octave, mas devido à documentação insuficiente, o progresso é muito lento.

Qual idioma é fácil de aprender e usar, e bem documentado para resolver problemas de aprendizado de máquina? Estou procurando um protótipo em um pequeno conjunto de dados (milhares de exemplos), para que a velocidade não seja importante.

EDIT: Estou desenvolvendo um mecanismo de recomendação. Portanto, estou interessado em usar regressão linear regularizada, redes neurais, SVN ou filtragem colaborativa.

B Seven
fonte
1
Certa vez, também comecei com o Octave, já que meu prof estava no matlab (isso foi divertido durante os cursos usando a biblioteca do prof, pois o matlab e o oitava não têm exatamente a mesma sintaxe), mas depois mudei para R e fiquei simplesmente encantado. por sua documentação superior e variedade de bibliotecas.
Steffen
9
É claro que o Python é muito fácil de aprender e ler, então acho que é uma questão de gosto. Sugiro estes links: python-stat-workbench , que linguagem de programação para inferência estatística , aprendizado de máquina usando python , clojure
steffen
1
Eu recomendaria R, Python ou Matlab. Por razões muito extensas para resolver, eu deixaria o Matlab. Para uma pessoa de estatísticas, eu iria com R, para um programador, eu iria com Python. Para os loops internos, eu usaria C / C ++. Em escala suficiente, os custos da Matlab excedem quaisquer benefícios.
Iterator
1
ou, dê uma olhada em julia ...
kjetil b halvorsen

Respostas:

7

Se você quiser usar algo fora da caixa, o Weka pode ser um ótimo ponto de partida. Não há necessidade de programar nada. Você importa seus dados, visualiza-os e brinca com modelos diferentes.

O próximo da cadeia seria R. Existe alguma curva de aprendizado associada - especialmente quando os dados são inseridos nas estruturas de dados do R, mas depois que você supera isso, você tem toneladas de bibliotecas que oferecem todos os recursos de aprendizado de máquina sem muito esforço.

Em seguida, seria a programação manual dos algoritmos de aprendizado de máquina. Como você já está usando o Octave e está procurando alternativas, talvez o que você queira não seja entregar algoritmos de código em outro sistema, mas apenas usar as bibliotecas escritas por outras pessoas.

Se você seguir o caminho R, poderá achar o livro de Luis Torgo (Mineração de Dados com R: Aprendendo com Estudos de Caso) muito útil (divulgação: sem afiliação). Ele descreve estudos de caso detalhados que você pode adaptar ao seu problema.

araroot
fonte
15

Você pode obter melhores respostas se especificar os algoritmos específicos nos quais está interessado. Eu uso R para esse tipo de coisa (eu uso econometria de séries temporais, porém, não aprendizado de máquina); você pode ver a funcionalidade existente aqui:

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

e há código R para implementar a análise nos elementos de aprendizagem estatística de Hastie, Tibshirani e Friedman :

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

O sistema de empacotamento da R é ótimo e incentiva as pessoas a documentar seu código, e é de código aberto para que você possa sempre analisar a implementação. Não uso o Matlab há alguns anos e não o uso para muito aprendizado de máquina - suas caixas de ferramentas geralmente são bem documentadas, mas podem ser caras, mas o código contribuído pelo usuário será tão mal documentado quanto qualquer outro.

cinzento
fonte
11

Em seu curso on-line de aprendizado de máquina, Andrew Ng sugere o uso do Octave / Matlab.

Eu recomendo que você se inscreva na próxima edição deste curso: é realmente útil e você aprenderá muitas coisas sobre o Octave e sobre os diferentes algoritmos de aprendizado de máquina.

EDIT 1 : Concordo com outras pessoas que preferem trabalhar em R. No entanto, ao resolver os problemas de aprendizado de máquina, a maioria dos seus cálculos será em forma de matriz e, como apontado pelas linguagens @Wayne, Matlab ou Octave, é muito popular por causa de seu poder. Você pode dar uma olhada nas soluções para os exercícios do curso de aprendizado de máquina propostos por outros alunos; certamente você pode aprender algumas coisas com eles:

Gkokaisel Github

Merwan Github

Manuel Ramón
fonte
1
Estou inscrito nesta edição do curso! O problema é que fazer as coisas mais simples fora do curso não funciona! A documentação é inútil.
B Seven
3
Devo dizer que o Matlab (portanto, Octave) é uma péssima linguagem de programação. É muito popular nos campos de engenharia e aprendizado de máquina, mas isso se deve ao seu poder e ao ser usado nas escolas, não porque é uma linguagem de programação moderna. Dito isso, é mais provável que você encontre textos de aprendizado de máquina que o utilizam do que R ou Python.
Wayne
1
Eu faço todo o meu trabalho no MATLAB, não é a melhor linguagem de programação do mundo (eu diria que R era ainda pior; o), mas vale a pena perseverar, pois é muito bom para pesquisas de aprendizado de máquina. Para redes neurais, procure a biblioteca NETLAB e também investigue o Processo Gaussian com a biblioteca GPML, ambos são excelentes pedaços de kit, e o IIRC trabalha com oitava. Para regressão linear regularizada, é apenas uma linha do MATLAB; para modelos não lineares, existe a caixa de ferramentas GKM, theoval.cmp.uea.ac.uk/projects/gkm (desculpe, ainda não há um mês).
Dikran Marsupial
1
Os cálculos de matriz também podem ser feitos em R, embora a notação, por exemplo t(A) %*% B, seja menos intuitiva do que no Matlab.
Itamar
1
Não existem boas bibliotecas de matrizes para todas as linguagens de alto nível como C #, Java, Python e Perl?
B Seven
10

O scikit-learn (agora sklearn) deve atender a vários dos critérios que você descreveu (velocidade, classes bem projetadas para manipulação de dados, modelos e resultados), incluindo aplicativos direcionados (regressão penalizada L1 / L2, SVM, etc.). Ele vem com um rico conjunto de documentação e muitos exemplos . Veja também sua descrição em um artigo publicado no JMLR.

Uma estrutura alternativa no Python é a Orange , que pode ser usada através de uma GUI suave ou diretamente na linha de comando. Para filtragem colaborativa, pyrsvd pode ser interessante, mas nunca tentei. No entanto, o Apache Mahout certamente pode ser usado para filtragem colaborativa .

chl
fonte
1

Se você se referir a um protótipo industrial (ou seja, algo que é feito para ser usado por pessoas reais e não para pesquisa pura), o python é, no momento, o único caminho a percorrer.

Se você usa Matlab, Octave ou R, obtém um ambiente fácil de usar para a pesquisa de ML, mas será um pesadelo colocar o modelo em funcionamento com uma interface de usuário ou com um serviço da Web.

Em python, temos a sorte de ter um extenso ecossistema científico ( sklearn para ML, pandas para manipulação de dados, matplotlib / seaborn para visualização) e um ecossistema de aplicativos (pense no django e sua estrutura restante ).

Python é uma linguagem fácil de aprender. No futuro, espero que o ecossistema Javascript se torne cientificamente sólido como o python, mas, apesar de alguns ótimos projetos, não vejo isso em breve.

Não se embrulhe em uma caixa, use uma linguagem geral!

Pieroit
fonte