Mengapa perusahaan internet lebih memilih Java / Python untuk pekerjaan ilmuwan data?

53

Saya melihat berkali-kali dalam deskripsi pekerjaan untuk ilmuwan data yang meminta pengalaman Python / Java dan mengabaikan R. Di bawah ini adalah email pribadi yang saya terima dari ilmuwan data kepala perusahaan yang saya lamar melalui linkedin.

X, Terima kasih telah menghubungkan dan mengekspresikan minat. Anda memiliki Keterampilan Analisis yang baik. Namun, semua ilmuwan data kami harus memiliki keterampilan pemrograman yang baik dalam Java / Python karena kami adalah organisasi internet / seluler dan semua yang kami lakukan adalah online.

Sementara saya menghormati keputusan ilmuwan data kepala, saya tidak bisa mendapatkan gambaran yang jelas tentang apa tugas-tugas yang dapat dilakukan Python yang tidak bisa dilakukan R. Adakah yang bisa peduli untuk menjelaskan? Saya sebenarnya tertarik untuk belajar Python / Java, asalkan saya mendapatkan sedikit lebih detail.

Sunting: Saya menemukan diskusi yang menarik tentang Quora. Mengapa Python merupakan bahasa pilihan bagi para ilmuwan data?

Edit2: Blog dari Udacity pada Bahasa dan Perpustakaan untuk Pembelajaran Mesin

Penggemar
sumber
8
Python adalah kompromi yang baik: ia menyediakan banyak perpustakaan (non-standar) untuk datacience (panda, scikit, ...) dan banyak proses industri sudah dikodekan dalam python.
Manu H
4
"Para ilmuwan data kami harus memiliki keterampilan pemrograman yang baik dalam Java / Python karena kami adalah organisasi internet / seluler dan semua yang kami lakukan adalah online" adalah non-sequitur besar-besaran - kesimpulannya tidak mengikuti dari premis. Saya curiga CDS hanya berusaha menyingkirkan Anda.
Spacedman
5
@ManuH Jika dengan "non-standar," maksud Anda, "tidak ada di perpustakaan standar," Anda benar. Tetapi alat-alat itu mendapatkan penggunaan yang sangat luas, dan itu pasti pokok dari bahasa. numpy saat ini memiliki lebih dari 100 ribu pertanyaan di SO, panda memiliki 74 ribu. Saya pikir Anda pasti bisa membuktikan bahwa itu adalah standar industri . (Setidaknya di sisi pengembangan perangkat lunak. Saya hampir tidak menyebut diri saya seorang "ilmuwan data.")
jpmc26
2
"Data Scientist" bukan istilah yang didefinisikan dengan baik. Data Scientist pada dasarnya adalah seseorang yang dapat melakukan hal-hal berguna dengan data. Mereka tidak harus menggunakan pembelajaran mesin atau paket statistik. Seseorang mungkin menggunakan Java / Scala / Spark / apa pun untuk mengelola sejumlah besar data dan mendapatkan wawasan yang bermanfaat tanpa pembelajaran mesin.
Akavall
2
@ jpmc26 Ya itu yang saya maksud. Sekarang saya menyadari bahwa bahkan perpustakaan yang belum mencapai standar industri dapat disebutkan (satu argumen lagi untuk python)
Manu H

Jawaban:

67

Jadi Anda dapat berintegrasi dengan basis kode lainnya. Tampaknya perusahaan Anda menggunakan campuran Java dan python. Apa yang akan Anda lakukan jika sudut kecil situs membutuhkan pembelajaran mesin; meneruskan data dengan database, atau cache, drop ke R, dan sebagainya? Mengapa tidak melakukan semuanya dalam bahasa yang sama? Lebih cepat, lebih bersih, dan lebih mudah dirawat.

Tahu ada perusahaan online yang hanya menjalankan R? Saya juga tidak...

Semua yang mengatakan bahwa Java adalah bahasa terakhir yang saya gunakan dalam ilmu data.

