Julia는 통계 커뮤니티를 고수 할 희망이 있습니까?


161

최근에 R-Bloggers의 게시물을 읽었으며 John Myles White 의이 블로그 게시물에 Julia 라는 새로운 언어에 대한 링크가 있습니다 . Julia는 JIT (Just-In-Time) 컴파일러를 활용하여 악의적 인 빠른 실행 시간을 제공하고 C / C ++와 동일한 속도의 속도를 제공합니다 (동일한 순서). , 동등하게 빨리하지 않음). 또한 R의 apply 문과 벡터 연산 대신 전통적인 언어로 프로그래밍을 시작한 사람들이 익숙한 정통 반복 메커니즘을 사용합니다.

줄리아의 멋진 타이밍에도 불구하고 R은 결코 사라지지 않습니다. 업계에서 광범위하게 지원되며, 무엇이든 할 수있는 수많은 멋진 패키지가 있습니다.

저의 관심사는 벡터화가 불가능한 자연의 베이지안입니다. 분명히 일련의 작업은 루프를 사용하여 수행해야하며 각 반복마다 많은 계산이 필요합니다. 이러한 직렬 루핑 작업에서는 R이 매우 느려질 수 있으며 C / ++는 작성하기에 적합하지 않습니다. Julia는 C / ++로 작성하는 것에 대한 훌륭한 대안으로 보이지만 초기 단계에 있으며 R에 대해 좋아하는 많은 기능이 부족합니다. 충분한 지원을 얻는다면 Julia를 계산 통계 워크 벤치로 배우는 것이 합리적입니다. 통계 커뮤니티에서 사람들이 유용한 패키지를 작성하기 시작합니다.

내 질문은 다음과 같습니다

  1. R을 사실상의 통계 언어로 만든 매력을 갖기 위해 Julia는 어떤 기능을 갖추어야합니까?

  2. Julia가 C / ++와 같은 저수준 언어를 배우는 것보다 계산이 많은 작업을 수행하는 것을 배우면 장단점이 무엇입니까?


7
Julia는 Incanter ( incanter.org ) 및 기타 유사한 프로젝트 보다 어떻게 우수 합니까?
Wayne

24
절차 적 구성 (예 : 루핑) : 거꾸로 거꾸로 들리는 것처럼 들립니다. 우리는 단일 및 소형 CPU 플랫폼에서 대규모 병렬 플랫폼으로의 전환을 맞이하고 있습니다. 이러한 진화가 향후 10여 년 동안 발생함에 따라, 쉽고 자동적으로 병렬화 가능한 기능적 코딩 스타일은 절차 적 코드보다 큰 이점을 얻을 것입니다. 물론 다른 많은 고려 사항이 통계 플랫폼을 선택할 때 개입하지만, 이것은 장기 전략으로 생각할 가치가 있습니다.
whuber

12
Christopher, 좋은 접근 방식은 이유와 증거를 요구하도록 고안된 방식으로 질문을 구성하는 것입니다. 대신 예는, "어떤 요소 같은 시도"줄리아는 ..., 필요한 매력이 있습니까 " 줄리아는 그것을 견인과 이유를 얻는 기회를 줄 수도를"; "지금 배울 가치가 있습니까?" "줄리아가 왜 지금 배울 가치가 있습니까? 잠재적 인 장점은 무엇입니까?" 소프트웨어 개발, 일회성 문제 해결, 생물 통계학, 데이터 마이닝 등과 같이 Julia의 관심있는 용도를 지정
하여이

1
@ 우버 : 제안을 주셔서 감사합니다. 감사합니다!
Christopher Aden

2
@ trolle3000 병렬화가 자동이라고 주장하는 사람은 없다고 생각합니다. 그러나 (있는 경우) 기능적인 버전의 프로그램을 작성한 경우 이미 병렬화에 필요한 많은 노력을 기울 였기 때문에 Mathematica 와 같은 응용 프로그램 이 병렬화를 매우 효과적으로 자동화 할 수 있습니다. 대신 절차 방식으로 알고리즘을 코딩 한 경우 일반적으로 알고리즘을 병렬화하는 것이 훨씬 더 어렵습니다.
whuber

답변:


96

핵심은 Julia를 위해 라이브러리가 개발되기 시작하는지 여부입니다. Julia가 과제 R이 나쁜 물에서 R을 물 밖으로 날려 버린다는 것을 보여주는 장난감 예제 (복잡한 장난감이라 할지라도)를 보는 것이 좋습니다.

그러나 제대로 수행되지 않은 루프와 핸드 코딩 알고리즘은 R을 사용하는 사람을 알고있는 많은 사람들이 R을 사용하는 이유는 아닙니다. 태양 아래에서 거의 모든 통계 작업을 위해 누군가 R 코드를 작성했기 때문에이 알고리즘을 사용합니다. R은 프로그래밍 언어 이자 통계 패키지입니다. 현재 Julia는 전자입니다.

나는 거기에 도착할 수 있다고 생각하지만, 사용 가능한 통계 툴킷으로 여전히 어려움을 겪는 훨씬 더 많은 언어 (Python)가 있습니다.


R 방법이 잘못 작성되었음을 알기 위해 실제로 벤치 마크 코드 (또는 벤치 마크)를 살펴 보셨습니까? 다양한 언어가 어떻게 사용되는지 직접 확인하려고 노력하고 있습니다.
Josh Hemann

10
@JoshHemann 나는 보드 R에 걸쳐 "느린"것을 알기에 충분히 보았다. 매번 잃을 필요는 없으며 때로는 물에서 파이썬을 날려 버리는 경우도 있지만 "이기는 사람"리본은 파이썬이나 R 프로그래머가 실제로 C로 대부분의 물건을 쓴 것으로 보입니다. .
매개물

5
벤치 마크 코드는 끔찍하다 . R 예제에서 2000x 속도 향상이 가능합니다. stackoverflow.com/questions/9968578/… , 특히 주석을 참조하십시오 .
Ari B. Friedman

