Por que as empresas de internet preferem Java / Python para trabalho de cientista de dados?


53

Vejo muitas vezes na descrição do trabalho de um cientista de dados que solicita experiência em Python / Java e desconsidere R. Abaixo está um e-mail pessoal que recebi do cientista de dados principal de uma empresa que solicitei através do linkedin.

X, obrigado por conectar e expressar interesse. Você tem boas habilidades de análise. No entanto, todos os nossos cientistas de dados devem ter boas habilidades de programação em Java / Python, pois somos uma organização móvel / da Internet e tudo o que fazemos é online.

Embora eu respeite a decisão do principal cientista de dados, não consigo obter uma imagem clara de quais são as tarefas que o Python pode executar que R não pode executar. Alguém pode se importar em elaborar? Na verdade, estou interessado em aprender Python / Java, desde que eu tenha um pouco mais de detalhes.

Edit: Encontrei uma discussão interessante sobre o Quora. Por que o Python é uma linguagem de escolha para cientistas de dados?

Edit2: Blog da Udacity em idiomas e bibliotecas para aprendizado de máquina


8
Python é um bom compromisso: fornece muitas bibliotecas (não padrão) para ciência de dados (pandas, scikit, ...) e muitos processos industriais já estão codificados em python.
Manu H

4
"nossos cientistas de dados devem ter boas habilidades de programação em Java / Python, pois somos uma organização móvel / da Internet e tudo o que fazemos é on-line" é um enorme não sequitur - a conclusão não segue da premissa. Eu suspeito que o CDS está apenas tentando se livrar de você.
Spacedman

5
@ManuH Se por "fora do padrão", você quer dizer "não na biblioteca padrão", você está correto. Mas essas ferramentas têm um uso bastante amplo e certamente são grampos da linguagem. Atualmente, o numpy tem mais de 100 mil perguntas sobre SO, os pandas têm 74 mil. Eu acho que você certamente poderia argumentar que eles são padrões da indústria . (. Pelo menos no lado do desenvolvimento de software Eu dificilmente me chamar de "cientista de dados.")
jpmc26

2
"Cientista de dados" não é um termo bem definido. O Data Scientist é basicamente alguém que pode fazer coisas úteis com os dados. Eles não precisam usar aprendizado de máquina ou pacotes estatísticos. Alguém pode estar usando Java / Scala / Spark / o que quer que seja para gerenciar grandes quantidades de dados e obter informações úteis sem nenhum aprendizado de máquina.
Akavall

2
@ jpmc26 Sim, foi isso que eu quis dizer. Agora eu percebo que mesmo as bibliotecas que ainda não atingem os padrões da indústria poderiam ser mencionados (mais um argumento para python)
Manu H

Respostas:


67

Assim, você pode integrar-se ao restante da base de código. Parece que sua empresa usa uma mistura de Java e python. O que você fará se um cantinho do site precisar de aprendizado de máquina; passar os dados com um banco de dados ou cache, solte para R e assim por diante? Por que não fazer tudo no mesmo idioma? É mais rápido, mais limpo e mais fácil de manter.

Conhece alguma empresa on-line que roda exclusivamente no R? Nem eu...

Tudo o que disse Java é a última linguagem em que eu faria ciência de dados.


11
Eu estava prestes a dizer que uma arquitetura orientada a serviços também ajuda a unir tecnologias. PMML é um pouco empreendedor; Eu nunca usei isso, mas o seu é uma loja de Java, as línguas mãe empresa, então você nunca sabe ...
Emre

3
@ Entusiasta, não se esqueça de que você pode executar o R ​​no python usando o RPy2 (por exemplo) para terminar (como fiz em um trabalho anterior) executando modelos escritos no R no python para que eles possam ser apresentados através de uma interface da web via django.
MD-Tech

2
Construímos o modelo em arquivos .r de texto simples que foram carregados no intérprete R para testar (e facilitar a construção). Enquanto isso estava sendo construído e testado, construímos um projeto python django com uma seção que referenciava o RPy2 e criava objetos RPy2. Esses objetos foram usados ​​para carregar os arquivos R da mesma maneira que você os carregaria no intérprete, para que pudéssemos acessar as funções que envolviam o modelo. Poderíamos então passar dados do banco de dados para o R via python. A camada python nos deu a interface web com Django e controle sobre o banco de dados etc ..
MD-Tech

