Warum bevorzugen Internetunternehmen Java / Python als Data Scientist?

53

In der Stellenbeschreibung für Datenwissenschaftler, die nach Python / Java-Erfahrung fragen und R ignorieren, sehe ich oft. Nachstehend eine persönliche E-Mail, die ich vom Chief Data Scientist eines Unternehmens erhalten habe, für das ich mich über linkedin beworben habe.

X, vielen Dank für Ihre Kontaktaufnahme und Ihr Interesse. Sie haben gute analytische Fähigkeiten. Alle unsere Datenwissenschaftler müssen jedoch über gute Programmierkenntnisse in Java / Python verfügen, da wir eine Internet- / Mobilorganisation sind und alles, was wir tun, online ist.

Obwohl ich die Entscheidung des leitenden Datenwissenschaftlers respektiere, kann ich mir kein klares Bild darüber machen, welche Aufgaben Python ausführen kann, die R nicht ausführen kann. Kann mir jemand etwas ausdenken? Ich bin eigentlich sehr daran interessiert, Python / Java zu lernen, vorausgesetzt, ich erhalte ein bisschen mehr Details.

Edit: Ich fand eine interessante Diskussion über Quora. Warum ist Python eine Sprache der Wahl für Datenwissenschaftler?

Edit2: Blog von Udacity über Sprachen und Bibliotheken für maschinelles Lernen

Enthusiast
quelle
8
Python ist ein guter Kompromiss: Es bietet viele (nicht standardmäßige) Bibliotheken für Datascience (Pandas, Scikit, ...) und viele industrielle Prozesse sind bereits in Python codiert.
Manu H
4
"Unsere Datenwissenschaftler müssen gute Programmierkenntnisse in Java / Python haben, da wir eine Internet- / Mobil-Organisation sind und alles, was wir tun, online ist", ist eine massive Nicht-Sequenzierung - die Schlussfolgerung folgt nicht aus der Prämisse. Ich vermute, die CDS versucht nur, Sie loszuwerden.
Spacedman
5
@ManuH Wenn Sie mit "Nicht-Standard" "Nicht in der Standardbibliothek" meinen, haben Sie Recht. Aber diese Tools sind ziemlich weit verbreitet, und sie sind mit Sicherheit ein Grundnahrungsmittel der Sprache. NumPy hat derzeit über 100.000 Fragen zu SO, Pandas hat 74.000. Ich denke, Sie könnten mit Sicherheit behaupten, dass dies Industriestandards sind . (Zumindest auf der Seite der Softwareentwicklung. Ich würde mich kaum als "Datenwissenschaftler" bezeichnen.)
jpmc26
2
"Data Scientist" ist kein genau definierter Begriff. Data Scientist ist im Grunde jemand, der nützliche Dinge mit Daten tun kann. Sie müssen kein maschinelles Lernen oder statistische Pakete verwenden. Jemand könnte Java / Scala / Spark / whatever verwenden, um große Datenmengen zu verwalten und nützliche Einblicke zu erhalten, ohne maschinelles Lernen.
Akavall
2
@ jpmc26 Ja das war ich gemeint. Jetzt ist mir klar, dass sogar Bibliotheken erwähnt werden könnten, die noch nicht den Industriestandard erreicht haben (ein weiteres Argument für Python)
Manu H

Antworten:

67

So können Sie mit dem Rest der Codebasis integrieren. Offenbar verwendet Ihr Unternehmen eine Mischung aus Java und Python. Was werden Sie tun, wenn eine kleine Ecke der Site maschinelles Lernen erfordert? Daten mit einer Datenbank oder einem Cache weitergeben, auf R ablegen und so weiter? Warum nicht einfach alles in derselben Sprache machen? Es ist schneller, sauberer und einfacher zu warten.

Kennen Sie Online-Unternehmen, die ausschließlich mit R arbeiten? Ich auch nicht...

Alles, was Java sagte, ist die letzte Sprache, in der ich Datenwissenschaft betreiben würde.

