인터넷 회사는 왜 데이터 과학자 직업에 Java / Python을 선호합니까?


53

데이터 과학자가 Python / Java 경험을 요구하고 R을 무시하는 작업 설명에서 여러 번 보았습니다. 아래는 링크 인을 통해 신청 한 회사의 수석 데이터 과학자로부터받은 개인 이메일입니다.

X, 연결하고 관심을 가져 주셔서 감사합니다. 당신은 좋은 분석 기술이 있습니다. 그러나 인터넷 / 모바일 조직이므로 모든 데이터 과학자는 Java / Python에서 우수한 프로그래밍 기술을 보유하고 있어야합니다.

나는 수석 데이터 과학자의 결정을 존중하지만, R이 할 수없는 파이썬이 할 수있는 작업에 대한 명확한 그림을 얻을 수 없습니다. 누구나 정교하게 관리 할 수 ​​있습니까? 좀 더 자세한 정보를 얻으면 실제로 Python / Java를 배우고 싶어합니다.

편집 : Quora에 대한 흥미로운 토론을 찾았습니다. 왜 파이썬이 데이터 과학자들에게 선택된 언어입니까?

Edit2 : Udacity의 기계 학습을위한 언어 및 라이브러리 블로그


8
파이썬은 좋은 절충안입니다. 데이터 과학 (팬더, scikit 등)을위한 많은 비표준 라이브러리를 제공하며 많은 산업 프로세스가 이미 파이썬으로 코딩되어 있습니다.
Manu H

4
"우리는 우리가 온라인 않는 인터넷 / 모바일 조직과 모든 것을 그대로 우리의 데이터 과학자들은 자바 / 파이썬에서 좋은 프로그래밍 기술이 있어야합니다"대규모 비 불합리한 추론이다 - 결론은 하지 않는 전제에서 수행합니다. CDS가 당신을 없애려고한다고 생각합니다.
Spacedman

5
@ManuH "비표준"이라는 말은 "표준 라이브러리에 없다"는 말이 맞다는 뜻입니다. 그러나 이러한 도구는 널리 사용되며 언어의 필수 요소입니다. numpy는 현재 100k 개 이상의 질문을 가지고 있으며 팬더는 74k입니다. 나는 그들이 당신이 그들이 산업 표준 이라는 것을 분명히 할 수 있다고 생각합니다 . (적어도 소프트웨어 개발 측면에서는 나 자신을 "데이터 과학자"라고 부르지 않습니다.)
jpmc26

2
"데이터 과학자"는 잘 정의 된 용어가 아닙니다. 데이터 과학자는 기본적으로 데이터로 유용한 일을 할 수있는 사람입니다. 기계 학습이나 통계 패키지를 사용할 필요는 없습니다. 누군가가 Java / Scala / Spark / what을 사용하여 대량의 데이터를 관리하고 머신 러닝없이 유용한 통찰력을 얻을 수 있습니다.
Akavall

2
@ jpmc26 그렇습니다. 이제는 아직 업계 표준에 도달하지 못한 라이브러리도 언급 할 수 있음을 알고 있습니다 (파이썬에 대한 또 다른 주장)
Manu H

답변:


67

따라서 나머지 코드베이스와 통합 할 수 있습니다. 회사에서 Java와 Python을 혼합하여 사용하는 것 같습니다. 사이트의 작은 구석에 기계 학습이 필요한 경우 어떻게해야합니까? 데이터베이스 또는 캐시를 사용하여 데이터를 전달하고 R 등으로 드롭합니까? 왜 같은 언어로만하지 않습니까? 더 빠르고 깨끗하며 유지 관리가 쉽습니다.

R에서만 실행되는 온라인 회사를 알고 있습니까? 나도 ...

Java는 내가 데이터 과학을하는 마지막 언어입니다.


1
서비스 지향 아키텍처가 기술을 연결하는 데 도움이된다고 말하려고했습니다. PMML은 약간 엔터프라이즈입니다. 나는 그것을 사용하지 않았지만, 당신은 Java 상점, 모기업 언어이므로 당신은 결코 알지 못합니다.
Emre