Emre
sumber
1
Saya akan mengatakan arsitektur berorientasi layanan juga membantu menjembatani teknologi. PMML sedikit tegas; Saya belum pernah menggunakannya, tetapi toko Anda adalah toko Java, bahasa perusahaan induk, jadi Anda tidak pernah tahu ...
Emre
3
@Enthusiast jangan lupa bahwa Anda dapat menjalankan R under python menggunakan RPy2 (misalnya) sehingga Anda dapat berakhir (seperti yang saya lakukan dalam pekerjaan sebelumnya) menjalankan model yang ditulis dalam R melalui python sehingga mereka dapat disajikan melalui antarmuka web via Django.
MD-Tech
2
Kami membangun model dalam file .r teks biasa yang dimuat ke interpreter R untuk menguji (dan untuk memfasilitasi pembangunan). Sementara ini sedang dibangun dan diuji, kami membangun proyek python django dengan bagian yang mereferensikan RPy2 dan membuat objek RPy2. Objek-objek ini kemudian digunakan untuk memuat file R dengan cara yang sama seperti Anda akan memuatnya dalam interpreter sehingga kita dapat mengakses fungsi-fungsi yang membungkus model. Kami kemudian dapat meneruskan data dari database ke R melalui python. Lapisan python memberi kami frontend web dengan Django dan kontrol atas database dll.
MD-Tech
1
@Enthusiast Hasil model dikembalikan oleh R dalam RPy2 dan disajikan di ujung depan dalam berbagai samaran, sebagian besar grafik.
MD-Tech
2
@Enthusiast Itu adalah jaringan Bayesian untuk keuangan tetapi saya tidak bisa mengatakan lebih dari itu. Model ini ditulis dalam huruf R. Hanya teks biasa; Saya mengeditnya di Vim setiap kali saya perlu, dan itu "dikerahkan" dengan memuat kode R, sebagai teks, ke dalam RPy2 menggunakan sumber ("our_code.r") pada objek RPy2. Itu dilakukan dengan cara ini sehingga kita bisa tinggal mengedit model. Ini bukan jawaban untuk pertanyaan ini; ini merupakan jawaban untuk pertanyaan yang belum ditanyakan;)
MD-Tech
24

Mungkin ada banyak alasan seperti:

  1. Fleksibilitas tenaga kerja: Satu programmer Java / Python dapat dipindahkan ke tugas atau proyek lain dengan mudah.

  2. Kandidat ketersediaan: ada banyak programmer Java / Python. Anda tidak ingin memperkenalkan bahasa pemrograman baru untuk kemudian mengetahui bahwa tidak ada pekerja yang memenuhi syarat atau mereka terlalu mahal.

  3. Integrasi dan ETL: Terkadang mendapatkan data dengan kualitas yang tepat adalah bagian tersulit dari proyek. Jadi wajar untuk menggunakan bahasa yang sama dengan sistem lainnya.

  4. Definisi model bisnis: Sebagian besar aturan bisnis dan model bisnis sudah ditulis dalam bahasa ini.

  5. Hanya menjaga hal-hal sederhana. Sudah cukup sulit untuk memperbarui teknologi. Basis bahasa yang beragam bisa kacau. R untuk ini, Ruby untuk itu, Scala, Clojure, F #, Swift, Dart ... Mereka mungkin membutuhkan server yang berbeda, jalur yang berbeda, neraka untuk dikelola. Semua memiliki IDE sendiri dengan alat dan plugin (tidak selalu gratis). Lihat beberapa poin Paman Bob tentang pilihan bahasa dan teknologi baru

Jadi, bahkan jika Anda memiliki keunggulan produktivitas 5% - 15% menggunakan R untuk tugas tertentu, mereka mungkin lebih suka alat yang hanya melakukan pekerjaan bahkan jika tidak dengan cara yang paling efisien.

