Чому інтернет-компанії віддають перевагу Java / Python для роботи вченого?


53

Я багато разів бачу в описі вакансії науковця даних, який запитує досвід Python / Java та ігнорує R. Нижче наведено особистий електронний лист, який я отримав від головного науковця даних компанії, до якого я подав заявку через linkedin.

X, Дякую за зв'язок та виявлення інтересу. У вас є хороші навички Analytics. Однак усі наші науковці повинні мати хороші навички програмування в Java / Python, оскільки ми є Інтернет / мобільною організацією, і все, що ми робимо, це онлайн.

Хоча я поважаю рішення головного науковця з даних, я не в змозі скласти чітке уявлення про те, які завдання, які Python може виконувати, не може виконувати R. Хтось може піклуватися про деталізацію? Я насправді прагну вивчити Python / Java, за умови, що я отримаю трохи більше деталей.

Редагувати: Я знайшов цікаву дискусію про Quora. Чому Python є мовою вибору для науковців даних?

Edit2: Блог з Udacity про мови та бібліотеки для машинного навчання


8
Python є хорошим компромісом: він пропонує багато (нестандартну) бібліотеку для наукових даних (панди, scikit, ...), і багато промислових процесів уже закодовані в python.
Ману H

4
"наші науковці з даних повинні мати хороші навички програмування в Java / Python, оскільки ми є організацією в Інтернеті / мобільних мережах, і все, що ми робимо в Інтернеті", є масовим непослідовником - висновок не випливає з передумови. Я підозрюю, що CDS просто намагається позбутися вас.
Розміщений

5
@ManuH Якщо під "нестандартним" ви маєте на увазі "не в стандартній бібліотеці", ви маєте рацію. Але ці інструменти отримують досить широке використання, і вони, безумовно, є елементами мови. numpy наразі має понад 100k питань щодо SO, панди 74k. Я думаю, ви, безумовно, можете зробити так, що вони галузеві стандарти . (Принаймні, з боку розробки програмного забезпечення. Навряд чи я б назвав себе "науковцем даних".)
jpmc26

2
"Даний вчений" - це недостатньо визначений термін. Data Scientist - це в основному хтось, хто може робити корисні речі з даними. Вони не повинні використовувати машинне навчання або статистичні пакети. Хтось може використовувати Java / Scala / Spark / що завгодно, щоб керувати великими обсягами даних та отримувати корисні відомості без машинного навчання.
Акавал

2
@ jpmc26 Так, це я мав на увазі. Тепер я розумію, що навіть бібліотеки, які ще не досягли галузевих стандартів, можна згадати (ще один аргумент для python)
Ману Х,

Відповіді:


67

Таким чином, ви можете інтегруватися з іншою базою коду. Здається, ваша компанія використовує поєднання Java та python. Що ви збираєтеся робити, якщо невеликий куточок сайту потребує машинного навчання; передавати дані навколо за допомогою бази даних чи кеш-пам'яті, переходити до R тощо? Чому б просто не зробити все тією ж мовою? Це швидше, чистіше і простіше в обслуговуванні.

Чи знаєте будь-які інтернет-компанії, які працюють виключно на R? Ні я ...

Все, що сказало, Java - це остання мова, на якій я би займався наукою про дані.


1
Я збирався сказати, що архітектура, орієнтована на сервіс, також допомагає мостовим технологіям. PMML - трохи підприємливий; Я не використовував його, але ваш - це магазин Java, мови материнських підприємств, тому ви ніколи не знаєте ...
Emre

3
@Enthusiast не забувайте, що ви можете запускати R під python, використовуючи RPy2 (наприклад), так що ви можете в кінцевому підсумку (як я робив у попередній роботі) запущені моделі, написані на R через python, щоб їх можна було представити через веб-інтерфейс через джанго.
MD-Tech

2
Ми побудували модель у простому текстовому форматі .r, завантаженому в інтерпретатор R для тестування (та полегшення побудови). Поки це було розроблено та протестовано, ми побудували проект django python із секцією, яка посилалась на RPy2 та створювала RPy2 об’єкти. Потім ці об'єкти використовувались для завантаження файлів R таким же чином, як і ви завантажували їх у інтерпретатор, щоб ми могли отримати доступ до функцій, які обгорнули модель. Потім ми могли передати дані з бази даних до R через python. Шар python дав нам веб-інтерфейс з django та контроль над базою даних тощо.
MD-Tech

