고감자 on 12월 26th, 2011

2학기 시작하면서 2학기 공부 방법 및 계획에 대해서 많은 고민을 했었는데, 2학기 결과가 예상한 점수보다 0.33점 더 나왔다.

 

image

 

 

2학기 시작하면서 3.5 정도만 받자고 했고, 그에 따른 계획이 매일 한 과목 1시간씩 투자하는 것이였는데, 역시나 시간 투자한 과목 순으로 성적이 나왔다. 물론 데이터 마이닝은 이미 다 아는 내용이여서 advantage가 있어서 운이 좋았지만 이번에 책도 바뀌고 시험 경향도 좀 바뀌어서 다른 분들은 많이 당황하신 듯 하다.

2학기 내내 이 공부 빼놓고 일을 벌이지 않은게 참 잘한거라 생각한다. 성격이 집필이든 독서든 일단 들어오는 것을 다 받아서 하는 스타일이였는데, 딱 하나만 잡아서 하자고 계획했던게 적중한듯 하다.

아마도 이번 학기가 가장 힘든 학기 였을거라 예상해 본다. 애도 자주 아프고 게다가 입원도 하고 그러면서 매일 저녁 11시 이전에는 내 시간을 가져본 적이 거의 없었는데(그나마 11시 이전에 가질 수 있으면 다행이다),  이정도 공부한 나에게 칭찬해주고 싶다.

그리고 무엇보다 물심양면으로 지원해준 아내에게 고맙다고 말하고 싶다.

Tags: ,

고감자 on 12월 21st, 2011

2011.12.19일 R meetup 행사를 회사 카페에서 진행을 했었다. 약 20명 정도의 분들이 오셔서 아기자기 하게 모임을 가졌고, 첫번째 세션으로 cran.nexr.com 을 운영하면서 나온 아파치 로그를 분석하는 방법과 그 결과물을 공유 했었고, 나머지 15분 동안 KoNLP 패키지 소개를 했었다.

LA R User group에서 했던 meetup 행사 동영상을 보면서 상당히 스크린캐스트가 재미 있다는 생각을 해보게 되서 직접 만들어 보게 되었고, 재미가 붙어서 앞으로 몇 개정도 더 만들지 않을까 한다.

 

첫 번째로 아파치 로그 분석 예제에 대한 동영상이다(글자가 잘 안보이면 동영상 해상도를 높여서 시청하시기 바란다).

 

아래는 위 동영상 코드이다.

setwd("C:/rcran")
accessLog <- read.table(file=bzfile("full_log_20111124_20111219.txt.bz2"),
                        sep=" ")

library(stringr)
pattern <- ".+contrib.+/(.+) HTTP/1.0"
packages <- str_match(accessLog[,"V6"], pattern)[,2]
clenedPkg <- packages[!is.na(packages)]

numofwin <- length(grep(".+\\.zip",clenedPkg))
numofmac <- length(grep(".+\\.tgz",clenedPkg))
numofsrc <- length(grep(".+\\.tar\\.gz",clenedPkg))

numof <- c(numofwin, numofmac,numofsrc )
names(numof) <- c("Windows", "Mac", "Etc")
barplot(numof/sum(numof) * 100, xlab="OS", ylab="Percentages", col=rainbow(3), ylim=c(0,100))
title("Korea User OS Distribution")

pkgNames <- str_match(clenedPkg, "(.+)_.+")[,2]

library(plyr)
library(lattice)
pkgcount <- count(data.frame(pkgname=pkgNames), vars="pkgname")
pkgcount <- pkgcount[!is.na(pkgcount$pkgname),]
orderedPkgCount <- pkgcount[order(pkgcount$freq, decreasing=T),]
orderedPkgCount$pkgname <- factor(orderedPkgCount$pkgname,
                                  levels=orderedPkgCount$pkgname[order(orderedPkgCount$freq, decreasing=T)])

barchart(freq~pkgname, data=orderedPkgCount[1:20,], ylab="Freq", xlab="pkg names",
         scales = list(x = list(rot = 45, col="blue", cex=1.2)),col=rainbow(20), main="Top 20 packages")

 

두번째 동영상은 몇가지 예제와 더불어 KoNLP를 소개한 동영상이다.

 

역시 코드 첨부한다.

setwd("C:/work/meetup")
library(KoNLP)
library(RColorBrewer)
library(wordcloud)

f <- file("광장_최인훈.txt", blocking=F)
txtLines <- readLines(f)
nouns <- sapply(txtLines, extractNoun, USE.NAMES=F)
close(f)

wordcount <- table(unlist(nouns))
pal <- brewer.pal(12,"Set3")
pal <- pal[-c(1:2)]
wordcloud(names(wordcount),freq=wordcount,scale=c(6,0.3),min.freq=25,
          random.order=T,rot.per=.1,colors=pal)

위 결과로 나오는 워드클라우드는 아래와 같다.

 

image

 

앞으로 다양한 분들이 더 재밋는 주제로 meetup을 만들어 주길 바란다.

Tags:

고감자 on 12월 11th, 2011

KoNLP 패키지 업데이트를 했다.

업데이트 내용은 아래와 같음.

 


Version 0.0-8.0 (2011-12-09)

------------------------------------------------------------------------------

  * improved performance more than 100 times on functions which related with Hannanum Analyzer.

  * set -Xmx512m for Java VM.

  * Java sources are added.

 

자바 코드 최적화로 성능향상이 있었는데, Thread 기반에서는 정확한 기능 보장을 못하니 R에서 병렬 프로세싱으로 KoNLP 패키지 사용을 하는건 피하길 바란다. 다음 업데이트에서 해결하도록 하겠다. 급하신 분은 메일 주시면 바로 해결해 드리구. ㅋ

 

