R 배치 프로그램 작성시 문제들과 나의 해결책

R로 분석을 하고 나서 주기적으로 돌아가는 배치 프로그램을 작성할 경우가 많다. 이 배치 프로그램을 제작하는 것은 사실 분석 프로그램을 작성하는 것과는 사뭇 다른점이 있으며, 이 부분을 제외하고 나서도 다른 언어하고 상당히 다른 동작을 하는 부분을 쉽게 찾을 수 있다. 가장 먼저 난감했던 점은 대다수의 프로그래밍 언어들이 다른 소스 스크립트나 리소스들을 참조할 때 메인 스크립트 소스파일의 […]

계속 읽기

라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기

라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기 전에 국가기관에 다니는 분이 이와 비슷한 질문을 하신 분이 있었고, 나도 역시 외부 프로젝트 나갈때를 대비해 이런 준비를 할 필요성을 느꼈는데, 이제야 좀 감이 잡혀서 글을 써본다. 문제는 이거다. 외부 네트웍이 전혀 안되는 곳에서 R 패키지 설치하기가 매우 번거롭다. 내 경우엔 필요한 모든 패키지를 USB로 다운 받아가서 […]

계속 읽기

저렴한 시스템에서 대용량 데이터 학습하기

저렴한 시스템에서 대용량 데이터 학습하기 데이터 레코드가 10만개 정도, 그러나 필드가 500개. 그러나 분석가가 가지고 있는 R 시스템은 정말 아주 일반적인 시스템이라 하자. 예를 들어 윈도우 7 32bit, 4GB램… 위의 상황일때 지금같으면 램을 증설하고 윈도우 7 64비트 OS로 바꾸는 작업을 할텐데, 이런 쉬운 결정이야 지금에야 어느정도 가능하지만 불과 몇년전 까지만 해도 간단한 일이 아니었다. 아래 […]

계속 읽기

R 3.0.0 릴리즈

진정으로 빅 데이터 시대에 맞는 R 릴리즈가 된거 같다. 3.0.0으로 버전업을 하면서 20억 레코드 정도의 데이터 프레임을 커버할 수 있는 능력이 생겼는데, 이는 하나의 분석 단위로 어마어마한 크기이며  20억 레코드의 데이터를 발견하기도 쉽지 않을 정도의 크기이다. 이전 버전까지는 64비트 OS지원이 다소 미흡했다. 한마디로 int64를 사용하지 않는 체계를 사용했는데, 그 한계가 금번 버전업에서 풀렸으며 좀더 대용량 […]

계속 읽기

ggthemes 예제들

ggthemes 참고용 이미지들… 패키지에서 제공한 예제 코드들에 대해서 실행한 결과물을 함께 올렸다. 필요할때 찾아서 쓰자! 개인적으론 theme_economist가 제일 맘에 드네.. library(ggthemes) dsamp <- diamonds[sample(nrow(diamonds), 1000), ] (qplot(carat, price, data = dsamp, colour = clarity) + theme_solarized() + scale_colour_solarized("blue")) ## Dark version (qplot(carat, price, data = dsamp, colour = clarity) + theme_solarized(light = FALSE) + scale_colour_solarized("blue")) […]

계속 읽기

The Metropolis-Hastings algorithm

The Metropolis-Hastings algorithm 이전 포스팅인 Rejection sampling 이나 Sampling-Importance-Resampling algorithm과 같이 특정 확률분포 함수로부터 샘플링을 추출해 확률값을 근사시킬 수 있는 알고리즘이다. 다만 마르코프 체인의 개념을 이용해 이전확률값을 기준으로 현재 확률값을 평가해 이 기준에 만족하는 경우 샘플을 수용하고 아닐 경우 과거 샘플을 다시 넣는 방식을 사용한다. 흡사 Rejection Sampling과 개념은 비슷하나 Rejection 샘플링의 경우 샘플을 버리는 […]

계속 읽기

Sampling-Importance-Resampling algorithm

Sampling-Importance-Resampling algorithm 어제에 이어 Sampling-Importance-Resampling algorithm 코드를 올려본다. 물론 책의 코드를 참고했는데, R코드를 구현하다 보니 거의 pseudo코드에 근접하는 것을 알 수 있었다. 이는 시뮬레이션과 데이터에 최적화된 R의 특징 때문이라 생각된다. 특히나 가중치 값에 따라 resampling하는 부분이 함수 하나로 치환되었고 컴퓨팅 속도도 무척 빨라졌다. weight값에 따라 재 샘플링하는 부분이 어떻게 동작하는지 comment된 부분을 참고하는 것도 좋을거 […]

계속 읽기

Rejection Sampling 시뮬레이션

rejection sampling 겨울학교에서 Gibbs Sampling 방법론에 대한 내용이 나와서 이게 바이오정보학과목에서 본거 같은데 확실한 의미를 몰라서 찾아보다가 여러 샘플링 기법에 대해서 살펴보고 있다. 대부분 복잡한 확률 모델들은 확률값을 추론하기가 힘들다. 이 때문에 여러 샘플링 방법을 사용해서 확률값을 근사하는게 되는데, 책을 보다가 책에 있는 코드를 기반 R로 시뮬레이션을 해봤다. 함수가 있는데 이런식으로 시뮬레이션 샘플링을 하는 이유는 […]

계속 읽기

iris 데이터에 대한 베이지언 분류기 토이 예제

패턴인식 겨울 학교 첫날에 정규분포를 가정한 데이터에 대한 베이지언 분류기를 만들어 보는 토이 예제가 나와서 간단하게 R로 구현해 봤다. 몇몇 함수를 먼저 정의할 필요가 있다. 특히나 공분산 행렬을 만드는… 물론 R은 cov()라는 공분산 행렬을 만드는 함수가 있으나 목적상 직접 만들어 보자. # 학습셋과 테스트셋을 구분 set.seed(1234) idx <- sample(1:50, size = 45) sub_set_train <- subset(iris, […]

계속 읽기

책을 쓰고 있다.

올해 초 부터인가 그 동안 데이터 분석이나 시각화 그리고 R에 대해서 조금씩 블로그에 정리해 두었는데, 이들을 기반으로 책을 써볼까 하는 생각을 해봤다.  그러다가 서민구님이 이미 비슷한 생각으로 책을 쓰시는 것을 알게 된 후부터 크게 깨닫고 바로 집필에 들어갔다. 사실 이전에 번역을 해본적이 있었는데, 번역과는 다르게 집필은 자신이 의도한 바대로 책을 쓰고 마치는 시점에서 책을 출판할 […]

계속 읽기