12
맞습니다, @gsk. 예를 들어 pisum( github.com/JuliaLang/julia/blob/master/test/perf/perf.R )은 7.76 초가 걸리고 관용적 R ( replicate(500, sum((1 / (10000:1))^2))[500])을 사용한 간단한 재 작성 은 0.137 초가 걸리고 50 배 이상 빨라집니다.
whuber

2
R이 이륙 한 한 가지 이유는 S-PLUS와의 호환성 때문이었습니다. 사람들은 많은 오래된 코드를 사용할 수있었습니다. 많이 사용 된 코드는 버그가 적습니다. 이전 코드와 호환되지 않는 Julia와 같은 새로운 기능을 사용하려면 새로운 플랫폼으로 이동하는 모든 문제를 정당화하는 "킬러 앱"상황이 필요합니다. Google의 새로운 언어 Go와 비슷합니다. 좋은 시도이지만 왜 배울까요?
Aksakal

56

나는 다른 많은 의견에 동의합니다. "기대"? 확실한. Julia는 R과 Python / NumPy / Pandas 및 기타 시스템이 수년 동안 옳고 그른 일을 통해 많은 것을 배웠다고 생각합니다. 내가 나보다 똑똑하고 앞으로 통계 개발 환경의 기초가 될 새로운 프로그래밍 언어를 작성하고 싶다면 Julia와 매우 비슷할 것입니다.

이것은이 질문에 대한 답을 뒷받침하기까지 5 년이 걸릴 것이라고 말했다. 현재 Julia는 일상적인 사용자를 위해 R과 경쟁 할 수있는 통계 프로그래밍 시스템의 다음과 같은 중요한 측면이 부족합니다.

(시간이지나면서 업데이트 된 목록 ...)

  • 선택적으로 정렬 된 요인 유형
  • 대부분의 통계 테스트 및 통계 모델
  • 읽고 쓰는 프로그래밍 / 재생 가능한 분석 지원
  • R 클래스 또는 심지어 Matlab 클래스 플로팅

R과 경쟁하기 위해 Julia와 애드온 통계 패키지는 깨끗하고 완전해야하며, 똑똑하지 않은 프로그래머가 아닌 사회 과학 분야의 대학원생들이 합리적으로 사용할 수 있어야합니다. 거기에 도달하기 위해 많은 작업이 있습니다. 어쩌면 어쩌면 어지러 울지도 모르고 어쩌면 다른 것 (R 3.0?)이 그것을 대체 할 것입니다.

최신 정보:

Julia는 이제 누락 된 데이터 / NA, 모듈 / 네임 스페이스, formula유형 및 model.matrix인프라, 플로팅 (정렬), 데이터베이스 지원 (아직 DataFrame은 아님) 및 키워드로 인수를 전달하는 DataFrame을 지원합니다. IDE (Julia Studio), Windows 지원, 일부 통계 테스트 및 일부 날짜 / 시간 지원도 있습니다.


literate programming/reproduce-able analysis support-> IJulia 참조 .
Piotr Migdal

1
iPython / Jupyter 노트북 에코 시스템에 iJulia 커널을 추가하십시오.
thecity2

2
Julia Studio는 단계적으로 폐지되고 있으며 Juno는 이제 IDE입니다
Antony

3
이 답변이 처음 게시 된 후 2.5 년 후, "필수 사항"목록에있는 항목 중 3 분의 2가 구현되었습니다. 줄리아가 정말 약속했음을 알 수있는 최고의 증거라고 생각합니다.
senderle

5 년이 지났을 것입니다. @Harlan, 아직 있습니까?
StasK

35

저에게있어 데이터 분석 언어에서 매우 중요한 것은 합리적인 기본 설정과 대화 형 지향 디자인을 갖춘 쿼리 / 관계형 대수 기능을 갖추는 것입니다. 이상적으로는 언어가 내장되어 있어야합니다. 내가 사용한 FOSS 언어가없는 IMO는 R조차도 효과적으로 수행하지 않습니다.