Emre
quelle
1
Ich wollte gerade sagen, dass eine serviceorientierte Architektur auch Brückentechnologien unterstützt. PMML ist ein bisschen unternehmerisch; Ich habe es nicht benutzt, aber dein ist ein Java-Shop, die Muttersprache des Unternehmens, also weißt du es nie ...
Emre
3
@Enthusiast vergessen Sie nicht, dass Sie R unter Python mit RPy2 ausführen können (zum Beispiel), sodass Sie möglicherweise (wie in einem früheren Job) Modelle ausführen, die in R über Python geschrieben wurden, damit sie über eine Weboberfläche dargestellt werden können über Django.
MD-Tech
2
Wir haben das Modell in Klartext-R-Dateien erstellt, die in den R-Interpreter geladen wurden, um sie zu testen (und das Erstellen zu erleichtern). Während dies erstellt und getestet wurde, haben wir ein Python-Django-Projekt mit einem Abschnitt erstellt, der auf RPy2 verwies und RPy2-Objekte erstellte. Diese Objekte wurden dann verwendet, um die R-Dateien auf die gleiche Weise zu laden, wie Sie sie in den Interpreter geladen haben, damit wir auf die Funktionen zugreifen konnten, die das Modell umschlossen. Wir könnten dann Daten aus der Datenbank über Python an R übergeben. Die Python-Ebene gab uns das Web-Frontend mit Django und Kontrolle über die Datenbank usw.
MD-Tech
1
@Enthusiast Die Ergebnisse des Modells wurden vom R innerhalb von RPy2 zurückgegeben und im Frontend in verschiedenen Formen, meist grafischen Darstellungen, dargestellt.
MD-Tech
2
@Enthusiast Es war ein Bayesianisches Netzwerk für Finanzen, aber mehr kann ich nicht sagen. Das Modell wurde gerade in R geschrieben. Nur einfacher Text; Ich habe es in Vim bearbeitet, wann immer ich wollte, und es wurde "bereitgestellt", indem der R-Code als Text in RPy2 unter Verwendung der Quelle ("our_code.r") auf den RPy2-Objekten geladen wurde. Es wurde so gemacht, dass wir das Modell live bearbeiten konnten. Dies ist keine Antwort auf diese Frage; Es ist eine Antwort auf eine, die nicht gefragt wurde;)
MD-Tech
24

Es kann viele Gründe geben wie:

  1. Flexibilität der Belegschaft: Ein Java / Python-Programmierer kann problemlos in andere Aufgaben oder Projekte versetzt werden.

  2. Verfügbarkeit der Kandidaten: Es gibt viele Java / Python-Programmierer. Sie möchten keine neue Programmiersprache einführen, um später festzustellen, dass es keine qualifizierten Mitarbeiter gibt oder diese einfach zu teuer sind.

  3. Integration und ETL: Manchmal ist es der schwierigste Teil des Projekts, die Daten in der richtigen Qualität zu erhalten. Daher ist es selbstverständlich, dieselbe Sprache wie die anderen Systeme zu verwenden.

  4. Geschäftsmodelldefinition: Die meisten Geschäftsregeln und Geschäftsmodelle sind bereits in diesen Sprachen verfasst.

  5. Einfach die Dinge einfach halten. Es ist schon schwer genug, mit den Technologien auf dem neuesten Stand zu sein. Eine vielfältige Sprachbasis kann chaotisch sein. R dafür, Ruby dafür, Scala, Clojure, F #, Swift, Dart ... Sie brauchen möglicherweise verschiedene Server, verschiedene Pfade, eine Hölle, um zu verwalten. Alle haben ihre eigenen IDEs mit Tools und Plugins (nicht immer kostenlos). Sehen Sie sich einige Punkte von Onkel Bob über die Auswahl von Sprachen und neue Technologien an

Selbst wenn Sie einen Produktivitätsvorteil von 5% - 15% bei der Verwendung von R für die jeweilige Aufgabe haben, bevorzugen sie möglicherweise ein Werkzeug, das die Aufgabe einfach erledigt, auch wenn es nicht auf die effizienteste Weise ausgeführt wird.