얼마전에 github에 코드를 올려 두었는데, 어제 R-Forge 계정 할당을 받아서 조만간 코드들도 이쪽으로 옮겨 놓을 예정이다. 메일링 리스트 지원이라든지 여러 지원이 빠방하고 아무래도 R 관련 프로젝트기에 이쪽에서 더 지원을 많이 해줄거 같다는 생각을 해본다.

기말고사 끝나는 대로 여러 굵직굵직한 기능 추가를 시작해야 할 듯 하다.

Tags: ,

고감자 on 12월 10th, 2011

최근 작금의 상황을 보자면 빅 데이터를 모아서 쌓아두는데 목적을 두는 기업들이 상당히 많다는 것을 자주 느끼곤 한다. 빅 데이터를 쌓아두면 뭔가 가치 있는 정보들이 나올거라는 미신같은것 때문에 너도 나도 빅 데이터 클러스터를 구성하는데 관심을 가지고 있는 듯 하다.

물론 빅 데이터에 가는 가장 명시적인 마일스톤이 빅 데이터 처리 플랫폼을 구축하는 것이고 어쩌면 이는 돈을 투자하면 바로 되는 시각적인 효과가 분명한 프로젝트일 것이다. 그나마 쉬운 작업을 가장 먼저 하는 것, 내가 보기엔 이것 이상도 이하도 아닌 것 같다.

정작 데이터에서 가치 있는 정보를 뽑아내는 분석작업, 그리고 이를 실제 비즈니스에 적용해서 개선하는 작업에 대한 고려는 전혀 없이 클러스터를 구성하고 빅 데이터 플랫폼을 구성하는 경쟁을 하고 있는 것으로 밖에 보이지 않는다. 가장 어려운 것을 하지 않고 빅 데이터 플랫폼을 구축하는 프로젝트를 보자면 정말 일을 위한 일밖에 되지 않는 그런 느낌을 상당히 많이 받곤 한다.

기업 데이터 분석 작업이 어려운 이유는 작업 자체의 난이도 보다는 기술과 실무가 만나는 접점에 있는 영역의 일이고, 여기서 나온 결과물들이 실제 비즈니스 방식 자체를 바꿔야만 적용이 될 수 있는 것들이 상당히 많기 때문에 이에 대한 이해를 시키고 구성원의 동의를 얻는데 많은 노력이 들기 때문이다. 이는 시간이 오래 걸리는 일이기에 외부 분석가를 영입해서 프로젝트를 진행하는 것 보다는 내부에서 데이터 과학자를 키워서 점진적이고 장기적으로 이끌어 나가게끔 하는게 가장 바람직한 방향이 아닐까 하는 생각을 해본다. 그리고 무엇보다 시급한 것은 과연 빅 데이터를 이용하길 원하는 회사가 과연 데이터가 이끄는 회사(Data Driven Company)인가 하는 것이다. 이는 비즈니스 하나하나의 개선보다 더 어려운 회사의 문화에 대한 문제이기 때문에 데이터 과학자가 아무리 많다 해도 바꿀 수 없는 부분이기도 하지만 빅 데이터를 활용하기 위해서는 반드시 한번 정도는 비교해보고 고민해봐야 하는 부분이 아닐까 한다. 

데이터가 이끄는 회사….

대표적으로 구글, 야후, 페이스북, 링크드인, 넷플릭스 같이 데이터를 활용해 재미를 본 회사들이며 이들이 바로 빅 데이터 활용의 가장 많은 성공 사례를 제시한 회사들이라는 것은 다들 알고 있을 것이다. 이 사실을 알고 있다면 이들 데이터가 이끄는 문화가 어떤것을 의미하는지 먼저 이해하는 과정을 빅 데이터 플랫폼 구성 이전에 고민을 해야 한다고 생각한다.

어쩌면 과거 OLAP을 구성하고 데이터 마이닝을 통해서 정보를 뽑아내려 했던 회사들이 이런 DW나 마이닝 기술에 실망한것은 사실 그들 문화가 이 기술들을 포용할 준비가 되지 않아서이지 않을까 하는 생각을 해본다.

 

ps. 야후!에서는 p-value라는 단어가 전사 메일에 포함되서 오는 경우가 허다했다. 중요한 서비스의 성능 향상은 꼭 이런 통계적 용어와 함께하고 있었고, 전 직원이 이에 대한 이해를 하고 있다는 사실…난 이점이 정말 데이터가 이끄는 회사의 한 단면을 보여주고 있는게 아닐까 한다.   

Tags: , ,

고감자 on 12월 4th, 2011

오늘 하루를 마무리 하면서 이런 글을 쓰다니 참 감개무량할 뿐이다. 아직 할 일이 좀 남아 있어서 잠은 늦게 들거 같긴한데, 일단 약속했던 발표 자료를 공유하고자 한다.

대한민국 커뮤니티 데이 발표자로 참여를 했고, 제목을 그럴싸하게 지어놓아서 아마도 실실적인 첫번째 세션으로 선정된 듯 하다. 그 덕분에 오늘 스케줄을 참 나이스하게 마무리 하긴 했다.

발표가 끝나고 오후 1시부터 통계학 전공 시험이 있어서 부리나케 시험장으로 달려가서 다른 분들과 많은 이야기를 나누지 못한게 참 아쉬웠다.

어찌되었든 발표든 시험이든 잘 마무리 된거 같아 보이니 발표자료 올려본다.

 

오픈소스기반의 통계언어 R과 빅 데이터 분석

Tags: ,