data.frame은 대화식으로 작업하기가 매우 어수선합니다. 예를 들어, 호출시 전체 데이터 구조를 인쇄하고, $ 구문은 프로그래밍 방식으로 작동하기 어렵고, 쿼리에는 중복 된 자체 참조가 필요합니다 (예 :DF[DF$x < 10] . 조인 및 집계가 어색합니다. Data.table은 이러한 성가신 대부분을 해결하지만 핵심 구현의 일부가 아니기 때문에 대부분의 R 코드는 해당 기능을 사용하지 않습니다.

파이썬의 팬더는 같은 결함으로 고통받습니다.

이러한 그립은 매우 까다로울 수 있지만 이러한 결함은 누적되어 결국 많은 시간이 소요되므로 전체적으로 중요합니다.

Julia가 데이터 분석 환경으로 성공하려면 사용자 친화적 인 테이블 데이터 유형에 대해 SQL 구문의 수하물없이 SQL 유형 연산자를 구현하는 데 노력을 기울여야한다고 생각합니다.


1
+ 1-- 흥미로운 점은 신중하게 설명했다. 우리 커뮤니티에 오신 것을 환영합니다!
whuber

4
엄청나게 까다로워지기 위해 큰 Pandas DataFrames는 실제로 R에서와 같이 호출 될 때 모든 내용을 인쇄하지 않습니다. null / non-null 값의 수와 함께 열 머리글을 표시하도록 전환합니다. 또한 구문이 이상적이지 않다는 데 동의하지만 범위 지정 문제로 인해 이해 스타일 필터링에 대한 자체 참조를 제거하기가 어렵습니다. 더 말끔하지만 런타임에 DataFrame에 예상치 못한 추가 열이있는 경우 네임 스페이스 충돌에 대한 내성이 있습니다.
goodside

29

Dirk와 EpiGrad가 말한 내용에 서명 할 수 있습니다. 그럼에도 불구하고 R은 틈새 시장에서 데이터 지향형 시스템이라는 고유 한 언어가되었습니다.

R은 특히 데이터 처리를 위해 설계되었으므로 벡터 중심이며 data.frames, factors, NA 및 속성과 같은 요소가 있습니다.
반면에 Julia의 유형은 숫자 성능 지향적이므로 스칼라, 잘 정의 된 저장 모드, 공용체 및 구조체가 있습니다.

이것은 양성으로 보일지 모르지만 MATLAB으로 통계를 시도한 모든 사람들은 그것이 실제로 아프다는 것을 알고 있습니다.

따라서 적어도 나를 위해 Julia는 몇 줄짜리 C 덩어리로 해결할 수없는 것을 제공 할 수 없으며 실제로 유용한 표현력을 많이 죽입니다.


4
(+1) 좋은 지적입니다. 몇 가지 추가 생각 : data.framePython 에 비슷한 기능 이 부족하여 오랫동안 귀찮게했지만 이제 Pandas 는이 문제를 해결 한 것으로 보입니다. 공식은 statsmodels 의 계획된 확장 중 일부입니다 (물론 R의 공식 인터페이스를 피하는 것이 더 낫다는 것을 알고 있습니다). Julia에 대한 data.frame 제안 이 있습니다 (Python에 비해 매우 빠릅니다!), (...)
chl

5
@mbq도 C에 대한 요점을 가지고 있다고 생각합니다. C / C ++과 같은 순서로 속도가 필요한 경우 C와 C ++를 R과 함께 사용할 수 있습니다.
Fomite

4
@EpiGrad, 예, C / C ++를 작성하고 R과 깔끔하게 인터페이스 할 수 있습니다. 그러나 그것은 언어의 강점이 아니라 약점입니다. Julia를 사용하면 최종 사용자가 속도를 얻기 위해 C를 작성할 필요가 없습니다.
Harlan

2
이미 줄리아와 C를 모두 알고있는 경우에만 약점이다 @Harlan 나는 C <시간에서 보낸 시간 소요 새로운 언어를 배우는 주장하는 것 모든 것을 처음부터 다시 구현합니다.
Fomite

9
@Harlan 그리고 무뚝뚝하기 위해, 그 사람들은 줄리아에서 물건을 다시 쓰지 않을 것입니다. 프로그래밍 언어 아닌 통계 패키지로서의 R 은 유스 케이스 입니다.
Fomite

26

Julia가 Matlab을 대체하는 것을 볼 수 있는데, 이는 인류에게 큰 서비스가 될 것입니다.

R을 대체하려면 Neil G, Harlan 및 기타 사람들이 언급 한 모든 사항과 내가 믿지 못했던 한 가지 큰 요소, 응용 프로그램 및 라이브러리의 쉬운 설치를 고려해야합니다.

현재 Mac, Windows 또는 Linux 용 R 바이너리를 다운로드 할 수 있습니다. 다양한 통계적 방법으로 즉시 사용할 수 있습니다. 패키지를 다운로드하려면 간단한 명령 또는 마우스 클릭입니다. 그냥 작동합니다.

Julia를 다운로드하려고했는데 간단하지 않습니다. 바이너리를 다운로드하더라도 올바른 라이브러리를 얻으려면 gfortran을 설치해야합니다. 나는 소스를 다운로드하고 시도했다make 실제로 유용한 메시지없이 실패했습니다. 나는 컴퓨터 공학 학사 및 대학원 학위를 소지하고 있기 때문에 너무 기울어지면 주위를 찌를 수 있습니다. (아니요) 조 통계학자가 그렇게할까요?

R에는 방대한 패키지가있을뿐만 아니라 응용 프로그램의 바이너리와 거의 모든 패키지를 자동으로 만드는 상당히 정교한 시스템이 있습니다. 어떤 이유로 소스에서 패키지를 컴파일 해야하는 경우 (시스템에 적절한 컴파일러 등이 설치되어있는 한) 더 이상 어렵지 않습니다. 이 인프라를 무시하고 github을 통해 모든 작업을 수행하며 광범위하게 채택 할 수는 없습니다.

편집 : Julia와 장난하고 싶었습니다. 흥미로 보입니다. 두 가지 문제 :

1) 추가 패키지를 설치하려고 시도했을 때 (Julia에서 패키지를 잊어 버렸습니다) 오류가 발생하여 실패했습니다. 분명히 내 Mac에는 예상했던 make-like 도구가 없습니다. 그것은 실패 할뿐만 아니라 수동으로 삭제 해야하는 주위에 물건을 남겨 두지 않으면 다른 설치가 실패합니다.

2) 코드 줄에 일정한 간격을 둡니다. 나는 내 앞에 세부 사항이 없지만 매크로와 관련이 있으며 매크로와 괄호 사이에 공백이 없어 인수가 열립니다. 수년 동안 언어와 코드 형식을 개발했으며 실제로 함수 / 매크로 이름과 여는 괄호 사이에 공백을두기 때문에 이러한 종류의 제한은 실제로 버그가 있습니다. 일부 코드 형식 제한 사항을 이해하지만 줄 안에 공백이 있습니까?


5
줄리아는 아직 초기 단계에 있습니다. 나는 역사가는 아니지만 처음 몇 달 동안 R의 깨끗한 바이너리가 나오지 않았다고 확신합니다. 배포 시스템에 대한 당신의 요점은 지금까지 많이 언급하지 않은 것입니다. 다시 CRAN이 R과 같은 시간에 생겨나지 않았 음을 다시 한 번 강조하겠습니다. "CJAN"은 대규모 채택에 확실히 좋을 것입니다.
Christopher Aden

7
@Christopher는 R이 실제로 상업적으로 성공했으며 10 년 전에 개발중인 패키지 (S, S-Plus)의 독립적으로 개발 된 복제품이라는 사실을 알고 싶어 할 것입니다. 그것은 Julia (그리고 대부분의 다른 노력)가 결코 갖지 못한 중요한 출발을 주었다 .
whuber

