インターネット企業がデータサイエンティストの仕事にJava / Pythonを好むのはなぜですか?


53

Python / Javaの経験を求め、Rを無視するデータサイエンティストの職務記述書を何度も参照します。以下は、linkinを通じて応募した会社のチーフデータサイエンティストから受け取った個人メールです。

X、関心を示してくれてありがとう。優れた分析スキルがあります。しかし、私たちはインターネット/モバイル組織であり、すべてがオンラインであるため、すべてのデータサイエンティストはJava / Pythonの優れたプログラミングスキルを持っている必要があります。

チーフデータサイエンティストの決定を尊重しますが、RができないPythonが実行できるタスクについて明確に把握することはできません。誰でも手入れを気にかけることができますか?私は実際にPython / Javaをもっと学びたいと思っています。

編集:Quoraで興味深い議論を見つけました。 Pythonがデータサイエンティストにとって最適な言語であるのはなぜですか?

Edit2:機械学習のための言語とライブラリに関するUdacityのブログ


8
Pythonは妥協案です。データサイエンス(パンダ、scikit、...)のための多くの(非標準)ライブラリを提供し、多くの産業プロセスは既にPythonでコーディングされています。
マヌーH

4
「私たちのデータ科学者は、インターネット/モバイル組織であり、すべてがオンラインであるため、Java / Pythonで優れたプログラミングスキルを持っている必要があります」は大規模な非機密です。結論前提からは続きません。私は、CDSがあなたを追い払おうとしているだけだと思います。
スペースドマン

5
@ManuH「非標準」というのは、「標準ライブラリにはない」という意味です。しかし、これらのツールは非常に広く使用されており、確かに言語の定番です。現在、numpyにはSOに関する質問が10万件以上あり、pandasには74kあります。確かに、それらが業界標準であることを主張できると思います。(少なくともソフトウェア開発側では。自分を「データサイエンティスト」と呼ぶことはほとんどありません。)
jpmc26

2
「データサイエンティスト」は明確に定義された用語ではありません。データサイエンティストとは、基本的にデータを使って役に立つことをできる人です。機械学習や統計パッケージを使用する必要はありません。誰かがJava / Scala / Spark / whateverを使用して大量のデータを管理し、機械学習なしで有用な洞察を得るかもしれません。
アカヴァル

2
@ jpmc26はい、それは私が意図したことです。今では、まだ業界標準に達していないライブラリでさえ言及できることに気づきました(Pythonのもう1つの議論)
Manu H

回答:


67

したがって、残りのコードベースと統合できます。あなたの会社はJavaとpythonの組み合わせを使用しているようです。サイトの小さなコーナーで機械学習が必要な場合はどうしますか。データベースやキャッシュでデータを渡したり、Rにドロップしたりしますか?すべてを同じ言語で行わないのはなぜですか?より高速で、クリーンで、保守が簡単です。

Rのみで実行しているオンライン企業を知っていますか?私もそうではないです...

Javaが私がデータサイエンスを行う最後の言語であるということはすべてです。


1
サービス指向アーキテクチャは、テクノロジーの橋渡しにも役立ちます。PMMLは少しエンタープライズです。私はそれを使ったことはありませんが、あなたのものはJavaショップであり、母なるエンタープライズ言語なので、あなたは決して知りません
...-Emre

3
@Enthusiastは、RPy2を使用してPythonでRを実行できることを忘れないでください(例えば)ジャンゴ経由。
MDテック

2
モデルをプレーンテキストの.rファイルでビルドしました。このファイルはRインタープリターにロードされ、テスト(およびビルドを容易にする)されました。これが構築およびテストされている間に、RPy2を参照し、RPy2オブジェクトを作成したセクションを含むpython djangoプロジェクトを構築しました。次に、これらのオブジェクトを使用して、インタープリターにロードするのと同じ方法でRファイルをロードし、モデルをラップした関数にアクセスできるようにしました。その後、Pythonを介してデータベースからRにデータを渡すことができます。Pythonの層は、など。データベース上で私たちにジャンゴとコントロールを使用してWebフロントエンドを与えた
MD-テック

