3월, 2018의 게시물 표시

영화 'Call me by your name'의 OST 중 'Visions of Gideons' 번역 및 해석

이미지
[주의] 영화의 마지막 장면을 가지고 쓴 글입니다. 영화를 안 보신 분 중 스포일러를 당하기 싫으시다면 '뒤로가기'를 눌러주세요. 얼마전 분수에 넘치게 'Call me by your name' 이란 영화를 정식 개봉전(!!)에 볼수있는 기회를 얻었다. 원작소설과는 다르게 현재진행형으로, 그리고 오직 영상미만 가지고 이야기를 풀어나가서 더 좋았다. 아, 그렇다고 원작소설에서 'Elio'가 1인칭 주인공시점으로 말하는게 재미없었다는건 아니다.  Call me by your name (2017), Luca Guadagnino 필자가 영화를 정정당당하게 봤음을 보여주는 사진 다른 영화같았으면 OST 가사가지고 포스팅 '씩이나' 쓰는 정성을 들이진 않았겠지만, 영화의 마지막 장면이 나에게 굉장한 임팩트로 다가왔기 때문에 몇글자 적어본다. Call me by your name (2017), Last scene Elio가 Oliver의 결혼 소식을 듣고 벽난로 앞에 앉아서 타오르는 불을 바라보며 기기묘묘한 표정을 짓는데, 이게 Sufjan Stevens(수프얀 스티븐스)의 'Visions of Gideons'와 맞물려서  감동의 쓰나미로 내 마음을 강타해 버렸다. 참고로, 'Visions of Gideons'는 있던 노래를 영화에 붙인게 아니라, Sufjan Stevens가 영화를 위해서 쓴 곡이다[4]. Lyrics of 'Visions of Gideons' I have loved you for the last time Is it a video? Is it a video? I have touched you for the last time Is it a video? Is it a video? For the love, for laughter, I flew up to your arms Is it a video

선형대수와 군

이번학기 현대대수 과목에서 부교재로 주어진 책이다. 처음에는 주교재만 열심히 보려고 했는데 선형대수를 다 까먹어서 진도를 1도 못나가게 되는 상황에 처해버린 것이다. 그래서 이 책을 Friedberg, David의 Linear Algebra 책과 같이 보려고 한다. 다른 책들은 딱딱해서 읽다가 조금씩 지치는데 이 책은 교수님이 유머를 섞어서 써놓으셨기 때문에 읽는데 재미있다. 그리고, 가끔씩(...) 던지는 연습문제들도 괜찮은 것 같다.  단, 어려운 개념을 갑가지 돌직구로 던진다던지, 2015년 개정판에서까지 국한혼용(...한자 6급한테)을 유지한다던지, 추상대수에서나 나오는 개념이나 notation을 써서 설명을 한다던지(책 이름이 선형대수와 군이니까...... 이 점은 이해 해야겠다.), 이북을 팔지 않아서 팔아프게 들고다녀야한다던지 하는 단점이 있다. 책이 하드커버인데다가 조금 두께가 있어서 스캔업체에다가 맡길까 생각중인데, 종이책을 날릴까 무서워서 고민중이다.

Linux에서 특정한 디렉토리가 차지하는 용량을 효율적이고, 빠르게 계산하는 법(Fast, efficient way to calculate directory size recursively on linux)

이미지
[주의] 아직 업데이트 중인 글입니다. Standard unix command 중에서 '특정 directory와 하위 파일들이 파일시스템에서 차지하는 용량의 총합'을 알아낼 수 있는 가장 대표적인 방법으로 'du -s' ~ 'du --max-depth=0'가 있다. du command는 glibc의 fts를 이용하여 file system hierarchy를 (default)preorder로 recursive하게 traversing하여 모든 파일/디렉토리에 대하여 stat system call을 호출한다. 더 자세한 구현 내용은 Unix 'coreutils' repository의 'du.c'를 읽어보면 되겠다. (사실상 위의 두줄이 전부다.) glibc의 fts module implementation을 읽어보지 않아서, 실제로 directory tree traversing이 recursive하게 이루어지는지를 알 수는 없다. (설마?) 만약, 그렇다면 pre-order traversing 을iterative하게 바꾸면 속도가 좀 빨라지긴 할 것이다 .일단 이건 논외로 하고(...) 다른 대책으로는 다음과 같은 해결방법들이 있을 수 있다. 해결방법(?) (1) 모든 subdirectory들을 recursive하게 방문하면서 계산한다. (2) file과 관련된 system call이 일어날 때마다 어딘가에 subdirectory summarized size를 caching 한다. (장난하냐?) File system '전체'의 free space에 대한 정보는 file system header에 operation이 일어날 때마다 항상 업데이트되기 때문에 df command로 (2)가 가능하지만, single directory에서는 이게 안된다(꼼수가 있긴 한데, 나중에 실험해보고 업데이트 해야겠다.) 젠장! 그런데 내가(혹은 독자가) 이 문제를 왜 고민하고 있는가? 바