11
@ Entusiasta Os resultados do modelo foram retornados pelo R dentro do RPy2 e apresentados no front end de várias formas, principalmente gráficos.
MD-Tech

2
@ Entusiasta Era uma rede bayesiana de finanças, mas não posso dizer mais do que isso. O modelo foi escrito em R. reto. Apenas texto simples; Eu estava editando-o no Vim sempre que necessário, e ele foi "implantado" carregando o código R, como texto, no RPy2 usando a origem ("our_code.r") nos objetos do RPy2. Foi feito dessa maneira para que pudéssemos editar o modelo ao vivo. Esta não é uma resposta para esta pergunta; a sua resposta a um que não tenha sido solicitado;)
MD-Tech

24

Pode haver vários motivos, como:

  1. Flexibilidade da força de trabalho: Um programador Java / Python pode ser movido para outras tarefas ou projetos facilmente.

  2. Disponibilidade dos candidatos: há muitos programadores em Java / Python. Você não deseja introduzir uma nova linguagem de programação para descobrir posteriormente que não há trabalhadores qualificados ou eles são muito caros.

  3. Integração e ETL: Às vezes, obter os dados com a qualidade certa é a parte mais difícil do projeto. Portanto, é natural usar o mesmo idioma que o resto dos sistemas.

  4. Definição de modelo de negócios: a maioria das regras e modelos de negócios já está escrita nesses idiomas.

  5. Apenas mantendo as coisas simples. Já é difícil o suficiente para estar atualizado com as tecnologias. Uma base diversa da linguagem pode ser caótica. R para isso, Ruby para isso, Scala, Clojure, F #, Swift, Dart ... Eles podem precisar de servidores diferentes, patches diferentes, um inferno para administrar. Todos têm seus próprios IDEs com ferramentas e plugins (nem sempre gratuitos). Veja alguns pontos do tio Bob sobre escolha de idiomas e novas tecnologias

Portanto, mesmo se você tiver uma vantagem de produtividade de 5% a 15% usando R para a tarefa específica, eles podem preferir uma ferramenta que apenas faça o trabalho, mesmo que não seja da maneira mais eficiente.


Embora verdadeiro, nenhuma das opções acima realmente responde à pergunta. A obtenção dos dados reduz 99% das vezes para consultar um banco de dados ou ler .csvarquivos - para o qual o objetivo R é realmente a melhor ferramenta adequada no mercado. Disponibilidade de candidatos: o fato de haver mais programadores Java do que os programadores R não implica que você precise descartar um candidato R se tiver um. Realmente não importa como o cientista realiza seus exercícios, desde que implante código legível que possa ser executado por alguns servidores (ou qualquer outra coisa que a empresa esteja executando).
suavizado 18/08/16

Claro que você não deve descartar o candidato. A pessoa é muito mais importante que a ferramenta. Sua equipe pode aprender R e o candidato pode aprender Java / Python. Mas levará tempo, o que significa dinheiro.
borjab

O ponto que certamente discordo é que ele não se importa com o idioma. Quando o único membro da equipe que conhece R não tiver férias e precisar fazer alterações, o chefe não ficará feliz. Ou apenas pergunte à equipe "Oh, ótimo, precisamos aprender um novo idioma só porque o novo faz as coisas dessa maneira". Pode ser que a administração do servidor seja outro departamento e novos tipos de servidor precisem de novas análises, procedimentos etc. Pode ser que você precise de luz verde da segurança de TI para usar um novo idioma.
borjab

@GennaroTedesco, o código escrito pelo candidato deve ser mantido por outros programadores, enquanto trabalhamos juntos e também em algum futuro quando o autor original seguir em frente. Não é suficiente ter um candidato que conhece bem uma tecnologia; ainda é importante considerar como será fácil contratar outro candidato que conheça bem a tecnologia quando você precisará de uma. é claro, uma nova tecnologia de nicho pode ser introduzida se houver um bom motivo, mas é preciso que haja um bom motivo para superar esses riscos comerciais.
31416 Peteris

Você pode ter uma melhoria de produtividade de $ x usando R, mas não ajuda se eles tiverem que gastar $ 2x de esforço em alterações no fluxo de trabalho. Por que eles fariam isso, especialmente se poderiam contratar alguém que não lhes custaria US $ 2x?
user1908704

