본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

'머신러닝 활용을 더 쉽게' 오픈소스 툴 11선

OSS 게시글 작성 시각 2017-10-12 08:33:32 게시글 조회수 5554

2017년 9월 28일 (목)

ⓒ CIO Korea, Christina Mercer | Computerworld UK


스팸 필터링, 안면 인식, 추천 엔진 등, 방대한 분량의 데이터 셋을 상대로 예측 분석이나 패턴 인식을 하고자 한다면 머신러닝만한 방법이 없다. 무료 오픈소스 소프트웨어가 많아지면서 단일 기기 및 여러 대의 기기에, 널리 쓰이는 프로그래밍 언어로 확장하여 머신러닝을 활용하기가 훨씬 쉬워졌다. 오늘 소개할 11가지 오픈소스 툴은 파이썬, R, C++, 자바, 스칼라, 클로쥬어, 자바스크립트, 고 등의 라이브러리를 포함하고 있다.



사이킷-런(Scikit-learn)

파이썬은 쉽게 구축할 수 있고 광범위하게 적용할 수 있는 라이브러리 덕분에 수학, 과학, 통계학 등의 분야에서 프로그래밍 언어로 자주 이용된다. 사이킷 런은 넘피(NumPy,) 사이파이(SciPy), 그리고 매트플롯립(Matplotlib) 등 기존의 파이썬 패키지들을 활용하여 파이썬의 넓은 적용 범위를 수학 및 과학 작업에 적용한다. 그 결과 탄생한 라이브러리는 인터랙티브한 워크벤치(workbench) 애플리케이션에 활용되거나 다른 소프트웨어에 내장되어 재활용된다. 이 키트는 BSD 라이선스 하에 이용 가능하므로 완전히 개방돼 있으며 재사용할 수 있다.

프로젝트: scikit-learn
깃허브: https://github.com/scikit-learn/scikit-learn


쇼군(Shogun)

칭찬해 마땅한 이 오픈소스 툴은 1999년 처음 세상에 나왔으며 C++ 언어로 개발됐으나 자바, 파이썬, C#, 루비, R, 루아, 옥타브, 매트랩 등 다양한 언어에서 사용할 수 있다. 가장 최신 버전인 6.0.0 버전은 마이크로소프트 윈도우와 스칼라 언어에 대한 지원까지 추가했다.

널리 쓰이는 유명한 툴이긴 하지만 경쟁자가 없지는 않다. 또 다른 C++ 기반의 머신러닝 라이브러리인 Mlpack은 2011년 처음 알려졌지만 경쟁 라이브러리들보다 더 빠르고 (더 많은 통합 API 셋 덕분에) 작업이 쉽다고 알려졌다.

프로젝트: Shogun
깃허브: https://github.com/shogun-toolbox/shogun


어코드닷넷 프레임워크(Accord.Net Framework)

머신러닝 및 닷넷의 시그널 프로세싱 프레임워크인 ‘어코드(Accord)’는 같은 맥락의 이전 프로젝트였던 AForge.net의 확장이다. 어코드는 오디오 시그널 및 (비디오와 같은) 이미지 스트리밍을 프로세싱할 수 있는 라이브러리들을 포함하고 있다. 또한 어코드의 비전 프로세싱 알고리즘은 안면인식, 이미지 조합 및 움직이는 물체의 포착 등의 작업에 이용될 수 있다.

어코드는 신경망이나 의사결정 나무(decision-tree) 시스템 등 보다 전통적인 머신러닝 기능을 제공하는 라이브러리도 갖추고 있다.

프로젝트: Accord Framework/AForge.net
깃허브: https://github.com/accord-net/framework/


아파치 머하웃(Apache Mahout)
아파치 머하웃은 오랫동안 하둡에 묶여있었지만 머하웃의 범주 안에 포함되는 많은 알고리즘은 하둡과 별개로 구동될 수 있다. 이들은 특히 궁극적으로 하둡으로 이전될 독립적 애플리케이션, 또는 각자 자체적 애플리케이션에서 분리된 하둡 프로젝트에 유용하게 사용될 수 있다. 최근 버전들은 고성능 스파크 프레임워크 지원 등을 강조했으며 GPU 가속화된 선형 대수학을 위한 ViennaCL 라이브러리에 대한 지원을 추가했다.

프로젝트: Mahout


스파크 MLlib(Spark MLlib)


아파치 스파크 및 아파치 하둡, MLlib 등의 머신러닝 라이브러리는 빠르면서 확장성을 보장하는 공통적 알고리즘 및 유용한 데이터 타입을 자랑한다. MLlib의 일차적인 언어는 자바지만 파이썬 사용자들도 MLlib와 넘피 라이브러리를 연결할 수 있으며 스칼라 사용자들 역시 MLlib에 코드를 쓸 수 있다. 또한 R 사용자들도 버전 1.5부터는 스파크를 이용할 수 있게 됐다.

또 다른 프로젝트인 MLbase 는 MLlib를 응용하여 결과 도출을 더욱 용이하게 만들었다. 코드를 쓰는 대신 SQL 등 선언형 언어를 사용하여 쿼리를 생성할 수 있다.