1
@Enthusiast Результати моделі R повернули в RPy2 і представлені в передній частині в різних образах, переважно графіках.
MD-Tech

2
@Enthusiast Це була байєсівська мережа фінансів, але я не можу сказати більше того. Модель була написана прямим Р. Просто простим текстом; Я редагував його у Vim, коли мені потрібно, і він "розгортався", завантажуючи R код, як текст, у RPy2, використовуючи джерело ("our_code.r") на об'єкти RPy2. Це було зроблено таким чином, щоб ми могли жити редагувати модель. Це не відповідь на це питання; його відповідь на ту, яку не запитували;)
MD-Tech

24

Причин може бути дуже багато, наприклад:

  1. Гнучкість робочої сили: Один програміст Java / Python можна легко перемістити до інших завдань чи проектів.

  2. Доступність кандидатів: є багато програмістів Java / Python. Ви не хочете вводити нову мову програмування, щоб пізніше з’ясувати, що кваліфікованих працівників немає або вони просто занадто дорогі.

  3. Інтеграція та ETL: Іноді отримання даних з належною якістю є найважчою частиною проекту. Тому природно використовувати ту саму мову, що й решта систем.

  4. Визначення бізнес-моделі: Більшість правил бізнесу та бізнес-моделей вже написані цими мовами.

  5. Просто простота. Це вже досить важко бути в курсі технологій. Різноманітна основа мови може бути хаотичною. R для цього, Ruby для цього, Scala, Clojure, F #, Swift, Dart ... Можливо, їм потрібні різні сервери, різні патчі, пекло для управління. Всі мають власні IDE з інструментами та плагінами (не завжди безкоштовними). Перегляньте кілька пунктів дядька Боба щодо вибору мови та нових технологій

Тож навіть якщо у вас є 5% - 15% переваги продуктивності, використовуючи R для конкретного завдання, вони можуть віддати перевагу інструменту, який просто виконує цю роботу, навіть якщо не найбільш ефективним способом.


Хоча це правда, жодне з вищесказаного насправді не відповідає на питання. Отримання даних скорочує в 99% запити до бази даних чи читання .csvфайлів - мета якої R є насправді найкращим інструментом на ринку. Доступність кандидатів: що є більше Java-програмістів, ніж програмістів R, це не означає, що вам доведеться відмовитись від кандидата на R, якщо у вас його є. Не дуже важливо, як вчений виконує свої вправи, якщо вони розгортають читабельний код, який можуть виконувати деякі сервери (або будь-яка інша річ, якою працює компанія).
помер

Звичайно, не слід відмовлятися від кандидата. Особа набагато важливіша за інструмент. Їх команда може вивчити R, а кандидат може вивчити Java / Python. Але це займе час, який означає гроші.
borjab

Я, безумовно, не згоден у тому, що мова не проти мови. Коли єдиний член команди, який знає R, не має свят і їм потрібно вносити зміни, бос не буде задоволений. Або просто запитайте команду "О, прекрасно, нам потрібно вивчити нову мову тільки тому, що нова робить все так". Можливо, адміністрація сервера - це ще один відділ, і нові типи серверів потребують нового аналізу, процедур тощо. Можливо, вам потрібне зелене світло від ІТ-безпеки для використання нової мови.
borjab

@GennaroTedesco код, написаний кандидатом, повинен бути доцільним для інших програмістів, працюючи разом, а також у майбутньому, коли автор буде рухатися далі. Недостатньо мати кандидата, який добре знає техніку, все ж важливо врахувати, наскільки легко буде найняти іншого кандидата, який добре знає техніку, коли вам це знадобиться. звичайно, нова частина нішевих технологій може бути введена , якщо є хороша причина, але має бути хорошою причиною , щоб переважити такі бізнес - ризику.
Петерсіс

Ви можете покращити продуктивність на $ x за допомогою R, але це не допоможе, якщо їм доведеться витратити $ 2x зусиль на зміни свого робочого процесу. Чому вони роблять це, особливо , якщо вони могли б найняти кого - то , хто не може коштувати їм $ 2x?
user1908704