3
@Enthusiast는 RPy2를 사용하여 파이썬에서 R을 실행할 수 있다는 것을 잊지 마십시오 (예 : 이전 작업에서했던 것처럼)는 파이썬을 통해 R로 작성된 모델을 실행하여 웹 인터페이스를 통해 표시 할 수 있습니다 장고를 통해.
MD-Tech

2
R 인터프리터에로드 된 일반 텍스트 .r 파일로 모델을 빌드하여 테스트하고 빌드를 용이하게했습니다. 이것이 빌드되고 테스트되는 동안 RPy2를 참조하고 RPy2 객체를 생성하는 섹션으로 python django 프로젝트를 빌드했습니다. 그런 다음 이러한 객체를 사용하여 인터프리터에로드하는 것과 같은 방식으로 R 파일을로드하여 모델을 래핑 한 함수에 액세스 할 수있었습니다. 그런 다음 파이썬을 통해 데이터베이스에서 R로 데이터를 전달할 수 있습니다. 파이썬 레이어는 django를 사용하여 웹 프론트 엔드를 제공하고 데이터베이스 등을 제어합니다.
MD-Tech

1
@Enthusiast 모델의 결과는 RPy2 내의 R에 의해 반환되었으며 다양한 그래프, 주로 그래프로 프론트 엔드에 표시되었습니다.
MD-Tech

2
@Enthusiast 금융을위한 베이지안 네트워크 였지만 그 이상은 말할 수 없습니다. 모델은 직선 R로 작성되었습니다. 필요할 때마다 Vim에서 편집하고 있었고, R 코드를 텍스트로 RPy2 객체의 source ( "our_code.r")를 사용하여 RPy2에로드하여 "배포"되었습니다. 이 방법으로 모델을 실시간 편집 할 수있었습니다. 이것은이 질문에 대한 답이 아닙니다. 아직 요청되지 않은 질문에 대한 답변;)
MD-Tech

24

다음과 같은 많은 이유가있을 수 있습니다.

  1. 인력 유연성 : 한 Java / Python 프로그래머는 다른 작업이나 프로젝트로 쉽게 이동할 수 있습니다.

  2. 지원 가능성 : 많은 Java / Python 프로그래머가 있습니다. 자격을 갖춘 근로자가 없거나 너무 비싸다는 것을 알기 위해 새로운 프로그래밍 언어를 도입하고 싶지 않습니다.

  3. 통합 및 ETL : 때때로 올바른 품질의 데이터를 얻는 것이 프로젝트의 가장 어려운 부분입니다. 따라서 나머지 시스템과 동일한 언어를 사용하는 것이 당연합니다.

  4. 비즈니스 모델 정의 : 대부분의 비즈니스 규칙 및 비즈니스 모델은 이미이 언어로 작성되었습니다.

  5. 일을 단순하게 유지하십시오. 기술을 최신 상태로 유지하는 것은 이미 어려운 일입니다. 다양한 언어 기반이 혼란 스러울 수 있습니다. 이것에 대한 R, 루비, Scala, Clojure, F #, Swift, Dart ... 그들은 다른 서버, 다른 경로, 관리하기 어려운 지옥이 필요할 수 있습니다. 모두 도구와 플러그인이있는 자체 IDE가 있습니다 (항상 무료는 아님). 언어 선택새로운 기술에 관한 Bob 아저씨의 요점을보십시오

따라서 특정 작업에 R을 사용하여 5 %-15 %의 생산성 이점이 있더라도 가장 효율적인 방법은 아니더라도 작업을 수행하는 도구를 선호 할 수 있습니다.


사실이지만 위의 어느 것도 실제로 질문에 대답하지 않습니다. 데이터를 가져 오면 데이터베이스 쿼리 또는 .csv파일 읽기 시간의 99 %가 줄어 듭니다. 목표 R은 실제로 시장에서 가장 적합한 도구입니다. 가용성 후보 : R 프로그래머보다 Java 프로그래머가 더 많다고해서 R 후보자가 있으면 버려야한다는 의미는 아닙니다. 과학자들이 일부 서버 (또는 회사가 운영하는 다른 것)에 의해 실행될 수있는 읽을 수있는 코드를 배포하는 한 과학자들이 어떻게 운동을 수행하는지는 중요하지 않습니다.
14:09에