1
@Enthusiastモデルの結果はRPy2内のRによって返され、さまざまな装いでフロントエンドに表示されました。ほとんどはグラフです。
MDテック

2
@Enthusiast金融のベイジアンネットワークでしたが、それ以上のことは言えません。モデルはストレートRで記述されています。単なるプレーンテキストです。必要に応じてVimで編集し、RPy2オブジェクトのsource( "our_code.r")を使用してRコードをテキストとしてRPy2にロードすることで「デプロイ」しました。モデルのライブ編集ができるように、この方法で行われました。これはこの質問に対する答えではありません。質問されていない方への回答;)
MD-Tech

24

次のような多くの理由があります。

  1. 従業員の柔軟性:1人のJava / Pythonプログラマーを他のタスクやプロジェクトに簡単に移動できます。

  2. 候補者の利用可能性:Java / Pythonプログラマーはたくさんいます。新しいプログラミング言語を導入して、有能な労働者がいないか、または彼らがあまりにも高価であることを後で知ることは望ましくありません。

  3. 統合とETL:適切な品質のデータを取得することがプロジェクトの最も難しい部分である場合があります。そのため、他のシステムと同じ言語を使用するのが自然です。

  4. ビジネスモデルの定義:ほとんどのビジネスルールとビジネスモデルは、すでにこの言語で記述されています。

  5. 物事をシンプルに保つだけです。テクノロジーを最新の状態にするのは、すでに十分に困難です。言語の多様な基盤は混oticとしている場合があります。このためのR、そのためのRuby、Scala、Clojure、F#、Swift、Dart ...異なるサーバー、異なるパス、管理するための地獄が必要な場合があります。すべてにツールとプラグインを備えた独自のIDEがあります(常に無料ではありません)。言語選択新技術に関するボブおじさんのポイントをご覧ください

したがって、特定のタスクにRを使用して5%から15%の生産性の利点がある場合でも、最も効率的な方法でなくてもジョブを実行するツールを好む場合があります。


本当ですが、上記のどれも実際に質問に答えません。データを取得することで、データベースのクエリや.csvファイルの読み取りにかかる時間を99%削減できます。実際、Rは市場で最適なツールです。候補の可用性:RプログラマーよりもJavaプログラマーの方が多いということは、Rの候補者がいる場合はそれを破棄しなければならないことを意味しません。一部のサーバー(または会社が運営している他のすべてのもの)で実行できる読み取り可能なコードを展開している限り、科学者がどのように演習を実行するかは問題ではありません。
紳士

もちろん、候補者を捨てるべきではありません。人はツールよりもはるかに重要です。彼らのチームはRを学び、候補者はJava / Pythonを学ぶことができます。しかし、それはお金を意味する時間がかかります。
ボルジャブ

私が確かに反対する点は、言語を気にしないということです。Rを知っているチームの唯一のメンバーが休日を持たず、変更を加える必要がある場合、ボスは満足しません。または、「新しい言語がこのように物事を行うからといって、新しい言語を学ぶ必要がある」とチームに尋ねてください。サーバー管理は別の部門であり、新しいタイプのサーバーには新しい分析や手順などが必要な場合があります。新しい言語を使用するには、ITセキュリティのグリーンライトが必要な場合があります。
ボルジャ

@GennaroTedesco候補者によって書かれたコードは、他のプログラマーが保守可能でなければならず、同時に一緒に作業し、また将来、元の作者が移動するときにも必要です。技術を熟知している候補者がいるだけでは十分ではありません。技術を必要とするときに、その技術を熟知している別の候補者をどれだけ簡単に雇用できるかを考慮することは依然として重要です。もちろん、正当な理由がある場合は新しいニッチテクノロジーを導入できますが、そのようなビジネスリスクを上回る十分な理由が必要です。
ペティス

あなたは Rを使用して$ X生産性向上を持っているかもしれませんが、あれば、それは何の助けません、彼らが消費する必要が$彼らのワークフローへの変更に手間の2倍を。なぜ、彼らは彼らに費用いない可能性があります他の誰かを雇うことができ、特に場合、ということだろう$ 2倍に?
user1908704