3
@ChristopherAden : Julia가 아직 어리다는 데 동의합니다. 그러나 나는 " 'CJAN'이 대규모 채택에 확실히 좋을 것"이라고 강력히 동의하지 않을 것이다. 그것은 절대적인 필요성이다. CRAN과 같은 인프라가없는 것으로 생각할 수있는 유일한 도구는 JAGS와 같이 고도로 전문화되어 있습니다. 그러나 R과 마찬가지로 Julia는 일반적인 용도입니다.
Wayne

10
MATLAB을 대체 할 오픈 소스 언어는 엔지니어링 세계에서 가장 좋은 날입니다.
Royi

9
"줄리아가 Matlab을 대체하는 것을 볼 수 있는데, 이는 인류에게 큰 서비스가 될 것입니다." 더 동의 할 수 없었습니다.
davidav '

24

줄리아 언어는 매우 새롭습니다. 스포트라이트의 시간은 주 단위로 측정 할 수 있습니다 (개발 시간은 물론 몇 년으로 측정 될 수 있음에도 불구하고). 스포트라이트를받은 그 주들은 매우 흥미 진진한 주였습니다. 예를 들어 "지금 막 시작된 ​​Stanford의 최근 강연"을보십시오. 그러나 더 넓은 인프라와 패키지 지원 측면에서 요구하는 것은 훨씬 더 오래 걸릴 것입니다. 구체화하십시오.

그래서 R을 계속 사용하고 개발 대안을 염두에 두십시오. 작년에 많은 사람들이 Clojure를 개회했습니다. 올해 줄리아는 지배적 인 새로운 맛입니다. 우리는 그것이 붙어 있는지 볼 수 있습니다.


16
Rcpp를 통해 본 것 때문에 Julia는 MCMC에서와 같이 간단한 루핑에 대해 약 50, 60, 70 배 증가하고 피보나치와 같은 "퇴화"예제의 경우 수백 배는 본질적으로 동일합니다. Rcpp는 얻었다! 그러나 Rcpp를 사용하면 수많은 C ++ 라이브러리뿐만 아니라 3700 CRAN 패키지에 여전히 액세스 할 수 있지만 Julia는 현재 거의 아무것도 없습니다. 즉, Julia의 약속은 엄청납니다. 그러나 "지금"과 "지금"이있을 수 있습니다. 시간이 말해 줄 것이다.
Dirk Eddelbuettel

2
Clojure를 기반으로 한 통계 환경이 될 Incanter를 잊지 마십시오. 줄리아가 어떻게 그 점보다 우월합니까?
Wayne

2
@ 웨인, 여기서 물을 흐릿하게 만들지 마십시오. 이에 대한 새로운 질문을여십시오 (아마도 여러 언어 간 비교를 요청하는 질문)
naught101

2
@ naught011 : Clojure가이 달의 풍미, 특히 Incanter, 이제 Julia라는 Dirk의 요점을 간단히 반향합니다. Julia 또는 Incanter (또는 Clojure)가 통계 플랫폼을 일반화 할 가능성이 있다고 생각하지 않습니다.
Wayne

2
잘 모르겠지만 R 측을 기꺼이 업데이트합니다. 현재 CRAN에 6400 개가 넘는 패키지가 있으며 Rcpp를 사용하는 패키지 중 350 개가 넘습니다. 여전히 나를 위해 일합니다. 줄리아 사람들은 활동적이고 행복해 보이며 선택을하는 것이 좋습니다. 모든 문제에 대한 하나의 언어는 없습니다 : 죄송합니다, Python .
Dirk Eddelbuettel

19

Bruce Tate, 7 주 동안 7 개 언어의 저자. 여기 몇 가지 생각이 있습니다. 나는 후속 책을 위해 Julia를 위해 일하고 있습니다. 다음은 몇 주간의 플레이 후의 나의 의견입니다.

두 가지 근본적인 힘이 작용합니다. 첫째, 모든 언어에는 수명이 있습니다. R은 언젠가 교체 될 것입니다. 우리는 언제 모른다. 새로운 언어는 시간이 많이 걸리기 어렵습니다. 새로운 언어가 발전 할 때, 그것은 보통 압도적 인 고통 지점을 해결합니다.

이 두 가지는 관련이 있습니다. 나에게 우리는 R과 같은 언어를 중심으로 한 주제를보기 시작했습니다. 속도가 빠르지 않고 필요한 것보다 어렵습니다. 특정 성능 범위 내에서 생활하고 기존 도서관 내에 머무를 수있는 사람들은 괜찮습니다. 더 이상 필요로하지 않는 사람들은 더 많은 것을 찾기 시작했습니다.

문제는 컴퓨터 아키텍처가 변화하고 있으며이를 활용하기 위해서는 언어와 구조가 특정 방식으로 구성되어야한다는 것입니다. Julia의 동시성에 대한 관심은 흥미 롭습니다. 투명 배포와 프로세스 간 효율적인 데이터 이동과 같은 언어에 적합한 것을 최적화합니다. 일반적인 작업, 맵 및 변환 등에 Julia를 사용하면 함수를 호출하는 것입니다. 나는 배관에 대해 걱정할 필요가 없습니다.

줄리아가 하나의 프로세서에서 더 빠르다는 사실은 흥미롭지 만 R에게는 과도하게 피해를주지 않는다는 사실은 흥미로운 점은 프로세서가 성능을 위해 멀티 코어에 점점 더 의존함에 따라 기술 컴퓨팅 문제는 거의 이상적인 위치에 있다는 것입니다. 올바른 언어를 사용하면 최대한의 이점을 얻을 수 있습니다.

그 일을 도울 다른 기능은 실제로 매크로입니다. 언어의 속도는 지금 매우 강렬합니다. 매크로를 사용하면 더 크고 깨끗한 빌딩 ​​블록으로 만들 수 있습니다. 도서관을 보는 것은 흥미롭지 만 전체 그림을 말하지는 않습니다. 도서관의 성장을 살펴 봐야합니다. 줄리아의 궤적은 여기에 꽤 많이 있습니다.