물론 후보자를 버려서는 안됩니다. 사람은 도구보다 훨씬 중요합니다. 그들의 팀은 R을 배우고 응시자는 Java / Python을 배울 수 있습니다. 그러나 돈을 의미하는 시간이 걸립니다.
borjab

확실히 동의하지 않는 점은 언어에 신경 쓰지 않는다는 것입니다. R을 아는 팀의 유일한 구성원이 휴일이 아니고 변경을해야하는 경우, 보스는 행복하지 않을 것입니다. 또는 팀에 "아, 우리는 새로운 언어가 이런 식으로 일을하기 때문에 새로운 언어를 배워야한다"고 물어보십시오. 서버 관리는 다른 부서 일 수 있으며 새로운 유형의 서버에는 새로운 분석, 절차 등이 필요합니다. 새로운 언어를 사용하려면 IT 보안 부서의 녹색 불빛이 필요할 수 있습니다.
borjab

@GennaroTedesco 응시자가 작성한 코드는 다른 프로그래머 가 유지 관리 할 수 ​​있어야하며 공동 작업을 수행 할 때도 있고 원작자는 계속 진행할 수도 있습니다. 기술을 잘 알고있는 후보자를 확보하는 것만으로는 충분하지 않지만, 필요할 때 기술을 잘 알고있는 다른 후보자 를 고용하는 것이 얼마나 쉬운 지 고려하는 것이 여전히 중요합니다 . 물론, 정당한 이유가 있다면 새로운 틈새 기술을 도입 할 수 있지만 그러한 비즈니스 위험을 능가 할만한 충분한 이유 가 있어야합니다 .
Peteris

당신은 R을 사용하여 $의 X의 생산성 향상이있을 수 있지만, 경우에 더 도움이 없다 그들이 소비해야 $ 워크 플로우에 변화 노력의 2 배. 왜 그들이 2 달러의 비용이 들지 않는 다른 사람을 고용 할 수 있다면, 그렇게 할 것 입니까?
user1908704

14

순수한 데이터 과학 및 통계 연습을 위해 R이 가장 빠르고 가장 빠른 data.table도구 (특히 패키지를 사용하는 경우 ) 도구와 메소드를 제공한다는 점은 사실입니다. ). 대부분의 데이터 과학자는 실제로 R을 사용하여 모델과 계산을 수행하거나 데이터의 작동 방식을 확인합니다.

운동이 완료되면 운동을 사용해야하는 다른 사람들이 운동을 사용할 수있게됩니다 (즉, 배치). 이 목적을 위해 종종 두 가지 주요 이유로 파이썬으로 코드를 제출하는 것이 선호됩니다.

  1. 대부분의 아키텍처는 Python으로 작성되었거나 Python에 친숙하므로 해당 언어로 기본적으로 작성된 모델을 구현하는 것이 더 쉽습니다.
  2. R 구문과 문법은 매우 복잡합니다. 나 자신도 다른 것보다 R을 강력하게 선호하지만 구문이 실제로 간단하지 않으며 매우 선택된 학습 곡선을 가지고 있음을 인정해야합니다.

위에서 말했듯이 메소드, 라이브러리 및 패키지를 사용할 수있는 경우 R 코드를 다른 언어로 쉽게 번역 할 수 있다는 것은 여전히 ​​사실입니다 (파이썬에서는 대부분 문제가되지 않습니다). 많은 인프라와 데이터베이스가 기본 R 코드를 지원하므로 이식성이 실제로 문제가되지는 않습니다. 특히 계산 결과를 제출해야하는 경우 (확장하기 위해 아무도 기본 코드를 실제로 보지 못합니다).