borjab
sumber
Meskipun benar, tidak ada di atas yang benar-benar menjawab pertanyaan. Mendapatkan data mengurangi 99% dari waktu untuk query database atau membaca .csvfile - yang tujuannya R sebenarnya adalah alat yang paling cocok di pasar. Kandidat ketersediaan: bahwa ada lebih banyak programmer Java daripada programmer R tidak menyiratkan bahwa Anda harus membuang kandidat R jika Anda memilikinya. Tidak masalah bagaimana ilmuwan melakukan latihan mereka selama mereka menggunakan kode yang dapat dibaca yang dapat dijalankan oleh beberapa server (atau hal lain yang dijalankan perusahaan).
gented
Tentu saja Anda tidak harus membuang kandidat. Orang itu jauh lebih penting daripada alat. Tim mereka dapat mempelajari R dan kandidat dapat mempelajari Java / Python. Tetapi akan membutuhkan waktu yang berarti uang.
borjab
Maksud saya tentu tidak setuju adalah bahwa tidak masalah bahasa. Ketika satu-satunya anggota tim yang tahu R tidak ada hari libur dan mereka perlu melakukan perubahan bos tidak akan bahagia. Atau tanyakan saja kepada tim, "Bagus, kita perlu belajar bahasa baru hanya karena bahasa baru melakukan hal-hal seperti ini". Mungkin administrasi server adalah departemen lain dan jenis server baru perlu beberapa analisis, prosedur, dll. Mungkin Anda memerlukan lampu hijau dari keamanan TI untuk menggunakan bahasa baru.
borjab
@GennaroTedesco kode yang ditulis oleh kandidat harus dipelihara oleh programmer lain , sambil bekerja bersama dan juga di masa depan ketika penulis asli akan melanjutkan. Tidaklah cukup untuk memiliki kandidat yang tahu teknologi dengan baik, masih penting untuk mempertimbangkan betapa mudahnya untuk merekrut kandidat lain yang mengenal teknologi dengan baik ketika Anda membutuhkannya. tentu saja, teknologi ceruk baru dapat diperkenalkan jika ada alasan yang bagus, tetapi harus ada alasan yang bagus untuk lebih besar daripada risiko bisnis semacam itu.
Peteris
Anda mungkin memiliki peningkatan produktivitas $ x dengan menggunakan R, tetapi tidak ada gunanya jika mereka harus mengeluarkan upaya $ 2x dalam perubahan alur kerja mereka. Mengapa mereka melakukan itu, terutama jika mereka bisa mempekerjakan orang lain yang mungkin tidak dikenakan biaya $ 2x?
user1908704
14

Secara umum memang benar bahwa untuk murni ilmu data dan latihan statistik, R menawarkan data.tablealat dan metode terbaik dan tercepat (terutama jika menggunakan paket), yang sebaliknya akan lebih berat untuk diimplementasikan dalam Python (saya berasumsi oleh Python kita semua berarti Panda, meskipun ). Kebanyakan ilmuwan data memang menggunakan R untuk melakukan model dan perhitungan mereka, atau hanya untuk melihat bagaimana data berperilaku.

Setelah latihan selesai, inilah saatnya untuk membuatnya tersedia untuk semua orang yang harus menggunakannya (yaitu untuk menyebarkan); untuk tujuan ini, seringkali lebih disukai untuk mengirimkan kode dengan Python karena dua alasan utama:

  1. Sebagian besar arsitektur ditulis dalam Python atau Python-friendly, oleh karena itu akan lebih mudah untuk mengimplementasikan model-model yang aslinya ditulis dalam bahasa itu.
  2. Sintaks dan tata bahasa R sangat rumit. Saya sendiri sangat menyukai R selain yang lain tetapi harus mengakui bahwa sintaksinya tidak benar-benar mudah dan memiliki kurva belajar yang sangat baik.

Kata di atas, masih benar bahwa seseorang dapat dengan mudah menerjemahkan kode R ke dalam bahasa lain, asalkan metode, pustaka dan paket tersedia (dengan Python kebanyakan dari mereka, sehingga tidak ada masalah sama sekali). Banyak infrastruktur dan database mendukung kode R yang mendasarinya, maka portabilitas sebenarnya bukan masalah, terutama jika seseorang hanya perlu menyerahkan hasil perhitungan (untuk perluasan itu, toh tidak ada yang benar-benar melihat kode yang mendasarinya).