14

Взагалі вірно, що для суто наукових та статистичних вправ R пропонує найкращі та найшвидші (особливо, якщо використовується data.tableпакет) інструменти та методи, що в іншому випадку було б важче впровадити в Python (я вважаю, що під Python усі ми маємо на увазі панди, хоча ). Більшість даних вчені фактично використовують R для виконання своїх моделей та обчислень або просто для того, щоб побачити, як поводяться дані.

Після того, як вправа завершена, прийшов час зробити її доступною для решти людей, яким доведеться її використовувати (тобто розгорнути); Для цього часто бажано подавати код на Python з двох основних причин:

  1. Більшість архітектур написані на Python або зручні для Python, тому було б легше реалізувати моделі, написані на цій мові.
  2. R синтаксис і граматика надзвичайно складні. Я сам сильно віддаю перевагу R, крім усього іншого, але мушу визнати, що синтаксис насправді не є простим і має дуже обрану криву навчання.

Вище сказане, все ще вірно, що можна легко перекласти R-код на будь-яку іншу мову, за умови наявності методів, бібліотек та пакетів (у Python більшість з них є, так що це зовсім не проблема). Багато інфраструктур і баз даних підтримують базовий код R, отже, портативність насправді не є проблемою, особливо, якщо потрібно просто подати результати розрахунків (до цього розширення, все одно ніхто не бачить базовий код).

Java майже не корисна для самої науки про дані (хоча Стенфордський університет має колекцію машинного навчання бібліотек NLP, написаних на Java, наскільки я пам’ятаю - але будь ласка, перевірте). Єдина причина, чому це може знадобитися, полягає лише в тому, що решта компанії використовує його в великих масштабах, і вони не хочуть замінювати його чимось новим.


Дякуємо, що поділилися своєю точкою зору та досвідом !! Це корисно. З вашого останнього останнього абзацу, я припускаю, що ви говорите про scikit-learn? чи ти мав на увазі RPy? Хочете допрацювати?
Ентузіаст

1
Я просто маю на увазі, що все, що ви робите в R, найімовірніше, існує аналогічний пакет Python, який виконує ту саму роботу. Панди охоплюють більшість речей, які data.tableпропонують; Як ви вже згадували, scikit-learn - це ще один приклад, але існує багато іншого відповідно до конкретного випадку.
помер

1
Саме цим я і займаюся. Дослідження в R, після закінчення перекладіть на python для інтеграції в кодову базу. Але від того, чи ви можете зробити те саме в цій компанії, залежить від її культури. Більшість людей використовують мову програмування, яку використовує їхній начальник. І Python не важко навчитися.
jf328

1
@GennaroTedesco: "Я просто маю на увазі, що все, що ви робите в R, найімовірніше, є аналогічний пакет Python, який виконує ту саму роботу". Я насправді категорично не згоден з цим твердженням. Найбільшою перевагою R є те, що 90% статистиків публікують свої останні та "найбільші" в R, а не Python. Якщо ці методи захоплюються, вони можуть врешті пробитися до Python. Але це теж плюс для Python; Є багато пакетів статистики R, які є лише сміттям, хоча я думаю, що пакети статистики Python, швидше за все, будуть перевіреними і справжніми методами.
Cliff AB

"Синтаксис і граматика R надзвичайно складний. Я сам сильно віддаю перевагу R, крім усього іншого, але мушу, однак, визнати, що синтаксис насправді не є простим і має дуже обрану криву навчання". І те і інше, начебто, є думками, але один одягнений як об'єктивне твердження, а другий - проти. Я збентежений. Я також відчуваю, що синтаксис і ідіоми Python є складнішими (наголос OOP, для одного), тому мене вдвічі бентежить ця відповідь.
яскрава зірка

7

Я бачив досить багато компаній, які використовують назви Data Scientist для ролей типу "Інженер даних". Особливо у просторі даних.

Якщо компанія використовує Hadoop або розподілений фреймворк на зразок Spark, це робить аналітику в тодішніх Java або Python (або, можливо, Scala), це мови, які мали б найбільше сенсу.