14

Em geral, é verdade que, para exercícios puramente de ciência de dados e estatística, o R oferece as melhores e mais rápidas data.tableferramentas e métodos (especialmente se estiver usando o pacote), que de outra forma seriam mais pesados ​​de implementar no Python (presumo que no Python todos nós queremos dizer pandas, embora ) De fato, a maioria dos cientistas de dados usa R para executar seus modelos e cálculos, ou apenas para ver como os dados se comportam.

Quando o exercício estiver concluído, é hora de disponibilizá-lo para o restante das pessoas que precisam usá-lo (por exemplo, para implantar); para esse objetivo, muitas vezes é preferível enviar o código em Python por dois motivos principais:

  1. A maioria das arquiteturas é escrita em Python ou é compatível com Python, portanto, seria mais fácil implementar modelos escritos nativamente nessa linguagem.
  2. A sintaxe e a gramática R são extremamente complicadas. Eu próprio sou a favor de R, além de qualquer outra coisa, mas tenho que admitir que a sintaxe não é realmente direta e tem uma curva de aprendizado muito escolhida.

O que foi dito acima, ainda é verdade que é possível traduzir facilmente o código R para qualquer outra linguagem, desde que métodos, bibliotecas e pacotes estejam disponíveis (no Python, a maioria deles é, de modo que não há problema algum). Muitas infraestruturas e bancos de dados suportam o código R subjacente, portanto, a portabilidade não é realmente um problema, especialmente se é necessário enviar os resultados dos cálculos (nesse sentido, ninguém realmente vê o código subjacente).

Java é quase inútil para a pura ciência de dados (embora a Universidade de Stanford tenha uma coleção de bibliotecas de NLP de aprendizado de máquina escritas em Java, tanto quanto me lembro - mas verifique). A única razão pela qual isso pode ser exigido é que o restante da empresa o utiliza em grande escala e não deseja substituí-lo por algo novo.


Obrigado por compartilhar sua perspectiva e experiência !! Isso é útil. No seu segundo último parágrafo, presumo que você esteja falando sobre o scikit-learn? ou você quis dizer RPy? Cuidado ao elaborar?
Entusiasta

11
Simplesmente quero dizer que o que você estiver fazendo no R, provavelmente existe um pacote Python semelhante que faz o mesmo trabalho. Pandas cobre a maioria das coisas que data.tableoferece; o scikit-learn, como você mencionou, é outro exemplo, mas há muitos outros de acordo com o caso em questão.
suavizado em 18/08/16

11
Exatamente o que eu faço. A pesquisa em R, quando terminar, traduz para python para integrar na base de código. Mas @Enthusiast, se você pode fazer o mesmo nessa empresa depende de sua cultura. A maioria das pessoas usa a linguagem de programação que seu chefe usa. E Python não é difícil de aprender.
jf328

11
@GennaroTedesco: "Simplesmente quero dizer que o que você estiver fazendo no R, provavelmente existe um pacote Python semelhante que faz o mesmo trabalho". Na verdade, eu discordo totalmente dessa afirmação. A maior vantagem do R é que 90% dos estatísticos publicam o mais recente e "melhor" em R, em vez de em Python. Se esses métodos pegarem, eles poderão eventualmente chegar ao Python. Mas isso também é uma vantagem para o Python; existem muitos pacotes de estatísticas R que são apenas lixo, enquanto eu acho que os pacotes de estatísticas Python têm mais probabilidade de serem os métodos testados e verdadeiros.
Cliff AB

"A sintaxe e a gramática do R são extremamente complicadas. Eu próprio sou a favor do R, além de qualquer outra coisa, mas tenho que admitir que a sintaxe não é realmente direta e tem uma curva de aprendizado muito escolhida". Ambos parecem opiniões, mas um está vestido como uma declaração objetiva e o outro se opõe. Estou perplexo. Também acho que a sintaxe e os idiomas do Python são mais complicados (ênfase no OOP, por exemplo), por isso estou duplamente confuso com esta resposta.
estrela brilhante

7

Eu já vi várias empresas usando o título Data Scientist para funções do tipo "Data Engineer". Particularmente no espaço de big data.