Java hampir tidak ada gunanya untuk ilmu data murni itu sendiri (meskipun Universitas Stanford memiliki koleksi mesin belajar perpustakaan NLP yang ditulis di Jawa, sejauh yang saya ingat - tapi tolong periksa). Satu-satunya alasan mengapa hal itu diperlukan adalah hanya bahwa sisa perusahaan menggunakannya sampai pada taraf yang besar dan mereka tidak ingin menggantinya dengan sesuatu yang baru.

Gented
sumber
Terima kasih telah berbagi perspektif dan pengalaman Anda !! Ini sangat membantu. Dari paragraf terakhir Anda yang kedua, saya anggap Anda berbicara tentang scikit-learn? atau maksudmu RPy? Mau menguraikan?
Penggemar
1
Maksud saya, apa pun yang Anda lakukan di R, ada kemungkinan besar paket Python serupa yang melakukan pekerjaan yang sama. Panda mencakup sebagian besar hal yang data.tableditawarkan; scikit-belajar, seperti yang Anda sebutkan, adalah contoh lain, tetapi ada banyak lagi sesuai dengan kasus yang dihadapi.
gented
1
Persis apa yang saya lakukan. Penelitian di R, setelah selesai, terjemahkan ke python untuk diintegrasikan ke dalam basis kode. Tetapi, apakah Anda dapat melakukan hal yang sama di perusahaan itu tergantung pada budayanya. Kebanyakan orang menggunakan bahasa pemrograman yang digunakan bos mereka. Dan Python tidak sulit dipelajari.
jf328
1
@GennaroTedesco: "Maksud saya apa pun yang Anda lakukan di R, ada kemungkinan besar paket Python serupa yang melakukan pekerjaan yang sama". Saya sebenarnya sangat tidak setuju dengan pernyataan ini. Keuntungan terbesar dengan R adalah bahwa 90% ahli statistik mempublikasikan terbaru dan "terbesar" mereka dalam R, daripada Python. Jika metode ini berhasil, mereka pada akhirnya bisa sampai ke Python. Tapi itu juga nilai tambah bagi Python; ada banyak paket statistik R yang hanya sampah, sementara saya pikir paket statistik Python lebih cenderung menjadi metode yang dicoba dan benar.
Cliff AB
"Sintaks dan tata bahasa R sangat rumit. Saya sendiri sangat menyukai R selain yang lain tetapi harus mengakui bahwa sintaksisnya tidak benar-benar mudah dan memiliki kurva belajar yang sangat baik." Kedua hal ini tampaknya merupakan opini, tetapi yang satu berpakaian sebagai pernyataan objektif dan yang lain menentangnya. Saya bingung. Saya juga merasa bahwa sintaksis dan idiom Python lebih rumit (misalnya, OOP), jadi saya sangat bingung dengan jawaban ini.
terang
7

Saya telah melihat beberapa perusahaan menggunakan judul Data Scientist untuk peran tipe "Data Engineer". Terutama di ruang data besar.

Jika perusahaan menggunakan Hadoop atau kerangka kerja terdistribusi seperti Spark untuk melakukan analitiknya di kemudian Java atau Python (atau mungkin Scala) akan menjadi bahasa yang paling masuk akal.

greenpenguin
sumber
Dalam hal ini saya tahu pasti bahwa peran adalah untuk pemodelan karena meminta keterampilan pembelajaran mesin dan daftar teknik yang ditentukan.
Penggemar
Mereka masih bisa melakukan itu di dalam teknologi tersebut menggunakan perpustakaan Java / Python, sesuatu seperti musim semi H20 atau MLlib ke pikiran.
greenpenguin
4

Jawa

Saya harus tidak setuju dengan poster lain tentang pertanyaan java. Ada beberapa database noSQL (seperti hadoop) yang perlu dituliskan pekerjaan mapreduce di java . Sekarang Anda dapat menggunakan HIVE untuk mencapai hasil yang sama.

Python