HIF(Hybrid Isolation Forest)

이미지
Motivation(TL;DR)   요즘 데이터에서 Feature Extraction을(Dimension Reduction)한 후, Clustering하는 일을 하고 있다. 아직 데이터의 물리적인 특성을 완벽하게 이해하지 못해서 그 원인이 무엇인지는 모르겠지만, abnormal하게 보이는 데이터들이 가끔씩 눈에 띈다.   당연하게도, 이런 outlier들이 clustering의 결과를 심각하게 왜곡시킬 수 있는 가능성이 있어서 제거를 해야 되는데...... 학부때 배운 알고리즘은 너무 Naive한 것들인 것 같아 여러가지 outlier detection 방법론을 공부하는 중이다.   내가 분석하고 있는 데이터는 Non-Gaussian, High Dimensional, Assumed to be Multi-class Data 이다. 이 데이터에 Model-based Outlier Detection 방법론을 적용한 알고리즘을 썼더니 결과가 썩 마음에 들지 않아 대안을 찾아다니다가 IF를 발견하게 되었는데, 꽤나 괜찮은 결과를 얻었다. 공부도 할겸, 인터넷을 돌아다니다가 논문말고는 적당한 글이 없어서 공부 겸해서 나름대로 다른 알고리즘과의 분석도 곁들여봤다. IF(Isolation Forest)   * 논문에서는 'anomalies'를 썼지만, 더 범용적으로 쓰이는  'outlier'를  쓰도록 하겠다.   IF는 꽤나(...) 최근인 2008년에 제안되었다. 현재 널리 쓰이고 있는 model based outlier detection에서는 normal sample에 대한 모델을 만들고(profiling), 그에 따라 분류를 한다. IF에서는 기존과는 다른 방법으로 outlier를 찾는데, outlier를 말 그대로 "isolation" 시키는 방법이다. 논문[Ref 1] 에서는 outlier가 "few and different" 한 특성을 지닌 것이라고 가정하고, 데이터를 rando

Outlier Detection in High Dimensional Space

이미지
[Warning] 이 글은 공부 목적으로 계속 업데이트 되는 글임을 밝힙니다. Motivation   어떤 Feature Extraction 알고리즘을 이용하여 어떤 Time Series Data(Constant Length)를 Dimension Reduction한 High-Dimensional Feature (N >= 10)로부터 out-lier를 제거하려고 한다. Extracted Feature에 Clustering 알고리즘을 이용하여 유의미한 군을 찾아내는 작업을 해야되는데, outlier가 Clustering 결과에 악영향을 미칠것이 뻔하기 때문에 제거되는 데이터가 non-outlier라고 해도 제거하는 것이 성능향상을 위해서 맞는 선택일 것이다. * Fluctuation(Noise)이 '상대적'으로 심한 Signal도 걸러내주는 효과가 있을 것이라고 예상하고 있다. 사실 이건, sampling한 time series들의 noise level이 모든 동일할 것이라고 가정했을 때 Out-lier Detection, Clustering 방법론을 나누는 기준은 Survey Article마다 기준이 달라서 몇개를 참조한 뒤에 적어보도록 하겠다. PCA, ICA 알고리즘 같은 경우에는 Variance Percentage를 이용하여 Latent Vector Space의 Dimension size를 결정할 수 있는데, 비선형 계열의 알고리즘(t-SNE, AutoEncoder, KernelPCA)는 Reduction Hyperparameter를 어떻게 결정해야 할 지 의문이다. (1) Domain-Expert의 도움을 받아서 Cluster개수를 정한다. Pros - 숨겨져 있는 클러스터를 찾지 못할 가능성이 크다. Cons - 특정한 병변, 조직에서 예상되는 클러스터 별 효과를 볼 수 있다. (2) 어떤 특정한 Data-Specific Similarity Measure를 이용해서 (클러스터 내부 sample들