본문 바로가기

오픈소스/mahout

Mahout란 무엇에다 쓰는 물건인고?

 저의 최대의 관심사는 현재는 데이터 마이닝을 통한 정보검색을 하는 것인데요, 가장 관심이 가는 아파치 프로젝트는 단연 마하우트(Mahout)입니다.

Mahout?
A Mahout is a person who drives an elephant
(hint: Hadoop's logo is an elephant.)

즉, 코끼리를 다루는 사람이라는 의미입니다. 로고는 여기서 다운로드 받을 수 있는데요 로고를 잘 보시면, 코끼리를 타고 있는 사람이 보이실 겁니다. 물론 코끼리를 다루는 사람이라고 해서 하둡을 대상으로 보다 상위에 있는 프로젝트는 아니라고 얘기하고 있습니다. 제 개인적인 생각으로는 하둡위에서 보다 더 고차원적인(?) 일을 하는 사람이라는 생각이 살짝 들었습니다. ^^

이리저리 사이트를 둘러보면서 정리해보려고 했지만, 생각보다 정리하기가 쉽지 않더군요 그래서 일단 마하우트 위키페이지에서 하나씩 그냥 심심풀이로 읽어보기로 했습니다. 처음에는 막막하더니 조금씩 읽어가다보니 조금씩 정리가 되는 것 같습니다.

우선, 마하우트가 왜 생겼는지에 대한 페이지를 둘러보았습니다.

확장성이 있으면서도 병렬처리가 가능한 기계학습 라이브러리를 만들기 위함입니다.

과거에는 기계학습이라 하는 분야 또는 학문영역 자체가 지금 만큼 넓지 않았으며, (물론, 지금도 아주 popular한 영역은 아닌 것 같습니다) 그러한 프로젝트를 실행하는 것이 잘 공개되지 않았던 것 같습니다.

우선은 공개되지 않은 상태에서 연구가 이루어지고, 내부적인 용도로 어느정도 사용되다가, 펀딩받은 돈이 다하면, 그대로 사장되거나 사라지는 형태로 말이지요...

그리고 최근 이슈화 되고 있는 대용량 처리를 위한 고려가되지 않았다는 점입니다. 수많은 로그와 대용량의 학습데이터를 통해서 학습하는 것 자체가 하나의 장비 내에서 할 수 있는 한계가 있기 떄문이었습니다.

이러한 여러가지 이유로 인해서, 시도하지 못했던 기계학습 라이브러리를 아파치 라이센스를 기반으로 잘 문서화된 그리고 충분히 확장성이 있으면서도 상업적으로도 활용가능하도록 만드는 것이 이 마하우트 프로젝트의 목적이라고 볼 수 있겠습니다. 물론 하둡이라는 프레임워크 위에서 말이지요..

그러기 위해서는 아래와 같은 여러가지 기본적인 기계학습 알고리즘이 필요할텐데요.. 아래와 같은 어디선가 한번쯤은 보았을법 한 알고리즘들입니다.

  1. Naive Bayes
  2. Neural Networks
  3. Support Vector Machines
  4. Logistic Regression
  5. Locally Weighted Linear Regression
  6. k-Means
  7. Principal Components Analysis
  8. Independent Component Analysis
  9. Expectation Maximization
  10. Gaussian Discriminative Analysis

모두 하나 하나가 복잡한 알고리즘들이라, 구체적인 내용은 기계학습 또는 데이터마이닝 관련 서적을 참고하셔야 할 듯 합니다. :-)

그리고 Mahout 프로젝트의 시발점이되는 논문이 하나 있는데, Map-Reduce for Machine Learning on Multicore 라는 논문입니다. (읽어보려고 무던히 노력은 했으나 여전히 이해하기 너무 너무 어렵더군요... 쩌비)
마하우트의 개발의 시작도 루씬을 개발했던 개발자들 가운데 기계학습에 관심이 있는 세 명이 시작했다는 군요, 또한 태생이 그러하듯이 여러 아파치 프로젝트와 종속성(?) 또는 관련이 있습니다.
  1. hadoop Apache license - 분산저장소 + 분산처리
  2. lucene Apache license (maybe) - 검색엔진
  3. UIMA (maybe) - 정보추출 or 분석
  4. PIG (maybe) - 데이터분석용 질의어
  5. common-math (maybe) - 수학, 통계

https://svn.apache.org/repos/asf/lucene/mahout/ 현재 최신 소스를 확인할 수 있습니다. 물론 다운로드 하여 로컬에서 실험할 수도 있고요..

이슈트래킹은 JIRA Mahout (mahout) 을 통해서 하고 있습니다. 현재도 많은 이슈들이  진행중이네요, 하지만 Neural Network에 대한 것은 아직 open일 뿐 진행중이지 않네요.. 털썩

초기 Founder 또는 Committers 입니다. 이름을 보면 많이 보던 이름이 하나 보입니다. Erik Hatcher 이 사람은 Lucene in Action 의 저자이기도 합니다. 그리고 Gran Ingersoll 이 사람은 현재 wiki 주소의 도메인과 동일하군요.... 시간 날 때에 관련 분들의 블로그나 홈페이지를 한번씩 찾아가 보는 것도 재미있을 것 같습니다.
  1. Dawid Weiss (in particular the bits about clustering)
  2. Erik Hatcher
  3. Grant Ingersoll (Homepage, Blog)
  4. Isabel Drost (apache_mahout@isabel-drost.de)
  5. Karl Wettin
  6. Otis Gospodnetic
  7. Niranjan Balasubramanian
  8. Ozgur Yilmazel

This article was written in springnote.