Debat python / R berlanjut. Keduanya merupakan bahasa yang dapat dikembangkan, sehingga keduanya berpotensi memiliki kemampuan yang sama untuk memproses. Saya hanya tahu R dan pengetahuan python saya cukup dangkal. Berbicara sebagai pemilik usaha kecil, Anda ingin tidak memiliki terlalu banyak alat dalam bisnis Anda, jika tidak akan ada kedalaman yang kurang dalam di dalamnya, dan kesulitan mendukungnya. Saya pikir itu akan turun ke kedalaman pengetahuan alat dalam tim. Jika tim fokus pada python, maka mempekerjakan ilmuwan data python lain akan masuk akal karena mereka dapat terlibat dengan basis kode yang ada dan kode eksperimen historis.

Marcus D
sumber
2

Setidaknya untuk tim saya saat ini (~ 80 ilmuwan dan insinyur data), kami tidak memiliki preferensi seperti itu. Setengah dari data para ilmuwan di sini menggunakan R dan setengah lainnya menggunakan Python. Banyak yang bisa mengkodekan keduanya. Kami menggunakan kode Python dan R dalam produksi.

Saya tidak berpikir data ilmuwan kita menggunakan Java sama sekali. Jika mereka perlu berurusan dengan data besar, mereka dapat menggunakan SparkSQL atau PySpark. Tim rekayasa data menggunakan campuran Java / Scala / Python / Go.

Jika Anda adalah salah satu dari sedikit orang data di sebuah perusahaan kecil, saya dapat memahami mengapa mereka memerlukan keterampilan bahasa tertentu sehingga Anda dapat melakukan kedua ilmu data dan teknik. Tapi tbh, saya pikir sebagian besar perusahaan kecil tidak akan memiliki data yang cukup besar sehingga Python atau R tidak dapat menangani dalam produksi.

piggybox
sumber
Bisakah Anda menguraikan jenis bisnis yang dilakukan organisasi Anda? Dan apakah itu di rumah kerja ML atau untuk klien eksternal?
Penggemar
1
@Enthusiast Bisnis ritel. 100% untuk ML in-house.
piggybox
0

Pandangan saya sebagai programmer tujuan umum dengan sedikit pengalaman R: R sangat baik untuk ilmu data, tetapi itu diarahkan untuk orang-orang yang secara manual menafsirkan data. Jika Anda ingin menggunakan hasil untuk sesuatu yang otomatis, Anda harus berinteraksi dengan sesuatu yang lain, dan sesuatu yang lain akan sulit dilakukan dalam bahasa yang spesifik masalah seperti R. Bisakah Anda membuat situs web di R? :) Di sisi lain, python memang sudah siap membuat pustaka untuk hal-hal peningkatan data dan merupakan bahasa pemrograman tujuan umum yang tidak menghalangi Anda melakukan hal lain dengannya. Sedangkan untuk Java, bagus untuk proyek pemrograman besar dengan ratusan ribu hingga jutaan baris kode. Jika bagian ilmu data perlu berinteraksi dengan itu, mungkin masuk akal untuk melakukan semuanya di Jawa.

Rengekan acak: Mengapa saya harus masuk ke setiap situs StackExchange secara terpisah?

Torp
sumber
4
Kode R dapat dengan mudah dijalankan oleh hampir semua alat yang tersedia di pasaran. Java hampir tidak ada gunanya untuk ilmu data.
gented
1
@GennaroTedesco JAVA berguna untuk pengkodean dalam alat bigdata. Jadi sebagian bermanfaat untuk query data.
Penggemar
-1

Alat-alat dalam Python hanya lebih baik daripada komunitas R. Ther R cukup stagnan sementara komunitas Python berkembang sangat cepat. Terutama dalam alat untuk Ilmu Data.
Python juga bekerja lebih mudah dengan segala sesuatu di sekitarnya. Anda dapat dengan mudah mengikis web, terhubung ke database, dan sebagainya. Itu membuat prototyping sangat cepat.
Dan jika Anda memiliki prototipe yang berfungsi dan peduli untuk membuatnya lebih cepat atau mengintegrasikannya ke dalam alur kerja perusahaan, biasanya akan diterapkan kembali di Jawa.

R memiliki beberapa alat dan visualisasi yang rapi tetapi tidak terlalu bagus untuk membangun barang baru di dalamnya.

sebastian
sumber
4
Itu sepenuhnya salah dalam segala hal.
gented