14

一般的に、純粋にデータサイエンスと統計の演習では、Rが最高で最速の(特にdata.tableパッケージを使用する場合)ツールとメソッドを提供することは事実です。 )。実際、ほとんどのデータサイエンティストはRを使用してモデルや計算を実行したり、データの動作を確認したりしています。

演習が完了したら、それを使用する(展開する)必要がある残りの人々が利用できるようにします。この目的のために、次の2つの主な理由から、Pythonでコードを送信することがしばしば好まれます。

  1. ほとんどのアーキテクチャはPythonで記述されているか、Pythonに対応しているため、その言語でネイティブに記述されたモデルを実装する方が簡単です。
  2. Rの構文と文法は非常に複雑です。私自身は他の何よりもRを強く支持していますが、構文は本当に単純ではなく、学習曲線が厳選されていることを認めなければなりません。

上記のことは、メソッド、ライブラリ、およびパッケージが利用可能な場合、Rコードを他の言語に簡単に翻訳できることは依然として真実です(Pythonではほとんどの言語が利用できるため、まったく問題ありません)。多くのインフラストラクチャとデータベースが基礎となるRコードをサポートしているため、特に計算の結果を送信するだけの場合(特に、基礎となるコードは実際には誰も見ない場合)、移植性は実際には問題ではありません。

Javaは純粋なデータサイエンス自体にはほとんど役に立ちません(ただし、スタンフォード大学には、Javaで記述された機械学習NLPライブラリのコレクションがありますが、私が覚えている限りでは確認してください)。それが必要になる唯一の理由は、会社の他の部分がそれを大いに使用しているだけであり、彼らがそれを何か新しいものに置き換えたくないということだけです。


あなたの視点と経験を共有してくれてありがとう!! これは役に立ちます。最後の2番目の段落から、scikit-learnについて話していると思いますか?またはRPyを意味しましたか?手入れをしますか?
愛好家

1
私は単に、あなたがRで何をしていても、同じ仕事をする類似のPythonパッケージが存在する可能性が高いことを意味します。パンダはdata.table提供するもののほとんどをカバーしています。あなたが言ったように、scikit-learnは別の例ですが、手元のケースに応じてさらに多くの例があります。
紳士

1
まさに私がすること。Rでの研究は、終了したらPythonに変換してコードベースに統合します。しかし、@ Enthusiastがその会社で同じことができるかどうかは、その文化に依存します。ほとんどの人は、上司が使用するプログラミング言語を使用します。また、Pythonを学ぶのは難しくありません。
jf328

1
@GennaroTedesco:「Rで何をしていても、同じ仕事をする類似のPythonパッケージが存在する可能性が高いということです」。私は実際にこの声明に強く反対します。Rの最大の利点は、統計学者の90%がPythonではなく、Rで最新かつ「最高の」Rを公開していることです。これらのメソッドが普及すると、最終的にはPythonに移行する可能性があります。しかし、それはPythonにとってもプラスです。Pythonのstatsパッケージは、試行された真のメソッドである可能性が高いと思いますが、多くのR statsパッケージはごみです。
クリフAB

「Rの構文と文法は非常に複雑です。私は他の何よりもRを強く好みますが、構文は実際には単純ではなく、学習曲線が厳選されていることを認めなければなりません。」これらはどちらも意見のように見えますが、1つは客観的な声明にdressしており、もう1つはそれに反対しています。私は困惑しています。また、Pythonの構文とイディオムはより複雑である(1つはOOP強調)と感じているので、この答えに二重に混乱しています。
ブライトスター

7

「データエンジニア」タイプの役割に「データサイエンティスト」というタイトルを使用している企業を見てきました。特にビッグデータ空間で。

会社がHadoopまたはSparkなどの分散フレームワークを使用して分析を行う場合、JavaまたはPython(またはおそらくScala)が最も意味のある言語になります。


この場合、機械学習スキルと指定されたテクニックのリストを求めたので、その役割がモデリングのためであることを確信しています。
愛好家

