배움엔 끝이 없다
어떤 프로그래밍 언어를 다룰 줄 안다
라는걸 단계를 어떻게 매길 수 있을까.
2달쯤 전, 이력서를 쓸 때 특기, 기술 부분에 쓰려고 고민 했던 내용이었다.
그리고 내가 내렸던 5단계의 기준은 다음과 같다.
- :black_circle::white_circle::white_circle::white_circle::white_circle: 이름만 들어봤거나 혹은 처음 들어봄,
spring
,julia
,go
,c#
등등 - :black_circle::black_circle::white_circle::white_circle::white_circle:
HelloWorld
를 출력 해본 적 있음,ruby
,perl
,verilog
,mathmatica
등 - :black_circle::black_circle::black_circle::white_circle::white_circle: 비효율적이겠지만 어쨌든 간단한 필요 기능 정도는 만들어 봤다.
python
,matlab
등 - :black_circle::black_circle::black_circle::black_circle::white_circle: 시간과 예산이 충분 하면 어떻게든 할 수 있을 것 같다.
r
,html-css-js
- :black_circle::black_circle::black_circle::black_circle::black_circle: 나는
구루
다.
다른 건 그럴 수 있겠지만 r
을 4 에 둔 이유는 간단했다.
학부 때는 거의 써본적 없던 걸, 누구한테 배움 없이 온전히 맨땅에 박치기로 sci 2개를 쓸 정도는 되었으니.
나중에 보니 어떤 네이버맨이 비슷한 고민을 하고 나름의 답을 내렸던것 같다.
(레벨 3이랑 레벨 4랑 바뀐것 같은데)
실제로 나는 매우 오만하게도 전국에서 r
쓰는 사람들 쭉 줄세워 놓으면 그 중에서 100등 안에는 들어갈 것이라는 생각을 늘 했고,
어쩌면 앞으로도 계속 그러고 살았을지도 모른다.
지금 내 머리를 산발로 만들고 있는 것 중 하나는,
데이터의 전처리후, 통계치에 따라서 선택, 분석, 시각화하는 프로그램이다.
저번주에 완성 시킨 프로토타입에서는, 20000 * 90 사이즈 예시 데이터를 사용했던지라.
3분 정도 시간이 걸려서 결과물이 짜잔 나왔었고, 그나마 온갖 똥꼬쑈 끝에 1분 정도로 시간을 타협 할 수 있었다.
실제 데이터는 90 이 아니라 몇천 ~ 몇만 단위가 올 수도 있으니,
3k 짜리 데이터를 구해서 돌려봐라 라는 주문이 들어왔고, 당연히 될 줄 알았다.
왠 걸 데이터 선택 분석은 둘째치고 전처리에서 몇 분이 먹히는걸 보면서 반나절을 꼬박 부었고
마침내 원피스에 숨겨진 솔루션을 찾았다
가장 먼저 막혔던 전처리는
- 데이터의 row별로
- 작은 값(1)을 더한 뒤, (아래 log에서 0 으로 나누는걸 방지)
- median을 뽑아서 그 값으로 나누고,
- log를 박는것.
진짜 간단한 내용이어서 이게 왜 오래 걸리는 지 아직도 잘 모르겠다. 아무리 사이즈가 커도 그렇지.
기존에 했던 내용 :
for( i in 1:nrow(v)){
v[i,] <- log( (v[i,] + 1) / median(v[i,]) )
}
수정 내용 :
v <- v + 1
meds <- apply(v, 1, median)
v <- log(sweep(v,1,mes,'/'))
sweep
이라는 함수를 써본적도 없고 본적도 없는데, 심지어 새로운 어떤 패키지에 있는 내용인가 찾아봤는데 그것도 아닌 base
에 딸린 함수였다.
이런 갓함수도 몰라뵈다니 실망스럽다. 앞으로 matrix
계산에 자주 애용해야지
이전내용이 너무 오래걸려서 벤치마킹 테스트 조차 안 됐지만, 몇분 vs 몇초 면 거의 100배 이상은 차이 나는 것 같다. 대성공
배움엔 끝이 없다, 그리고 나는 r
레벨 3.5다 이제 .
Comments