JMK no matter what

stream/

24 Jan 2010

Floyd's Tortoise and Hare 보다 더 나은 Cycle Detection 알고리즘: Teleporting Turtles

23 Jan 2010

L1 Approximation Problem

  • 업데이트: 내부적으로 GLPK 를 이용할 수 있는 옵션이 있어서 써보니까 훨씬 빠르다. 'ㅅ'
  • 업데이트: GLPK 에 2*n*(n+m) 크기의 행렬을 넘겨줘야 하는데 이게 너무 억울해서.. MathProg 를 쓰면 n*m 크기의 행렬만 넘겨줘도 되니까 빨라지겠지? 헤헷 하고 열심히 MathProg 를 배워서 모델 짜고 데이터 제너레이터 짜서 넣었더니... 안빨라져... orz 패러미터 설정하면서 갖고 놀거나, lp-solve 를 써보면 더 나아질 수도 있겠다 싶지만 귀찮아서 이만.

Convex by Boyd 을 보면, 많은 경우에 L2 optimized estimator 보다 L1 optimized estimator 가 더 robust 하다고 되어 있다. Outlier 에 훨씬 덜 민감하니까 당연한 노릇. 보면 LP 로 바꿔서 풀 수 있다고 되어 있다. 그래서 파이썬용 Convex Optimization 패키지인 cvxopt 로 풀어보았다.

파란 선을 중심으로 랜덤 샘플을 만들고 (가우시안 노이즈 추가) 적절한 개수로 엉뚱한 위치에 아웃라이어를 좀 던져둔다. 초록색 선이 L2 핏, 빨간색 선이 L1 핏이다. 훨씬 원래 분포에 가까운 결과를 보여줌.

cvxopt 샘플에 L1 approximation 이 샘플로 나와 있길래 좋아라 하면서 써먹어 보려 했는데 안돌아가... 행렬 크기가 안맞는대... 좀 검증해 보고 올리지 쩝. ㅠ.ㅠ 미워라 덕분에 무식하게 모델링해서 돌렸다.

속도를 재 보면:

초록색이 처음에 써 본 cvxopt 의 기본 solver 속도. 이건 뭔가 exponential 하게 올라가는 삘인데.. -_-;; 과연 현실적으로 쓸 수 있을까.. 하고 후덜덜했는데, GLPK 써보니 거의 linear 하게 올라가는 듯? 뭐.. 일단 지금은 무지하게 무식하게 짠 점도 있고,뭔가 problem structure 를 이용하면 좀 더 효율적으로 돌릴 수 있을 듯. 그러려면 저 Boyd 책을 봐야 하나.... -_- .....

어쨌든 소스코드 ...

20 Jan 2010
19 Jan 2010

I'm never buying from Dell again: delivers in one month? Even in 90s it took less than a week.

주말

미국은 월요일이 마틴 루터 킹 데이라서 (맞나) 하여간 노는 날이었다. (지금은 월요일 저녁) 밑에는 궁시렁 거려 놨지만, 주말 내내 뒹굴거리면서 잘 놀았다. 주말 동안 뭘 했냐면..

  • Up 봤다. 아 역시 재밌어 >.< 꺄
  • 무한도전 의상한 형제 편이 재밌단 말이 한RSS 에 자자하길래 (.. 내가 한국에 있을 때보다 한국 예능에 관심을 더 갖게 된 거 같다..) 1, 2편 보고 3편을 남겨두고 있는 중. 과연 잼있다 ㅋㅋㅋ
  • 일요일 밤에 급 놀러온 민재형과 유진이형이랑 넷이서 저녁 먹으려다가 현수한테 연락와서, 용진 현수 종훈이까지 일곱명이서 조선옥에서 저녁식사. 그리고 유진이형네 가서 또 몇시간동안 포커쳤다 -_-;; 아 포커가 자꾸 재밌어져 큰일났다. ㅎㅎ

그 외엔 별거 안하고 뒹굴뒹굴거리고 잠자고 놀았습니다. ㄱㅅ

18 Jan 2010

향수병