Clojure는 R이 할 수있는 일을하는 기술적 언어가 없기 때문에 일부 사람들에게는 흥미 롭습니다. 나는 실제로 큰 팬입니다. 그러나 Clojure는 꽤 심각한 뇌 왜곡입니다. 기술 컴퓨팅을 수행해야하는 프로그래머에게는 Clojure가 있습니다. 엔지니어와 과학자에게는 적합하지 않습니다. 배울 것이 너무 많습니다.

그래서 나에게 Julia 또는 그와 비슷한 것이 언젠가 R을 대체 할 것입니다. 시간 문제입니다.


Julia는 템플릿 형식과 일급 lisp 파생 매크로 생태계를 모두 제공하는 새로운 언어가 많지 않습니다. 이 기능과 동시성 기능 및 속도 (향후 버전에서 향상 될 수 있음)는 다른 언어에 비해 강력한 경쟁력을 제공합니다. 나는 R을 거의 사용하지 않지만 C ++ (w / templates)와 Lisp (w / macros)를 자주 사용합니다. Julia는 하나의 명확한 언어로 깨끗하고 효율적으로 작업을 수행 할 수 있습니다. Julia가 앞으로 주요 언어가 될 것이라고 확신합니다.
AsymLabs 2016 년

15

새로운 언어를 볼 때마다 기존 언어를 개선 할 수없는 이유를 스스로에게 묻습니다.

파이썬의 큰 장점은

  • 풍부한 모듈 세트 (통계뿐만 아니라 라이브러리 플로팅, pdf로 출력 등)
  • 장기적으로 필요로하는 언어 구조 (큰 프로젝트에 필요한 객체 지향 구조, 개발을 단순화하는 데코레이터, 클로저 등)
  • 많은 튜토리얼과 대규모 지원 커뮤니티
  • 처리 할 데이터가 많고 클러스터에서 실행하기 위해 몇 페니를 지불하는 것을 신경 쓰지 않으면 mapreduce에 액세스하십시오.

R, Julia 등을 추월하기 위해 Python은

  • 단일 컴퓨터에서 더 빠른 속도를 제공하기 위해 제한된 Python에 대한 JIT (Just-In-Time) 컴파일 개발
  • 보다 풍부한 통계 라이브러리

3
이것은 사실 일 수 있지만, 매우 캐주얼 한 사용자에게는 Python의 언어 디자인이 Matlab 또는 Julia와 같이 수학과 비슷한 구문을 사용하는 것보다 사용하기가 다소 어려울 수 있습니다. y = 3x+2Julia에서 말할 수 있고 작동합니다!
Harlan

6
재밌습니다. 10 년 이상 전에 파이썬을 처음 보았을 때 정확히 같은 반응을 보였습니다 (왜 이것이 필요한가? 왜 이미 존재하는 것을 개선하지 않는가? 왜 기괴한 구문 적 특징, 클래스 이름, 메소드의 완전히 새로운 세트를 배우는가? , 절차 및 나머지는?). :-)
whuber

2
@NeilG 특히 과학 분야의 프로그래머가 아닌 전문가만큼 통계 전문가가 아닙니다. 파이썬은 프로그래머에게는 훌륭하지만, 심리학 데이터를로드하고 일부 모델 (빠른)을 맞추는 것만으로도 매우 간단한 수학과 같은 구문이 파이썬의 우아한 객체 기반 디자인보다 선호 될 수 있습니다.
Harlan

3
@NeilG R의 성공의 일부는 통계학 자만이 사용하지 않는다는 것입니다. 통계수행 하는 사람들이 사용 합니다 . 사회 과학자, 임상의 및 1 학년 과학 대학원생은 절대적으로 매우 캐주얼 한 사용자입니다.
Fomite

6
존 크로스 쿡 (John D Cook)의 블로그 게시물은 다음과 같습니다. 수학과 시스템 문제를 수학 언어로 코딩하는 것보다 범용 언어로 수학을 프로그래밍하는 것이 좋습니다. Julia 커뮤니티가이를 염두에두면 언어가 일반적으로 분석 프로그래밍에 충실 할 가능성이 높습니다 (통계량은 그 일부에 불과 함). johndcook.com/blog/2012/04/02/why-scipy
Josh Hemann

9

Julia는 곧 R을 인수하지 않을 것입니다. Microsoft R open을 확인하십시오.

https://mran.revolutionanalytics.com/open/

이것은 컴퓨터의 모든 코어를 자동으로 사용하는 향상된 R 버전입니다. 동일한 R, 동일한 언어, 동일한 패키지입니다. RStudio를 설치하면 콘솔에서도이를 사용합니다. MRO의 속도는 Julia보다 훨씬 빠릅니다. 저는 많은 컴퓨팅 작업을 수행하고 Julia를 1 년 이상 사용해 왔습니다. R이 더 나은 지원을 제공하고 RStudio가 멋진 편집기이기 때문에 최근에 R로 전환했습니다. Julia는 아직 초기 단계에 있으며 Python 또는 R을 곧 잡을 수 없습니다.


8

다음은 아마도 대답 할 가치가 없지만 다른 사람의 답변에 대한 의견으로 묻히는 것은 너무 중요합니다 ...