Java는 순수한 데이터 과학 자체에는 거의 쓸모가 없습니다 (Stanford University에는 Java로 작성된 기계 학습 NLP 라이브러리 모음이 있지만 기억 나는 한도 있지만 확인하십시오). 그것이 필요할 수있는 유일한 이유는 회사의 나머지 부분이 그것을 광범위하게 사용하고 새로운 것으로 대체하고 싶지 않기 때문입니다.


당신의 관점과 경험을 공유해 주셔서 감사합니다 !! 도움이됩니다. 마지막 두 번째 단락에서, 나는 당신이 scikit-learn에 대해 이야기하고 있다고 가정합니까? 아니면 RPy를 의미 했습니까? 정교하게 관리?
매니아

1
나는 단순히 R에서 무엇을하고 있든 동일한 작업을 수행하는 유사한 Python 패키지가있을 가능성이 큽니다. 팬더는 제공하는 대부분의 것들을 다룹니다 data.table. 앞서 언급했듯이 scikit-learn이 또 다른 예이지만 현재 상황에 따라 더 많은 것이 있습니다.
생성됨

1
정확히 내가하는 일 R에 대한 연구가 끝나면 파이썬으로 변환하여 코드베이스에 통합하십시오. 그러나 @Enthusiast는 해당 회사에서 똑같이 할 수 있는지 여부는 문화에 달려 있습니다. 대부분의 사람들은 상사가 사용하는 프로그래밍 언어를 사용합니다. 그리고 파이썬은 배우기가 어렵지 않습니다.
jf328

1
@GennaroTedesco : "저는 R에서 무엇을 하든지 동일한 작업을 수행하는 유사한 Python 패키지가있을 수 있습니다." 나는 실제로이 진술에 강력하게 동의하지 않는다. R의 가장 큰 장점은 통계학 자의 90 %가 Python이 아닌 최신 R을 최신 버전으로 게시한다는 것입니다. 이 방법이 성공하면 결국 파이썬으로 갈 수 있습니다. 그러나 그것은 또한 파이썬의 장점이기도합니다. 가 많이 나는 파이썬 패키지가 믿을만한 방법이 될 가능성이 더 높습니다 통계 생각하면서 R의, 그냥 쓰레기입니다 패키지를 통계.
Cliff AB

"R 구문과 문법은 매우 복잡하다. 나는 다른 어떤 것보다 R을 강력하게 선호하지만 구문은 실제로 간단하지 않으며 학습 곡선이 매우 높다는 것을 인정해야한다." 이 두 의견은 모두 의견 인 것처럼 보이지만 하나는 객관적인 진술로 입히고 다른 하나는 반대 의견을 제시합니다. 당황했습니다. 또한 파이썬의 구문과 관용구가 더 복잡하다고 생각합니다 (OOP 강조 중 하나).이 답변에 두 번 혼란 스럽습니다.
밝은 별

7

"데이터 엔지니어"유형 역할에 대해 데이터 과학자라는 제목을 사용하는 회사가 많이 있습니다. 특히 큰 데이터 공간에서.

회사에서 Hadoop 또는 Spark와 같은 분산 프레임 워크를 사용하여 분석을 수행하는 경우 Java 또는 Python (또는 스칼라)이 가장 적합한 언어가됩니다.


이 경우 머신 러닝 기술과 특정 기술 목록을 요청했을 때 모델링이 역할을 수행했음을 확신합니다.
매니아

H20이나 MLlib와 같은 Java / Python 라이브러리를 사용하더라도 이러한 기술 내에서 여전히 그렇게 할 수 있습니다.
greenpenguin

4

자바

Java 질문에 대한 다른 포스터와 동의하지 않아야합니다. java에서 mapreduce 작업작성 해야하는 특정 noSQL 데이터베이스 (예 : hadoop)가 있습니다. 이제 HIVE 를 사용 하여 거의 동일한 결과를 얻을 수 있습니다.

파이썬