Borjab
quelle
Obwohl dies zutrifft, beantwortet keines der oben genannten Punkte die Frage. Durch das Abrufen der Daten wird 99% der Zeit für das Abfragen einer Datenbank oder das Lesen von .csvDateien aufgewendet. Zu diesem Zweck ist R das am besten geeignete Tool auf dem Markt. Verfügbarkeit von Kandidaten: Die Tatsache, dass es mehr Java-Programmierer als R-Programmierer gibt, bedeutet nicht, dass Sie einen R-Kandidaten verwerfen müssen, wenn Sie einen haben. Es spielt keine Rolle, wie der Wissenschaftler seine Aufgaben ausführt, solange er lesbaren Code bereitstellt, der von einigen Servern (oder anderen Dingen, die das Unternehmen ausführt) ausgeführt werden kann.
Gented
Natürlich sollten Sie den Kandidaten nicht verwerfen. Die Person ist viel wichtiger als das Werkzeug. Ihr Team kann R lernen und der Kandidat kann Java / Python lernen. Aber es wird Zeit brauchen, was Geld bedeutet.
Borjab
Der Punkt, dem ich definitiv nicht zustimme, ist, dass die Sprache nichts ausmacht. Wenn das einzige Mitglied des Teams, das R kennt, keine Feiertage hat und Änderungen vornehmen muss, ist der Chef nicht glücklich. Oder fragen Sie einfach das Team "Oh, großartig, wir müssen eine neue Sprache lernen, nur weil die neue Sprache die Dinge so macht". Möglicherweise ist die Serververwaltung eine andere Abteilung, und neue Servertypen erfordern einige neue Analysen, Verfahren usw. Möglicherweise benötigen Sie grünes Licht von der IT-Sicherheit, um eine neue Sprache zu verwenden.
Borjab
@GennaroTedesco Der vom Kandidaten geschriebene Code muss von anderen Programmierern gepflegt werden können , während er zusammenarbeitet und auch in Zukunft, wenn der ursprüngliche Autor weitermacht . Es reicht nicht aus, einen Kandidaten zu haben, der eine Technologie gut kennt. Es ist jedoch wichtig zu überlegen, wie einfach es sein wird, einen anderen Kandidaten einzustellen, der die Technologie gut kennt, wenn Sie eine benötigen. Natürlich kann eine neue Nischentechnologie eingeführt werden, wenn es einen guten Grund gibt, aber es muss einen guten Grund geben, solche Geschäftsrisiken aufzuwiegen.
Peteris
Sie könnten eine $ x Verbesserung der Produktivität haben durch Verwendung von R, aber es ist keine Hilfe , wenn sie aufwenden müssen $ 2x Aufwand in Änderungen an ihren Workflow. Warum sollten sie das tun, besonders wenn sie jemanden einstellen könnten, der sie nicht zweimal $ kostet ?
user1908704
14

Es ist im Allgemeinen richtig, dass für rein datenwissenschaftliche und statistische Übungen R die besten und schnellsten (insbesondere bei Verwendung des data.tablePakets) Tools und Methoden bietet, die ansonsten in Python schwerer zu implementieren wären (ich nehme an, mit Python meinen wir alle Pandas) ). Tatsächlich verwenden die meisten Datenwissenschaftler R, um ihre Modelle und Berechnungen durchzuführen oder nur um zu sehen, wie sich Daten verhalten.

Sobald die Übung abgeschlossen ist, ist es an der Zeit, sie den übrigen Personen zur Verfügung zu stellen, die sie verwenden müssen (z. B. um sie einzusetzen). Zu diesem Zweck wird es häufig bevorzugt, den Code aus zwei Hauptgründen in Python einzureichen:

  1. Die meisten Architekturen sind in Python geschrieben oder Python-freundlich, daher wäre es einfacher, Modelle zu implementieren, die ursprünglich in dieser Sprache geschrieben wurden.
  2. R-Syntax und Grammatik sind äußerst kompliziert. Ich selbst bevorzuge R anders als alles andere, muss aber zugeben, dass die Syntax nicht wirklich einfach ist und eine sehr ausgewählte Lernkurve aufweist.

Das oben Gesagte, es ist immer noch wahr, dass man R-Code leicht in jede andere Sprache übersetzen kann, vorausgesetzt, dass Methoden, Bibliotheken und Pakete verfügbar sind (in Python sind die meisten davon vorhanden, so dass das überhaupt kein Problem ist). Viele Infrastrukturen und Datenbanken unterstützen den zugrunde liegenden R-Code, daher ist die Portabilität kein wirkliches Problem, insbesondere wenn man nur die Ergebnisse der Berechnungen einreichen muss (insofern sieht sowieso niemand den zugrunde liegenden Code wirklich).