프로젝트: MLlib


H2O

H2O의 알고리즘은 비즈니스 프로세스를 위해 맞춰져 있다. 즉 이미지 분석과 같은 기능보다는 부정부패 및 트렌드 예측 등에 초점이 맞추어져 있다는 뜻이다. H2O는 HDFS 스토어 외에도 YARN, 맵리듀스 등과 독립적으로 상호작용할 수 있으며 아마존 EC2 인스턴스와도 직접적인 상호작용이 가능하다. 하둡 메이븐스(Hadoop mavens)는 자바를 통해 H2O와 상호작용할 수 있지만, H2O는 그 외에도 파이썬, R, 스칼라 등의 언어에 대한 상호작용도 지원하므로 이러한 플랫폼의 라이브러리들도 십분 활용할 수 있게 된다.

프로젝트: H20
깃허브: https://github.com/0xdata/h2o


클라우데라 오릭스(Cloudera Oryx)

클라우데라 하둡 배포판 덕분에 오릭스는 스파크와 카프카 스트림 프로세싱 프레임워크를 사용해 실시간 데이터에 대한 머신러닝 모델을 구동할 수 있게 됐다. 오릭스는 추천 엔진이나 실시간 이상 징후 포착 등 과거 데이터 및 새로운 데이터에 기반을 둬 순간적인 결정을 요구하는 프로젝트에 적합하다. 버전 2.0은 특히 오릭스 프로젝트를 거의 새롭게 재탄생 시켰다 해도 과언이 아닌데, 모든 요소가 람다 아키텍처(lambda architecture)와 결부되어 있다. 새로운 알고리즘 및 이러한 알고리즘들을 위한 (하이퍼패러미터 셀렉션과 같은) 새로운 추상화 작업들을 언제든 새롭게 추가할 수 있다.

프로젝트: Cloudera Oryx
깃허브: https://github.com/cloudera/oryx


고런(GoLearn)

개발자 스테판 위트워스에 따르면, 구글의 고 언어를 위한 머신러닝 라이브러리인 고런은 단순함과 커스터마이징이라는 두 가지 목표로 만들어 졌다. 실제로 고런의 라이브러리가 데이터를 다루고 로드하는 방식은 사이파이(SciPy) 및 R에서 따 왔으며 매우 단순하다. 또한 우리는 애플리케이션에서 데이터 구조가 손쉽게 확장될 수 있다는 부분에서 고런의 커스터마이징 가능성을 엿볼 수 있다. 위터워스는 쇼군의 라이브러리들 중 하나인 보우팔 웨빗 라이브러리(Vowpal Wabbit library)를 위한 고래퍼(Go wrapper) 를 만들기도 했다.

프로젝트: GoLearn
깃허브: https://github.com/sjwhitworth/golearn


웨카(Weka)

웨카는 데이터 마이닝을 목적으로 엔지니어링 된 머신러닝 알고리즘이다. 이 GNU GPLv3-라이선스 컬렉션은 공식적, 비공식 패키지를 이용 가능한 상태에서 그 기능성을 확장할 수 있는 패키지 시스템을 갖추었다. 웨카는 심지어 소프트웨어 및 사용된 기술에 대한 설명 책자까지 제공한다.

웨카가 특별히 하둡 사용자들을 대상으로 한 것은 아니었지만 최근 버전들은 일련의 래퍼 덕분에 하둡에서도 이용할 수 있다. 단 웨카는 스파크를 지원하지 않으며 맵리듀스만을 지원한다. 클로쥬어 사용자들은 Clj-ml 라이브러리를 통해 웨카를 사용할 수 있다.

프로젝트: Weka


Deeplearn.js

웹 브라우저 딥 러닝을 위한 또 다른 프로젝트로 구글의 Deeplearn.js가 있다. 신경망 모델은 부가적인 클라이언트 측면의 소프트웨어 없이도 모든 브라우저에서 바로 교육할 수 있다. Deeplearn.js는 또한 WebGL API를 통해 시스템 CPU에 한정되지 않고도 GPU-가속화된 컴퓨티에션을 수행할 수 있다. Deeplearn.js 프로젝트의 기능들은 구글의 텐서플로에서 따 온 것으로 프로젝트 사용자들이 손쉽게 프로젝트를 시작할 수 있도록 하였다.

프로젝트: Deeplearn.js


ConvNetJS

이름에서 알 수 있듯 ConvNetJS는 신경망 머신러닝을 위한 자바스크립트 라이브러리이다. ConvNetJS는 데이터 워크벤치로써 브라우저 사용을 용이하게 한다. Node.js를 사용하는 사용자들의 경우 NPM 버전도 사용할 수 있다. ConvNetJS 라이브러리는 자바 스크립트의 비동사성(asynchronicity)을 십분 활용할 수 있도록 고안되었다. 예를 들어 교육 오퍼레이션이 끝나면 실행을 명령하는 콜백을 받을 수 있다. 또한 다양한 데모 예시들도 포함돼 있다.

프로젝트: ConvNetJS
깃허브: https://github.com/karpathy/convnetjs



※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지



[원문출처 : http://www.ciokorea.com/slideshow/35812]

맨 위로
맨 위로