У цьому випадку я точно знаю, що ця роль була для моделювання, оскільки вона вимагала навичок машинного навчання та конкретного переліку методик.
Ентузіаст

Вони все ще можуть робити це всередині цих технологій, хоча використовують бібліотеки Java / Python, щось на зразок H20 або MLlib.
greenpenguin

4

Java

Мені б не погодитися з іншими плакатами на питання Java. Існують певні бази даних noSQL (наприклад, hadoop), для яких потрібно писати завдання для зменшення карт у Java . Тепер ви можете використовувати HIVE для досягнення майже однакового результату.

Пітон

Дебати пітона / R тривають. Обидва є розширюваними мовами, тому потенційно обидві можуть мати однакову здатність обробляти. Я знаю лише R, і мої пітонські знання досить поверхневі. Виступаючи як власник малого бізнесу, ви хочете, щоб у вашому бізнесі не було занадто багато інструментів, інакше буде загальна недостатність у них та труднощі з їх підтримкою. Думаю, це знизиться до глибини знань інструментів у колективі. Якщо команда зосереджена на python, то наймання іншого науковця даних python має сенс, оскільки вони можуть взаємодіяти з існуючою базою коду та історичним кодом експерименту.


2

Принаймні для моєї нинішньої команди (~ 80 науковців та інженерів даних) у нас немає такої переваги. Половина даних тут вчені використовують R, а інша половина - Python. Багато хто може кодувати в обох. У виробництві ми розгортаємо код Python та R.

Я не думаю, що жоден із наших науковців даних взагалі не використовує Java. Якщо їм потрібно мати справу з великими даними, вони можуть використовувати SparkSQL або PySpark. Команда інженерії даних використовує поєднання Java / Scala / Python / Go.

Якщо ви один з небагатьох людей з даних в невеликій компанії, я можу зрозуміти, чому вони вимагають певних мовних навичок, щоб ви могли займатися і наукою, і інформацією. Але tbh, я думаю, що більшість малих компаній не матимуть достатньо великих даних, що Python або R не можуть обробити у виробництві.


Чи можете ви детальніше розглянути тип діяльності вашої організації? І чи це в роботі домашнього МЛ чи для зовнішніх клієнтів?
Ентузіаст

1
@ Ентузіаст Роздрібний бізнес. 100% для внутрішніх ML.
скарбничка

0

Моя точка зору як програміста загального призначення з невеликим досвідом R: R відмінно підходить для наукових даних, але орієнтована на людей, які вручну інтерпретують дані. Якщо ви хочете використовувати результати для чогось автоматизованого, вам доведеться взаємодіяти з чимось іншим, а щось інше буде важко зробити на мові, що відповідає проблемі, як Р. Чи можете ви зробити веб-сайт в R? :) З іншого боку, python має готові бібліотеки для наукових даних про дані та є загальною мовою програмування, яка не перешкоджає вашому виконанню нічого іншого. Що стосується Java, то це добре для великих програм програмування з сотнями тисяч до мільйонів рядків коду. Якщо частина наукових даних потребує взаємодії з цим, можливо, тоді в Java буде все робити.

Випадкове скигнення: Чому я повинен входити на кожен сайт StackExchange окремо?


4
R-код можна легко керувати майже всіма інструментами, наявними на ринку. Java майже не корисна для наукових даних.
помер

1
@GennaroTedesco JAVA корисний для кодування в інструментах великих даних. Так частково корисно для запиту даних.
Ентузіаст

-1

Інструменти в Python просто кращі, ніж спільнота R. Ther R досить застійна, тоді як спільнота Python розвивається дуже швидко. Особливо в інструментах Data Science.
Також Python працює легше з усім навколо. Ви можете легко скребти Інтернет, підключитися до баз даних тощо. Це робить прототипування дуже швидким.
І якщо у вас є діючий прототип і ви хочете зробити його швидшим або інтегрувати його в робочий процес компанії, він зазвичай повторно застосовується на Java.

R має кілька акуратних інструментів та візуалізації, але це не так здорово, щоб будувати в ньому нові речі.


4
Це абсолютно неправильно в усіх засобах.
помер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.