메모리 소비, 속도에 대해서만 많이 들었습니다. R의 가치가 전달되는 의미는 모두 고통 스러울 수 있으며, 이는 언어에 대한 하나의 비판이었습니다. 코어 외부 처리 (예 : numpy의 메모리 매핑 된 배열 또는 pytables 또는 Revolution Analytics ' xdf 형식) 합니다.) 를 처리하는 방법이 있으므로 올바른 메모리 관리가 중요 합니다. PyPy의 JIT 컴파일러는 눈에 띄는 Python 벤치 마크를 허용하지만 메모리 소비는 상당히 높을 수 있습니다. 그렇다면 줄리아와 메모리 사용에 대한 경험이 있습니까? 의심 할 여지없이 Windows "알파"버전에서 메모리 누수가 발생하는 것처럼 들리지만, 여전히 언어를 사용하기 위해 Linux 상자에 액세스하려고 기다리고 있습니다.


사실이지만 R (참조 클래스)에 패스 바이 레퍼런스를 사용하는 방법이 있습니다.
Ari B. Friedman

1
그리고 R은 실제로 값으로 엄격하게 전달되는 것은 아닙니다. 게으른 평가 및 일부 영리한 최적화는 데이터가 필요하지 않은 한 종종 데이터가 복사되지 않음을 의미합니다.
Ari B. Friedman

8

Julia가 이전에 언급 한 많은 이유로 인해 R을 대체 할 가능성은 거의 없다고 생각합니다. Julia는 Matlab 교체품이며 R 교체품이 아닙니다. 그들은 다른 목표를 가지고 있습니다. Julia가 완전한 통계 라이브러리를 보유한 후에도 그 누구도 Intro to Statistics 클래스를 가르치지 않습니다.

그러나 믿을 수없는 영역은 C / C ++보다 덜 고통스러운 속도 최적화 프로그래밍 언어입니다. Rc (Rcpp 스타일)와 매끄럽게 연결되어 있으면 속도에 중요한 코드 세그먼트를 작성하는 데 많은 도움이됩니다. 불행히도 현재 그러한 링크가 존재하지 않습니다 :

https://stackoverflow.com/questions/9965747/linking-r-and-julia


그러나 지금 하나가 있습니다 : comments.gmane.org/gmane.comp.lang.julia.devel/15153 시도하지 않았습니다 (아직).
kjetil b halvorsen 2016 년

8

저는 줄리아 초보자이며 R 능력이 있습니다. 줄리아가 지금까지 흥미로운 이유는 성능과 호환성 중심입니다.

GPU 도구. 통계 응용 프로그램에 CUSPARSE를 사용하고 싶습니다. CRAN 결과 는 그다지 많지 않다는 것을 나타냅니다. Julia 는 지금까지 부드럽게 작동하는 바인딩을 사용할 수 있습니다.

using CUSPARSE
N = 1000
M = 1000
hA = sprand(N, M, .01)
hA = hA' * hA
dA = CudaSparseMatrixCSR(hA)
dC = CUSPARSE.csric02(dA, 'O') #incomplete Cholesky decomp
hC = CUSPARSE.to_host(dC)

HPC 도구. 여러 컴퓨팅 노드와 대화식으로 클러스터를 사용할 수 있습니다.

nnodes = 2
ncores = 12    #ask for all cores on the nodes we control
procs = addprocs(SlurmManager(nnodes*ncores), partition="tesla", nodes=nnodes)
for worker in procs
    println(remotecall_fetch(readall, worker, `hostname`))
end

파이썬 호환성. 파이썬 생태계에 접근 할 수 있습니다. 예 : 뇌 영상 데이터를 읽는 방법을 알아내는 것이 간단했습니다.

import PyCall
@pyimport nibabel

fp = "foo_BOLD.nii.gz"
res = nibabel.load(fp)
data = res[:get_data]();

C 호환성. 다음은 C 표준 라이브러리를 사용하여 임의의 정수를 생성합니다.

ccall( (:rand, "libc"), Int32, ())

속도. Distributions.jl 패키지가 R의 rnorm에 어떻게 영향을 미치는지 알았습니다.

julia> F = Normal(3,1)
Distributions.Normal(μ=3.0, σ=1.0)

julia> @elapsed rand(F, 1000000)
0.03422067

R에서 :

> system.time(rnorm(1000000, mean=3, sd=1))
   user  system elapsed 
  0.262   0.003   0.266 

1
@NickCox, 이미 12 개 이상의 답변이 있으므로 대체 각도를 강조 표시하는 것이 흥미로울 수 있다고 생각했습니다. 또한, 나는 실수로 초안을 게시했습니다 :)
추측

1
문제는 Julia가 통계 커뮤니티에 머물러있는 이유였습니다. 내 대답은 hpc + gpu에 대한 훌륭한 지원에 중점을두고 있으며 계산 집약적 인 작업을하는 많은 사람들이 흥미로울 수 있습니다.
추측

7

Julia 1.0은 매우 유용한 IDE (Juno)를 출시했습니다. 파이썬이 이미 기계 학습을 지배하면서 R은 다른 모든 종류의 통계 분석을 계속 지배하면서 파티에 약간 늦게 나왔습니다. 즉, Julia는 빠른 개발 시간과 실행이 필수적이므로 금융 및 거래 알고리즘 분야에서 이미 눈에 띄게 상승하고 있습니다. 제 생각에는 다른 언어가 나오지 않으면 분명히 더 좋습니다. 줄리아의 눈에 띄는 상승은 아마도 다음과 같이 보일 것입니다.

(1) MATLAB의 점심을 먹기 시작합니다. MATLAB 사용자는 MATLAB 구문을 좋아하지만 다른 모든 것을 싫어합니다. 속도가 느리고 값 비싼 라이센스는 매트릭스가 아닌 복잡한 데이터 구조를 처리하는 매우 제한된 방법입니다. "줄리아가 MATLAB을 대체하면 인류에게 큰 서비스가 될 것"이라는 말을 기억합니다. MATLAB 사용자는 Julia에서 매우 빠르게 능숙해질 수 있으며 MATLAB이 할 수있는 것보다 훨씬 더 우수한 품질의 코드를 작성하는 것이 쉽다는 점에 깊은 인상을받을 것입니다 (배열에 빠르게 배치하고 빠르게 반복 할 수있는 구조)? 뿐만 아니라, 연구원들은 MATLAB으로는 불가능했던 Julia (소규모 박사 과정 학생들이 세계적 수준의 미분 방정식 패키지를 작성했습니다)에서 심각한 도구 상자를 만들 수 있습니다.