Se a empresa estiver usando o Hadoop ou uma estrutura distribuída como o Spark para fazer análises em Java ou Python (ou provavelmente Scala) seriam as linguagens que mais fariam sentido.


Nesse caso, tenho certeza de que o papel era para modelar, pois solicitava habilidades de aprendizado de máquina e lista especificada de técnicas.
Entusiasta

Eles ainda poderiam fazer isso nessas tecnologias, usando bibliotecas Java / Python, algo como H20 ou MLlib.
greenpenguin

4

Java

Eu teria que discordar dos outros pôsteres sobre a questão do Java. Existem certos bancos de dados noSQL (como o hadoop) que são necessários para escrever trabalhos de mapreduce em java . Agora você pode usar o HIVE para obter o mesmo resultado.

Pitão

O debate python / R continua. Ambos são idiomas extensíveis, portanto, potencialmente, ambos podem ter a mesma capacidade de processar. Eu sei apenas R e meu conhecimento de python é bastante superficial. Falando como proprietário de uma pequena empresa, você deseja não ter muitas ferramentas em sua empresa, caso contrário, haverá uma falta geral de profundidade e dificuldade em apoiá-las. Eu acho que isso vai se aprofundar no conhecimento das ferramentas da equipe. Se a equipe estiver focada em python, a contratação de outro cientista de dados em python fará sentido, pois eles podem se envolver com a base de código existente e o código do experimento histórico.


2

Pelo menos para minha equipe atual (~ 80 cientistas e engenheiros de dados), não temos essa preferência. Metade dos cientistas de dados aqui usa R e outra metade usa Python. Muitos podem codificar em ambos. Implementamos código Python e R na produção.

Eu não acho que nenhum de nossos cientistas de dados use Java. Se eles precisam lidar com big data, eles podem usar SparkSQL ou PySpark. A equipe de engenharia de dados usa uma combinação de Java / Scala / Python / Go.

Se você é uma das poucas pessoas de dados em uma pequena empresa, entendo por que elas exigem certas habilidades de linguagem para que você possa fazer ciência e engenharia de dados. Mas acho que a maioria das pequenas empresas não terá dados grandes o suficiente para que o Python ou o R não possam lidar com a produção.


Você pode elaborar o tipo de negócio que sua organização faz? E é um trabalho interno da ML ou para clientes externos?
Enthusiast

11
@ Negócios de varejo para entusiastas. 100% para ML interno.
piggybox

0

Meu ponto de vista como programador de propósito geral com um pouquinho de experiência em R: R é excelente para ciência de dados, mas é voltado para pessoas que interpretam dados manualmente. Se você quiser usar os resultados para algo automatizado, precisará interagir com outra coisa, e será difícil fazer outra coisa em um idioma específico do problema como R. Você pode criar um site em R? :) Por outro lado, o python já possui bibliotecas prontas para o material de ciência de dados e é uma linguagem de programação de uso geral que não atrapalha o seu desempenho. Quanto ao Java, é bom para grandes projetos de programação com centenas de milhares a milhões de linhas de código. Se a parte de ciência de dados precisar interagir com isso, pode fazer sentido fazer tudo em Java então.

Lamentação aleatória: Por que tenho que entrar em cada site StackExchange separadamente?


4
O código R pode ser facilmente executado por quase todas as ferramentas disponíveis no mercado. Java quase não serve para ciência de dados.
gented 19/08/19

11
O @GennaroTedesco JAVA é útil para codificar em ferramentas de bigdata. Tão parcialmente útil para consultar dados.
Entusiasta

-1

As ferramentas em Python são melhores que a comunidade R. Ther R é bem estagnada, enquanto a comunidade Python está evoluindo muito rápido. Especialmente em ferramentas para ciência de dados.
Além disso, o Python funciona muito mais fácil com tudo ao seu redor. Você pode facilmente raspar a web, conectar-se a bancos de dados e assim por diante. Isso torna a prototipagem muito rápida.
E se você tem um protótipo funcional e deseja torná-lo mais rápido ou integrá-lo ao fluxo de trabalho da empresa, ele geralmente é reimplementado em Java.

O R possui algumas ferramentas e visualização limpas, mas não é tão bom criar coisas novas nele.


4
Isso é completamente errado em todos os aspectos.
gented 19/08/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.