파이썬 / R 토론이 계속됩니다. 둘 다 확장 가능한 언어이므로 둘 다 동일한 처리 능력을 가질 수 있습니다. 나는 R 만 알고 파이썬 지식은 매우 피상적입니다. 중소 기업 소유자라고 말하면 비즈니스에 너무 많은 도구가 필요하지 않습니다. 그렇지 않으면 전반적인 깊이가 부족하고 지원이 어려울 수 있습니다. 나는 그것이 팀의 도구 지식의 깊이에 올 것이라고 생각합니다. 팀이 파이썬에 중점을 둔 경우 다른 파이썬 데이터 과학자를 고용하면 기존 코드베이스 및 역사적인 실험 코드에 참여할 수 있으므로 의미가 있습니다.


2

적어도 현재 팀 (~ 80 명의 데이터 과학자 및 엔지니어)에게는 그러한 선호도가 없습니다. 여기서 데이터 과학자의 절반은 R을 사용하고 다른 절반은 Python을 사용합니다. 많은 사람들이 둘 다 코딩 할 수 있습니다. 프로덕션 환경에서 Python 및 R 코드를 배포합니다.

데이터 과학자 중 어느 누구도 Java를 전혀 사용하지 않는다고 생각합니다. 빅 데이터를 처리해야하는 경우 SparkSQL 또는 PySpark를 사용할 수 있습니다. 데이터 엔지니어링 팀은 Java / Scala / Python / Go를 혼합하여 사용합니다.

소규모 회사의 소수의 데이터 사용자 중 하나 인 경우 특정 언어 기술이 필요한 이유를 이해할 수 있으므로 데이터 과학과 엔지니어링을 모두 수행 할 수 있습니다. 그러나 tbh, 대부분의 소기업에는 Python 또는 R이 프로덕션에서 처리 할 수 ​​없을만큼 큰 데이터가 없을 것이라고 생각합니다.


조직에서 수행하는 비즈니스 유형을 자세히 설명 할 수 있습니까? 집 ML 작업이나 외부 고객을위한 것입니까?
매니아

1
@ 열정적 인 소매업. 사내 ML의 경우 100 %
piggybox

0

R은 약간의 R 경험을 가진 범용 프로그래머로서의 관점 : R은 데이터 과학에는 탁월하지만 수동으로 데이터를 해석하는 사람들을 대상으로합니다. 자동화 된 결과에 결과를 사용하려면 다른 것과 상호 작용해야하며 R과 같은 문제 별 언어에서는 다른 것이 어렵습니다. R에서 웹 사이트를 수행 할 수 있습니까? :) 반면에, 파이썬은 데이터 과학 관련 라이브러리를 만들었으며 다른 용도로는 방해가되지 않는 범용 프로그래밍 언어입니다. Java의 경우 수십만에서 수백만 줄의 코드가있는 대규모 프로그래밍 프로젝트에 적합합니다. 데이터 과학 부분이 그와 인터페이스해야 할 경우 Java로 모든 것을 수행하는 것이 좋습니다.

무작위 경고음 : 각 StackExchange 사이트에 개별적으로 로그인해야하는 이유는 무엇입니까?


4
R 코드는 시중에 나와있는 거의 모든 도구로 쉽게 실행할 수 있습니다. Java는 데이터 과학에 거의 사용되지 않습니다.
12

1
@GennaroTedesco JAVA는 빅 데이터 도구의 코딩에 유용합니다. 데이터를 쿼리하는 데 부분적으로 유용합니다.
매니아

-1

Python의 도구는 R보다 낫습니다. Ther R 커뮤니티는 정체되어 있지만 Python 커뮤니티는 정말 빠르게 발전하고 있습니다. 특히 데이터 과학 도구에서.
또한 파이썬은 주변의 모든 것들과 함께 더 쉽게 작동합니다. 웹을 쉽게 긁거나 데이터베이스에 연결할 수 있습니다. 프로토 타입 제작이 정말 빠릅니다.
프로토 타입이 있고 프로토 타입을 더 빠르게 만들거나 회사 워크 플로에 통합하려는 경우 일반적으로 Java로 다시 구현됩니다.

R에는 몇 가지 깔끔한 도구와 시각화 기능이 있지만 새로운 도구를 만드는 것은 그리 좋지 않습니다.


4
그것은 반드시 완전히 잘못되었습니다.
gented
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.