(2) 수치 방법과 시뮬레이션에 대한 연구를 시작합니다. MIT는 Julia의 무게를 무겁게하고 있으며 리서치 커뮤니티는 MIT의 의견을 경청합니다. 수치 시뮬레이션과 새로운 수치 방법은 라이브러리가없는 잘못 정의 된 문제입니다. 이곳은 언어로서 Julia가 빛을 발하는 곳입니다. 사용 가능한 라이브러리가 없으면 다른 언어보다 Julia에서 빠른 품질의 코드를 작성하는 것이 훨씬 쉽습니다. 수학자가 수학자를 위해 쓴 숫자 / 시뮬레이션 언어가 될 것입니다 (R과 비슷한 소리?)

(3) Julia에게 머신 러닝의 또 다른 혁신이 일어났습니다. 이것은 발생하지 않을 수도있는 약간의 와일드 카드입니다. TensorFlow는 훌륭하지만 해킹하기가 매우 어렵습니다. 파이썬은 이미 균열을 보이기 시작했고 TensorFlow는 Swift를 채택하기 시작했습니다 (줄리아가 존경할만한 언급을 얻음). 또 다른 머신 러닝 혁신이 발생하면 Flux.jl과 같은 Julia 패키지를 구현하고 해킹하는 것이 훨씬 쉽습니다.

(4) Julia는 천천히 R을 따라 잡기 시작합니다. MATLAB에서 통계를 작성하는 것은 고통 스럽지만 Juila는 이미 Distributions.jl을 사용하여 MATLAB보다 앞서고 있습니다. 사실 R 워크 플로는 Julia로 쉽게 변환 될 수 있습니다. R이 가진 유일한 장점은 통계학자가 통계학자를 위해 너무 많은 패키지를 작성한다는 사실입니다. 그러나이 프로세스는 Julia에서도 쉽게 수행 할 수 있습니다. 차이점은 Julia가 빠르다는 것입니다. 성능을 위해 다른 언어를 사용할 필요가 없습니다 (더 "심각한"R 패키지는 C와 같은 언어로 작성 됨). R의 문제점은 R로 작성된 패키지가 너무 느려서 많은 데이터 세트를 처리 할 수 ​​없다는 것입니다. 유일한 대안은 패키지를 다른 언어로 변환하여 R보다 Julia에서 개발 속도를 늦추는 것입니다.


2
기억하는 Matlab 교체에 대한 인용문은 이 글에서 나온 것 입니다. :)
Dougal

5

다른 아키텍처를 사용하여 더 나은 속도와 쉬운 병렬화를 약속합니다. 그런 이유로 나는 Julia 개발을 확실히 볼 것이지만 일반화 된 선형 혼합 모델을 처리 할 수있을 때까지는 사용하지 않을 것입니다. 일반적인 부트 스트랩 패키지, ggplot2와 동등한 기능 및 디자인 매트릭스를 구축하기위한 간단한 모델 언어가 있습니다. 기계 학습 알고리즘에서.

통계학자는 도구 선택에 대해 근본적인 태도를 취할 여유가 없습니다. 우리는 업무를 가장 효율적으로 수행 할 수있는 모든 것을 사용할 것입니다. 내 추측은 아직 몇 년 동안 R을 고수 할 것이지만 유쾌하게 놀라게하는 것이 좋을 것입니다.


안녕하세요 Mervyn, Stats.SE에 오신 것을 환영합니다! Julia는이 게시물을 작성한 이후 (거의 1 년 전) 상당한 시간을 개선했습니다. Douglas Bates는 GLM (어쩌면 GLMM?) 코드 중 일부를 Julia dmbates.blogspot.com/2012/04/r-programmer-looks-at-julia.html로 포팅 했으며 기본 Github 페이지는 과거에 많은 업데이트를 보았습니다. 년. 지금까지 Julia에 대한 필자는 (작년부터 사용하고 사용하지 않은) 속도가 좋은 MCMC에 사용되는 도구이지만 아직 툴체인의 R을 대체하지는 않았습니다. R이 빨라지거나 Julia가 더 널리 퍼질 때까지 기다릴 수 없습니다!
Christopher Aden

Doug는 아직 GLMM을 포팅하지 않았습니다. 누군가가 그 일을 돕고 싶다면 나는 그가 행복 할 것이라고 확신한다.
Ben Bolker

4

R에서 NA의 사치품은 성능 저하없이 오지 않습니다. Julia가 더 적은 성능 페널티로 NA를 지원하면 통계 커뮤니티의 일부에게는 흥미로워 지지만 NA는 R과 함께 컴파일 된 코드를 사용할 때 상당한 추가 작업을 부과합니다.

R의 많은 패키지는 레거시 언어 (C, Fortran 또는 C ++)로 작성된 루틴에 의존합니다. 어떤 경우에는 컴파일 된 루틴이 R 외부에서 개발되어 나중에 R 라이브러리 패키지의 기초로 사용되었습니다. 다른 경우에는 루틴이 먼저 R로 구현 된 다음 성능이 부족한 것으로 밝혀지면 핵심 세그먼트가 컴파일 된 언어로 변환되었습니다. Julia는 동등한 루틴을 구현하는 데 사용될 수 있다면 매력적일 것입니다. 컴파일 된 코드와 함께 R을 사용할 때 현재 가지고있는 것보다 NA 처리를 단순화하는 방식으로 NA에 대한 저수준 지원을 설계 할 기회가 있습니다.

많은 수의 R 라이브러리는 많은 사용자의 노력을 나타냅니다. R은 다른 방법으로는 사용할 수 없었거나 저렴한 기능을 제공했기 때문에 가능했습니다. Julia가 널리 사용 되려면 매우 기본적인 것들 (예 : 그래픽, 날짜 수업, NA 등)을 제공하는 데 필요한 노력보다 가치있는 대안보다 훨씬 더 필요한 것을 수행하는 사용자 그룹이 필요합니다. ) 기존 언어로 제공됩니다.


4