서울을 떠난지 슬슬 네 달이 되어 간다. 태어나서 서울에서 이렇게 오래 나와 있는 것이 처음이다. 인터넷에 연결된 컴퓨터만 있으면 지구 어디서 살아도 상관없을 것 같았던 나지만 종종, 아니 꽤 자주 서울이 그립다. 신촌거리 술집들, 자주 가던 밥집들. 언더우드 상 앞에서 새우깡 안주로 맥주 마실 때 불어오던 시원한 가을 바람. 강남역 바로 앞의 레비스와 계단을 올라가서 바로 있던 노래방. 안국역 뒷쪽에서 삼청동 걸어가던 골목길과 자전거 타고 퇴근하던 저녁의 탄천 길.

지난 주 내내 괜히 할일 없이 어릴적 하던 게임, 어릴적 보던 만화책을 찾아 인터넷을 뒤적거렸다. 어릴 적 하던 머드게임 매뉴얼을 보고자 하는 일념에 나우누리 동호회 자료실을 뒤지고, 찾은 hwp 2.0 과 이야기 갈무리 파일들을 열 수가 없어서 vmware 위에 윈도xp 를 깔고 다시 이야기 멀티를 까는 삽질까지 했다. 아 이런 존이 있었지. 맞아 여기에서 사냥했었지. 와 그때 만났던 이런 사람들도 있었는데. 이런 기억의 잔해를 뒤적이느라 수많은 시간을 불태우고 나서야 깨달았다. 아, 서울과, 내 과거를 그리워하고 있구나, 하고.

내 삶이 마냥 행복했던 것만은 아니다. 중2틱한 우울병에 걸려 매일매일 우울한 글만 홈페이지에 쓴 적도 있었고, 아픈 적도 있었고, 좌절한 적도 있었다. 하지만 어쨌든 난 그걸 전부다 이겨냈고, 그 모든 것을 지나보낸 덕분에 난 더 행복할 수 있었다.

여기가 내가 익숙한, 그리고 내가 행복했던 환경이 아님을 안다. 목표를 갖고 이 곳에 왔고, 적응해야 할 것이란 것을 알지만.. 언젠가 돌아가고 싶다는 생각이 벌써부터 마음속에 쉬이 사라지지 않는다.

그래도 하고 싶은 일과, 해야 할 일, 그리고 사랑하는 사람이 여기 있으니 힘내서 일어날 수 있다.

오랜만에 허세 글이다. 사실 술먹고 노래방가고 싶은 맘이 간절한데 여기선 텄고, 서울에선 알고스팟 애들이 신년회 한다니 부러워서 써봤다... 시발... ㅠㅠ

von Neumann 이 자주 하던 농담이 있다고 하는데: "뭐, 변수 네 개라고? 변수 네 개면 코끼리도 피팅할 수 있겠다! 변수 다섯 개면 코를 흔들게 할 수도 있어! With four parameters I can fit an elephant, and with five I can make him wiggle his trunk"

실제로 피팅한 용자들이 계시구려. 링크

16 Jan 2010
15 Jan 2010
14 Jan 2010
13 Jan 2010

Boosted Stumps 를 이용한 2차원 평면 상에서의 classification

(update) weighted linear regression + boosting 추가

2차원 평면에 두 종류의 점들을 늘어놓고 (여기서는 빨간점과 파란점) 이들의 좌표를 자질로 해서 점의 종류를 판별하는 문제는 여러 기계 분류 알고리즘을 설명하기 위해 자주 쓰인다. 오늘 Decision Stump 의 곱을 부스팅 하는 것에 관한 논문을 읽다가 심심한데 한번 해볼까 하고 저녁 내내 (ㅠ.ㅠ 어느덧 열한시...) 구현하였다. 일단은 가장 일반적인 additive AdaBoost 버전으로. :-)

그림은 XOR 에 해당하는 입력을 주고, 학습시킨 뒤 다시 분류 시킨 것. 동그라미들과 엑스표들은 입력 (동그라미는 제대로 분류된 것, X 는 잘못 분류된 것) 배경 색은 해당 위치에 대한 predictor 의 답을 보여준다. 물론 오버피팅 쩔긴 하지만 이 정도면 놀랍도록 잘 되는 축인 듯. :) Iteration 수는 20회.

