The first tutorial
전에 언급한대로 Kaggle 의 First steps with Julia 대회의 튜토리얼 중 첫 번째를 따라가 보았다. 줄리아의 기본적인 사용방법이라고 했지만, 기본 문법 설명같은건 없다. 예제 코드 놓고 짧고 불충분한 설명만 하고 넘어가는 식이라서 octave, matlab, R, ipython+numpy 등의 환경에 경험이 없는 사람이라면 매우 불친절하다고 짜증을 느낄 것 같다. 반대로 조금이라도 저런 환경에서 작업한 적이 있는 사람에게는 아주 짧고 간결한(그리고 내용도 별로 없는) 튜토리얼일 듯.
전체 흐름은 1. Load the data, 2. Fit, 3. Predict, 4. CV 를 짧은 예제 코드와 함께 설명하고, submission 할 수 있는 파일을 생성한다.
IPython 이라고 치면 MLDSS 스터디에서 흔히 언급하는 Import (Pandas, Sklearn), Fit, Predict 콤보의 예제를 보여준 정도이다.
데이터는 이미지 파일 묶음인데 다운로드 받은 압축파일 중 같은 크기의 Grayscale로 변환된 이미지를 가진 것이 있다. 이 이미지를 읽어 reshape 하여 row vector 로 만드는 작업을 N 번 반복하면 여러개의 이미지를 행렬로 표현할 수 가 있다. 이렇게 이미지 정보를 행렬로 로딩하고 RandomForest 로 학습 및 예측을 한다. 튜토리얼에 있는 코드를 그대로 돌리면 0.42 정도가 나오고, 실제로 리더보드에 Julia Random Forest Benchmark 0.42932
이런 항목이 있다. 내가 그대로 돌려서 생성한 결과를 제출했을 때에는 0.4280124 이 나왔다.
일단 이 코드는 그대로 놓고 모델 파라미터만 몇개 바꾸어 보니 0.46204 이 금방 나왔다.
Your Best Entry
Top Ten!
You made the top ten by improving your score by 0.03403.
이제 막 시작해서 TopTen 이다. 밀리기 전에 캡쳐. … 가 무슨 의미가 있나. ㅠㅜ
The second tutorial
그리고 두 번째 튜토리얼도 따라가 보았다. 위 DecisionTree 를 가져다 쓴 부분을 그냥 커스텀 KNN 으로 해보는 것. 구현 자체는 매우 자명하고 줄리아 문법 자체도 그렇게 특이한 건 없어서(좀 빡치는건 있다) 무난하게 따라갈 수 있다.
KNN 과는 상관 없지만 중간에 몇몇 구절만 인용해 보았다.
- iteration over columns is faster in Julia than iteration over rows: matrix 의 메모리를 어떻게 잡았는지 추측할 수 있다.
- for loops can be faster than vectorized operations: JIT 덕분인가?
- Index start at 1: 뭐 행렬에 접근하는 인덱스는 이쪽이 자연스럽다고 생각할 수 있을지도
줄리아 코드는 다소 번거롭다. 코드가 긴 것과는 조금 다른 느낌인데… 줄리아로 파이썬만큼 짧은 코드를 만들 수는 있는 것 같은데, 기본 라이브러리 레이어의 체계가 부족하다. 라이브러리 레퍼런스를 자주 뒤적여보게 하는 설계랄까? 한문 같은 느낌? 짧고 압축적이긴 한데 외울게 좀 많다.
Parallelization 은 비교적 쉽게 되어서 이건 좀 마음에 든다.
… 어쨌든 한줄요약: Matlab이 애들 다 버려놓음
Beyond tutorial
튜토리얼만 따라가서 뭐 하겠나.
현재 리더보드 1위 스코어는 0.68848. 튜토리얼대로 해서 나오는 스코어는 고작 0.42~0.43 정도다. 줄리아건 뭐건 스코어를 높여 보자. 지금까지 배운 얼마 안되는 지식이라도 총 동원해보자. 결과야 어떻건 간에 이런 시도는 retrieval test 와 비슷한 효과로 내 머리속의 시냅스 연결을 강화시켜 주 … orz
일단 튜토리얼 따라밟기는 여기까지. 계속 시도는 해 볼건데 Julia 로 할지 Python 으로 할 지는 모르겠다.
Comments