Java ist für die reine Datenwissenschaft selbst kaum von Nutzen (obwohl die Stanford University, soweit ich mich erinnere, eine Sammlung von maschinell lernenden NLP-Bibliotheken in Java hat - bitte überprüfen Sie dies). Der einzige Grund, warum dies erforderlich sein kann, ist, dass der Rest des Unternehmens es in großem Umfang nutzt und es nicht durch etwas Neues ersetzen möchte.

gented
quelle
Vielen Dank für Ihre Perspektive und Erfahrung! Das ist hilfreich. Ich gehe davon aus, dass Sie in Ihrem vorletzten Absatz von Scikit-Learn sprechen. oder meintest du RPy? Möchten Sie näher darauf eingehen?
Enthusiast
1
Ich meine einfach, was auch immer Sie in R tun, es gibt höchstwahrscheinlich ein ähnliches Python-Paket, das den gleichen Job macht. Pandas deckt die meisten der angebotenen Dinge ab data.table. scikit-learn ist, wie Sie bereits erwähnt haben, ein weiteres Beispiel, aber es gibt noch viel mehr, je nach vorliegendem Fall.
Gented
1
Genau das, was ich tue. Wenn die R-Recherche abgeschlossen ist, können Sie sie in Python übersetzen, um sie in die Codebasis zu integrieren. Aber @Enthusiast, ob Sie dasselbe in diesem Unternehmen tun können, hängt von seiner Kultur ab. Die meisten Leute benutzen die Programmiersprache, die ihr Chef benutzt. Und Python ist nicht schwer zu lernen.
jf328
1
@GennaroTedesco: "Ich meine einfach, was auch immer Sie in R tun, es gibt höchstwahrscheinlich ein ähnliches Python-Paket, das den gleichen Job macht". Ich stimme dieser Aussage überhaupt nicht zu. Der größte Vorteil von R ist, dass 90% der Statistiker ihre neuesten und "größten" in R veröffentlichen und nicht in Python. Wenn sich diese Methoden durchsetzen, gelangen sie möglicherweise zu Python. Aber das ist auch ein Plus für Python. Es gibt viele R-Statistik-Pakete, die nur Müll sind, während ich denke, dass Python-Statistik-Pakete eher die bewährten Methoden sind.
Cliff AB
"R-Syntax und Grammatik sind extrem kompliziert. Ich persönlich bevorzuge R ganz besonders, muss aber zugeben, dass die Syntax nicht wirklich einfach ist und eine sehr ausgefeilte Lernkurve aufweist." Beide scheinen Meinungen zu sein, aber eine ist als objektive Aussage verkleidet und die andere widerspricht ihr. Ich bin ratlos. Ich habe auch das Gefühl, dass Pythons Syntax und Redewendungen komplizierter sind (OOP-Betonung zum Beispiel), daher bin ich von dieser Antwort doppelt verwirrt.
Bright-Star
7

Ich habe einige Unternehmen gesehen, die den Titel Data Scientist für Rollen vom Typ "Data Engineer" verwendet haben. Besonders im Big-Data-Bereich.

Wenn das Unternehmen Hadoop oder ein verteiltes Framework wie Spark für die Analyse verwendet, sind Java oder Python (oder wahrscheinlich Scala) die Sprachen, die am sinnvollsten sind.

Greenpenguin
quelle
In diesem Fall weiß ich sicher, dass diese Rolle für das Modellieren war, da sie nach maschinellen Lernfähigkeiten und einer festgelegten Liste von Techniken verlangte.
Enthusiast
Sie könnten das immer noch in diesen Technologien tun, obwohl sie Java / Python-Bibliotheken verwenden, so etwas wie H20 oder MLlib.
Greenpenguin
4

Java

Ich würde mit den anderen Plakaten auf der Java-Frage nicht einverstanden sein müssen. Es gibt bestimmte noSQL-Datenbanken (wie Hadoop), die man benötigt, um Mapreduce-Jobs in Java zu schreiben . Jetzt können Sie mit HIVE fast dasselbe Ergebnis erzielen.

Python