저는 R에 대한 경험이 없으나 통계 분석을위한 훌륭한 도구라고 생각하는 많은 사람들과 함께 일합니다. 저의 배경은 데이터웨어 하우징에 있으며 Julia의 배포가 용이하지만 표준 프로그래밍 모델이 더 많기 때문에 일반적으로 업무를 매우 잘 수행하지 못하는 전통적인 ETL 도구의 변환 부분을 대체 할 수있는 흥미로운 대안이 될 수 있다고 생각합니다. 표준화 된 변환을 쉽게 만들거나 이전 데이터 세트에서 이미 수행 된 변환 결과를 재사용 할 수 있습니다. 엄격하게 정의되고 유형이 지정된 튜플에 대한 지원이 두드러집니다. 기본적으로 이미 계산 된 튜플에서 더 자세한 튜플 (사실 테이블)을 작성 해야하는 OLAP 큐브를 작성하려는 경우 오늘날의 ETL 도구에는 그에 대한 '빌딩 블록'이 없습니다 도울 수있다, 이 산업은 과거에 다양한 수단을 통해이 문제를 해결해 왔지만, 트레이드 오프가 있습니다. 기존의 프로그래밍 언어는 중앙에서 정의 된 변환을 제공함으로써 도움이 될 수 있으며 Julia는보다 복잡한 데이터웨어 하우스 시스템에서 공통적 인 비표준 집계 및 배포를 단순화 할 수 있습니다.



2

Julia는 의심 할 바없이 통계 사용자가 꿈꾸는 통계가 될 수있는 모든 기회를 가지고 있습니다. SAS를 예로 들어 봅시다. 힘은 C로 작성된 수많은 procs에 있습니다. Julia가 할 수있는 일은 여러분에게 소스 코드와 함께 행렬을 제공하는 것입니다. SAS / iml과 함께 제공되는 내장 데이터 유형. 통계 학자들이 줄리아에게이 강아지가 할 수있는 일에 대한 손잡이를 잡으면 의심 할 여지가 없습니다.


1
Stats.SE, Jimbo에 오신 것을 환영합니다. 나는 당신의 주장에 동의하지 않습니다. Julia가 할 수있는 일을 보았지만이 시점의 문제는 R에있는 것만 큼 많은 도메인 별 패키지가 없다는 것입니다. R은 오픈 소스 통계에서 계속해서 최고를 지배 할 것입니다. 연구자들이 R 세계에서 수많은 패키지를 사용할 때 더 많은 이점을 얻는다면 적어도 내 취향입니다.
Christopher Aden

2

그렇습니다. Julia는 R을 매우 빨리 추월 할 것입니다. 그리고 주된 이유는 "매크로", 언어의 95 %가 줄리아에서 구현되고, 소음이없고, 조화로운 구문입니다. lisp 유형의 언어에 대한 경험이 없다면 아직 이해하지 못할 수도 있지만 R 공식 인터페이스가 구식이되고 추악한 메커니즘이 된 방법을 매우 빨리 보게 될 것입니다. CL과 유사한 특수 모델링 마이크로 언어로 대체됩니다 루프 매크로. 객체의 저수준 참조에 대한 액세스도 큰 이점입니다. R은 여전히 ​​사용자로부터 내부를 숨기는 것이 실제로 단순화하는 것보다 복잡하지 않다고 생각합니다.

내가 지금 알다시피 (R을 많이 사용하고 Julia 매뉴얼 읽기를 마쳤습니다), R에 대한 Julia의 주요 단점은 구조적 상속을 지원하지 않습니다 (의도적이었습니다). Julia의 타입 시스템은 S4보다 덜 야심적입니다. 또한 다중 디스패치 및 다중 상속을 지원하지만 캐치에는 하나의 구체적인 클래스 만 있습니다. 반면에 R의 클래스 계층이 3 레벨보다 깊지는 않습니다.

시간은 말할 것이지만 대부분의 R 사용자가 생각하는 것보다 빠릅니다.)


2
수십 년이 지난 후에도 사람들은 Lisp가 실제로 얼마나 강력한 지 과소 평가합니다. 그러나 1 번 지점에서 알 수 있듯이이 언어는 본질적으로 R 대체가 아닌 Matlab 대체입니다. 또한 사람들이 사용하는 언어와 라이브러리 (패키지)라는 사실을 무시하고 Julia는 필요한 것의 1 %조차도 가지고 있지 않다고 생각합니다.
Wayne

2
@Wayne, 나는 아무것도 무시하지 않습니다. OP는 미래에 관한 것이지 현재에 관한 것이 아닙니다. 5 년 안에 줄리아에있는 통계보다 R에 대한 통계보다 더 많은 라이브러리를 볼 수있을 것입니다. 그리고 이것은 Julia가 훨씬 더 나은 언어가 될 가능성이 있기 때문입니다.
비토 시카

julia가 실제로 MATLAB 대체품이되면 엔지니어링 및 통계에 동일한 언어를 사용하면 큰 이점이 있습니다! 겹치는 영역 (예 : 시계열)은 엄청납니다.
kjetil b halvorsen 2016 년

1

Julia의 첫 번째 대상 사용 사례는 숫자 문제입니다. 기본적으로 이러한 분석 및 계산 과학 필드를 데이터 과학 (데이터 기반) 및 시뮬레이션 과학 (모델 기반)으로 나눌 수 있습니다. Julia는 시뮬레이션 과학 사용 사례를 먼저 다루고 있습니다. 또한 데이터 과학 사례를 다루고 있지만 더 느립니다. R은 시뮬레이션 과학에 매우 유용하지는 않지만 Julia는 몇 년 동안 두 가지 모두에 매우 유용합니다.


0

사용자에게 메모리에 투명하게 맞지 않는 큰 데이터 세트에 어떤 기능을 적용 할 수 있어야합니다.
여기에는 디스크에는 맞지만 메모리에는 맞지 않는 데이터 세트에서 혼합 효과 모델, 생존 모델 또는 MCMC를 실행하는 것이 포함됩니다. 그리고 가능한 경우 여러 컴퓨터에 분산 된 데이터 세트에서 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.