H20やMLlibのようなJava / Pythonライブラリを使用することもありますが、それらの技術の内部でそれを行うことができます。
グリーンペンギン

4

Java

Javaの質問に関する他のポスターに同意する必要があります。javaで mapreduce ジョブ作成する必要がある特定のnoSQLデータベース(hadoopなど)があります。これで、HIVEを使用してほぼ同じ結果を得ることができます。

Python

python / Rの議論は続いています。どちらも拡張可能な言語であるため、潜在的に両方が同じ処理能力を持つことができます。私はRのみを知っており、私のPythonの知識は非常に表面的なものです。中小企業のオーナーとして言えば、ビジネスにあまり多くのツールを持たないようにしたいと思うでしょう。さもないと、それらのツールに一般的な深みがなくなり、それらをサポートすることが難しくなります。チーム内のツールの知識の深さになると思います。チームがpythonに焦点を合わせている場合、別のpythonデータサイエンティストを雇うことは、既存のコードベースと歴史的な実験コードを扱うことができるため、理にかなっています。


2

少なくとも私の現在のチーム(〜80人のデータサイエンティストおよびエンジニア)にとっては、そのような好みはありません。ここのデータサイエンティストの半分はRを使用し、もう半分はPythonを使用しています。多くは両方でコーディングできます。PythonおよびRコードを実稼働環境にデプロイします。

私たちのデータ科学者がJavaを使用しているとはまったく思いません。ビッグデータを処理する必要がある場合、SparkSQLまたはPySparkを使用できます。データエンジニアリングチームは、Java / Scala / Python / Goを組み合わせて使用​​しています。

あなたが小さな会社にいる数少ないデータ担当者の1人であれば、データ科学とエンジニアリングの両方を行えるように特定の言語スキルが必要な理由を理解できます。しかし、ほとんどの小規模企業は、PythonやRが本番環境で処理できないほど大きなデータを持っていないと思います。


組織が行うビジネスのタイプについて詳しく説明していただけますか?そして、それは社内ML作業ですか、それとも外部クライアント向けですか?
愛好家

1
@愛好家向け小売業。社内MLの場合は100%。
piggybox

0

Rの経験が少しある汎用プログラマーとしての私の視点:Rはデータサイエンスには優れていますが、データを手動で解釈する人々を対象としています。結果を自動化された何かに使用したい場合は、他の何かとインターフェースする必要があり、Rのような問題固有の言語では他の何かを行うのは難しいでしょう。RでWebサイトを作成できますか?:)一方で、Pythonはデータサイエンス関連のライブラリをすでに作成しており、汎用プログラミング言語であり、他のことを邪魔することはありません。Javaについては、数十万から数百万行のコードを持つ大規模なプログラミングプロジェクトに適しています。データサイエンスの部分がそれとやり取りする必要がある場合は、Javaですべてを実行するのが理にかなっています。

ランダムな泣き声:各StackExchangeサイトに個別にサインインする必要があるのはなぜですか?


4
Rコードは、市場で入手可能なほとんどすべてのツールで簡単に実行できます。Javaはデータサイエンスにはほとんど役に立ちません。
紳士

1
ただし、@ GennaroTedesco JAVAは、ビッグデータツールでのコーディングに役立ちます。そのため、データのクエリに部分的に役立ちます。
愛好家

-1

PythonのツールはRよりも優れています。Rコミュニティはかなり停滞していますが、Pythonコミュニティは急速に進化しています。特にデータサイエンスのツールで。
また、Pythonは周囲のすべてで簡単に機能します。Webを簡単にスクレイプしたり、データベースに接続したりできます。これにより、プロトタイピングが非常に高速になります。
また、動作するプロトタイプがあり、それをより速くしたり、会社のワークフローに統合したりする場合、通常はJavaで再実装されます。

Rにはいくつかのすてきなツールと視覚化がありますが、Rに新しいものを作成するのはそれほど素晴らしいことではありません。


4
それはすべての意味で完全に間違っています。
紳士
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.