처음엔 저번에 산 Machine Learning: An Algorithmic Perspective 를 보고 구현했는데, 설명은 참 쉽게 잘 되어 있지만 algorithmic perspective 라서 그런지 증명과 수학, rationale 얘기는 정말 하나도 없구나... -_- 그냥 아무 생각 없이 뭔지 알고 써먹기만 할 때 유용할 것 같다. 회사에서는 뽀스 아저씨의 Elements of Statistical Learning 을 빌려 보고 있는데 이거 괜찮다. 좀 마이 어렵지만... 두 권을 병행해서 보니 좀 이해가 잘 된다. (해수 참고하셈;;;)

지금까지 한번도 안 써본 matplotlib 의 인터랙티브 기능을 이용해 구현했는데 정말 편했다. 클릭할 때마다 점을 추가하고 자동 학습 + 보여주는 것을 정말 간단하게 구현할 수 있었다. 이벤트 드리븐으로 짤 수 있는데다, ipython 세션이 항상 떠 있으니 디버거가 항상 같이 떠 있는 셈. 처음에는 컬러맵 (MPL 에서 pcolor 함수) 가 지원되는 줄 모르고 pyGTK 나 tkinter 써야 하나.. 고민했는데, 그거 썼으면 하루는 꼬박 더 걸렸을 듯 싶다. MPL + NumPy + SciPy 에 대한 나의 애착은 점점 커져만 가는데;;;; 튜토리얼이라도 함 쓰고 싶지만.. 아. 나 원고해야되는데. -_-

스샷 몇개 더 + 소스코드 ...

MNIST Database : A database of handwritten images database.

System of a Down - Sugar

뭐하다가 찾아듣게 되었는지 몰라도 요 며칠간 다시 SoaD 노래를 열심히 듣고 있다. -_-; 이게 이젠 10년전 노래라니... orz

12 Jan 2010

Guestbook 2010

이 페이지를 2010년 동안 방명록으로 사용합니다. 리플로 방명록 남겨주세요.

This page will serve as a guestbook for the rest of 2010. Fire away!

Delayed parameter passing

함수에 다른 함수를 인자로 줘서 호출하게 할 때, 해당 인자의 디폴트 인자를 바꿔서 호출하게 하려면 lambda *x: myFunc(*x, keywordParam=newValue) 식으로 호출하면 된다. 근데 이러면 로그에는 weightGenerator=<function <lambda> at 0x6850938> 이런 식으로 나타나게 됨. 로그만으로 모든 것을 reproduce 할 수 있게 만든다는 목적에 어긋나게 된다.

짜증내 하다가 결국 오늘에야 짰다. ;;; ...

회사 트레이더와 QR 신입들한테 John Hull 책으로 수업할거란 소문은 들었는데... 진짜로 Hull 이 비디오 컨퍼런싱으로 강의해줄줄은 몰랐다. -_- ;

벅스 아이폰 앱을 다운받아서 써봤는데, 다 좋다 치고, 5분 지나서 오토락 되면 앱이 꺼지면서 음악이 안나온다. -_-;; 야! 난 익스체인지 서버 싱크땜에 오토락도 못끄고 아놔..

11 Jan 2010

주말

  • 금요일에 만화책을 수십권 다운받아서 주말 동안 만화책을 서른 권은 읽은 듯. 대부분 옛날에 읽었던 것들의 정주행이었지만... 덕분에 아무것도 못했다. 나도 이렇게 procrastination 에 제압당할 때가 종종 있다. -_-
  • 토요일에는 쇼핑. 둘 다 겨울옷을 좀 샀다.
  • 일요일에는 늦잠자고 일어나서, 키요토랑 유진이형이랑 H마트 갔다왔다. 둘을 저녁에 불러서 갈비찜해서 맥임. 난 옆에서 도와주기만 했는데 기진맥진. 힘들구낭.. ㅠ

자야지 orz