Die Python / R-Debatte geht weiter. Beide Sprachen sind erweiterbar, sodass möglicherweise beide dieselbe Verarbeitungsfähigkeit haben. Ich kenne nur R und meine Pythonkenntnisse sind recht oberflächlich. Als Inhaber eines Kleinunternehmens möchten Sie nicht zu viele Tools in Ihrem Unternehmen haben, da dies sonst einen allgemeinen Mangel an Tiefe und Schwierigkeiten bei der Unterstützung der Tools zur Folge hat. Ich denke, es wird auf die Tiefe des Werkzeugwissens im Team ankommen. Wenn sich das Team auf Python konzentriert, ist es sinnvoll, einen anderen Python-Datenwissenschaftler einzustellen, da dieser sich mit der vorhandenen Codebasis und dem Code für historische Experimente befassen kann.

Marcus D
quelle
2

Zumindest für mein aktuelles Team (ca. 80 Datenwissenschaftler und Ingenieure) haben wir keine solche Präferenz. Die Hälfte der Datenwissenschaftler verwendet R und die andere Hälfte Python. Viele können beides einprogrammieren. Wir setzen Python- und R-Code in der Produktion ein.

Ich glaube, keiner unserer Datenwissenschaftler verwendet Java. Wenn sie mit Big Data umgehen müssen, können sie SparkSQL oder PySpark verwenden. Das Data Engineering-Team verwendet eine Mischung aus Java / Scala / Python / Go.

Wenn Sie einer der wenigen Data-Mitarbeiter in einem kleinen Unternehmen sind, kann ich verstehen, warum bestimmte Sprachkenntnisse erforderlich sind, damit Sie sowohl Data Science als auch Engineering betreiben können. Aber ich denke, die meisten kleinen Unternehmen werden nicht genügend Daten haben, die Python oder R in der Produktion nicht verarbeiten können.

piggybox
quelle
Können Sie die Art des Geschäfts erläutern, das Ihre Organisation betreibt? Und ist es in Haus ML Arbeit oder für externe Kunden?
Enthusiast
1
@Enthusiast Retail-Geschäft. 100% für Inhouse-ML.
Piggybox
0

Mein Standpunkt als Universalprogrammierer mit ein wenig R-Erfahrung: R eignet sich hervorragend für die Datenwissenschaft, richtet sich jedoch an Personen, die Daten manuell interpretieren. Wenn Sie die Ergebnisse für etwas Automatisiertes verwenden möchten, müssen Sie eine Schnittstelle zu etwas anderem herstellen, und in einer problemspezifischen Sprache wie R ist es schwierig, etwas anderes zu tun. Können Sie eine Website in R erstellen? :) Auf der anderen Seite hat Python fertige Bibliotheken für Data-Science-Sachen und ist eine Allzweck-Programmiersprache, die Sie nicht daran hindert, etwas anderes damit zu machen. Java eignet sich für große Programmierprojekte mit Hunderttausenden bis Millionen von Codezeilen. Wenn der Data Science-Teil eine Schnittstelle dazu haben muss, kann es sinnvoll sein, alles in Java zu tun.

Zufälliges Winseln: Warum muss ich mich bei jeder StackExchange-Site separat anmelden?

Torp
quelle
4
R-Code kann problemlos von fast allen auf dem Markt erhältlichen Tools ausgeführt werden. Java ist für die Datenwissenschaft praktisch nutzlos.
Gented
1
@GennaroTedesco JAVA ist jedoch nützlich für die Codierung in BigData-Tools. Teilweise nützlich für die Abfrage von Daten.
Enthusiast
-1

Die Tools in Python sind einfach besser als in R. Die R-Community steht ziemlich still, während sich die Python-Community sehr schnell entwickelt. Besonders in Tools für Data Science.
Auch Python funktioniert mit allem, was es umgibt, viel einfacher. Sie können problemlos im Web surfen, eine Verbindung zu Datenbanken herstellen usw. Das macht das Prototyping sehr schnell.
Und wenn Sie einen funktionierenden Prototyp haben und ihn schneller machen oder in den Unternehmens-Workflow integrieren möchten, wird er normalerweise in Java neu implementiert.

R hat ein paar nette Tools und Visualisierungen, aber es ist nicht so toll, neue Sachen darin zu bauen.

Sebastian
quelle
4
Das ist absolut falsch.
Gented