20150503

1. C++로 CSV parser 만들기
캐시 접근 패턴을 분석 중인데, 캐시 접근 기록을 파이썬으로 분석하려니 시간이 오래 걸렸다. 단순 조건 추출, 정렬은 쉬웠으나, 특별한 조건에 맞는 캐시 접근 기록을 추출하는 것은 힘들었다. 조금 더 빠른 처리가 필요했고, C++로 캐시 접근 패턴을 분석하고 싶었다. C++로 분석하려면 우선 CSV parser가 필요해서 만들어 봄. 몇 가지 중요한 점만 기록하면 다음과 같다.
– libboost를 CSV parsing에 사용하면 엄청 느리다. 그냥 단순히 C++만 사용한 것에 비해 9~10배 정도 느리다. 파이썬으로 짠 것보다 느리다.
– getline 함수를 사용해 단순하게 CSV parsing을 할 수 있다.
코드의 구조는 아래와 같다.

while(getline(ifs, line))
  csv_data += line + ",";

istringstream buffer(csv_data);
while(getline(buffer, token, ','))
{
switch...case...
}

2. Artificial Intelligence and Machine Learning
– 고차원 데이터를 낮은 차원에서 다뤄야 하는 일이 많다 (manifold).
– Principal Components Analysis는 d-차원의 데이터를 더 낮은 차원으로 투영하는 것.
– d-차원 데이터 X 중에 서로 독립이면서 원래의 데이터를 복원할 수 있는 m-차원을 추출하고자 한다.
– m개의 벡터로 이루어진 최적의 basis를 선택하는 것.
– 분산이 최대가 되는 방향으로 서로 수직인 m개의 축을 선택한다.
– PCA를 사용해 handwritten digit을 인식할 수도 있다. 더 적은 수의 eigenvector를 사용하는 것이 중요한 특징을 포착해낼 수 있으므로 숫자를 더 잘 인식할 수 있다.
– SVD를 사용해 PCA를 수행할 수도 있다.

Advertisements
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,610 hits
%d bloggers like this: