머신 러닝을 최대한 활용할 수있는 14 가지 오픈 소스 도구

스팸 필터링, 얼굴 인식, 추천 엔진 — 예측 분석 또는 패턴 인식을 수행하려는 대용량 데이터 세트가있는 경우 머신 러닝이 적합합니다. 무료 오픈 소스 소프트웨어의 확산으로 인해 머신 러닝은 단일 머신에서 대규모로 그리고 가장 널리 사용되는 프로그래밍 언어로 구현하기가 더 쉬워졌습니다. 이러한 오픈 소스 도구에는 Python, R, C ++, Java, Scala, Clojure, JavaScript 및 Go와 같은 라이브러리가 포함됩니다.

Apache Mahout

Apache Mahout은 수요를 충족하기 위해 빠르고 효율적으로 확장 할 수있는 기계 학습 애플리케이션 호스팅을위한 환경을 구축하는 방법을 제공합니다. Mahout은 주로 다른 잘 알려진 Apache 프로젝트 인 Spark와 함께 작동하며 원래 분산 애플리케이션을 실행하기 위해 Hadoop과 함께 작동하도록 고안되었지만 Flink 및 H2O와 같은 다른 분산 백엔드와 함께 작동하도록 확장되었습니다.

Mahout은 Scala에서 도메인 특정 언어를 사용합니다. 버전 0.14는 Apache Spark 2.4.3을 기본값으로 기반으로하는 프로젝트의 주요 내부 리팩터링입니다.

짓다

Innovation Labs의 Compose는 기계 학습 모델의 일반적인 문제를 대상으로합니다. 즉, 느리고 지루한 프로세스 일 수 있지만 기계 학습 모델이 유용한 결과를 제공 할 수없는 원시 데이터에 레이블을 지정하는 것입니다. Compose를 사용하면 데이터에 대한 레이블 지정 함수 세트를 Python으로 작성할 수 있으므로 레이블 지정은 가능한 한 프로그래밍 방식으로 수행 할 수 있습니다. 데이터에 다양한 변환 및 임계 값을 설정하여 불연속 값 또는 분위수를 기반으로 빈에 데이터를 배치하는 것과 같이 레이블 지정 프로세스를 더 쉽게 만들 수 있습니다.

핵심 ML 도구

Apple의 Core ML 프레임 워크를 사용하면 기계 학습 모델을 앱에 통합 할 수 있지만 고유 한 학습 모델 형식을 사용합니다. 좋은 소식은 모델을 사용하기 위해 Core ML 형식으로 모델을 사전 학습 할 필요가 없다는 것입니다. 일반적으로 사용되는 거의 모든 기계 학습 프레임 워크에서 Core ML 도구를 사용하여 모델을 Core ML로 변환 할 수 있습니다.

Core ML Tools는 Python 패키지로 실행되므로 다양한 Python 기계 학습 라이브러리 및 도구와 통합됩니다. TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM 및 XGBoost의 모델은 모두 변환 할 수 있습니다. 신경망 모델은 훈련 후 양자화를 사용하여 크기에 맞게 최적화 할 수도 있습니다 (예 : 여전히 정확한 작은 비트 깊이까지).

피질

Cortex는 Python 및 TensorFlow, PyTorch, Scikit-learn 및 기타 모델을 사용하여 기계 학습 모델에서 예측을 제공하는 편리한 방법을 제공합니다. 대부분의 Cortex 패키지는 핵심 Python 로직, 사용할 모델 및 할당 할 컴퓨팅 리소스 종류를 설명하는 cortex.yaml 파일, 필요한 Python 요구 사항을 설치하기위한 requirements.txt 파일 등 몇 개의 파일로만 구성됩니다. 전체 패키지는 AWS 또는 다른 Docker 호환 호스팅 시스템에 Docker 컨테이너로 배포됩니다. 컴퓨팅 리소스는 Kubernetes에서 사용되는 정의를 동일하게 반영하는 방식으로 할당되며 GPU 또는 Amazon Inferentia ASIC를 사용하여 제공 속도를 높일 수 있습니다.

기능 도구

기능 엔지니어링 또는 기능 생성에는 기계 학습 모델을 학습하는 데 사용되는 데이터를 가져와 일반적으로 모델 학습을 위해 더 유용한 변환 및 집계 된 데이터 버전을 손으로 생성하는 작업이 포함됩니다. Featuretools는 데이터 프레임에서 데이터를 합성하여 빌드 된 고수준 Python 객체를 통해이를 수행하는 기능을 제공하며 하나 또는 여러 데이터 프레임에서 추출 된 데이터에 대해이를 수행 할 수 있습니다. Featuretools는 또한 합성 작업을위한 공통 프리미티브를 제공하므로 (예 : time_since_previous타임 스탬프가있는 데이터의 인스턴스간에 경과 된 시간을 제공하기 위해) 직접 롤링 할 필요가 없습니다.

GoLearn

개발자 Stephen Whitworth에 따르면 Google의 Go 언어를위한 기계 학습 라이브러리 인 GoLearn은 단순성과 사용자 지정 가능성이라는 두 가지 목표로 만들어졌습니다. 단순성은 데이터가 라이브러리에서로드되고 처리되는 방식에 있으며, 이는 SciPy 및 R 이후 패턴 화됩니다. 사용자 정의 가능성은 일부 데이터 구조를 애플리케이션에서 쉽게 확장 할 수있는 방법에 있습니다. Whitworth는 Shogun 도구 상자에있는 라이브러리 중 하나 인 Vowpal Wabbit 라이브러리 용 Go 래퍼도 만들었습니다.

Gradio

기계 학습 애플리케이션을 빌드 할 때 공통적으로 발생하는 문제 중 하나는 모델 학습 및 예측 제공 메커니즘을위한 강력하고 쉽게 사용자 정의 된 UI를 빌드하는 것입니다. Gradio는 실시간으로 모델과 상호 작용할 수있는 웹 기반 UI를 만드는 도구를 제공합니다. Inception V3 이미지 분류 자 ​​또는 MNIST 필기 인식 모델에 대한 입력 인터페이스와 같은 몇 가지 포함 된 샘플 프로젝트는 자신의 프로젝트에서 Gradio를 사용하는 방법에 대한 아이디어를 제공합니다.

H2O

현재 세 번째 주요 개정판 인 H2O는 학습에서 예측 제공에 이르기까지 인 메모리 머신 러닝을위한 전체 플랫폼을 제공합니다. H2O의 알고리즘은 예를 들어 이미지 분석이 아니라 비즈니스 프로세스 (예 : 사기 또는 추세 예측)에 맞춰져 있습니다. H2O는 YARN 위에, MapReduce에서 또는 Amazon EC2 인스턴스에서 직접 HDFS 스토어와 독립 실행 형 방식으로 상호 작용할 수 있습니다.

Hadoop 전문가는 Java를 사용하여 H2O와 상호 작용할 수 있지만 프레임 워크는 Python, R 및 Scala에 대한 바인딩도 제공하므로 해당 플랫폼에서 사용 가능한 모든 라이브러리와 상호 작용할 수도 있습니다. H2O를 대부분의 파이프 라인에 통합하는 방법으로 REST 호출로 대체 할 수도 있습니다.

오릭스

Cloudera Hadoop 배포판을 만든 Oryx는 Apache Spark 및 Apache Kafka를 사용하여 실시간 데이터에서 기계 학습 모델을 실행합니다. Oryx는 추천 엔진 또는 실시간 이상 탐지와 같이 새로운 데이터와 과거 데이터 모두에 의해 정보를받는 순간 결정이 필요한 프로젝트를 구축하는 방법을 제공합니다. 버전 2.0은 람다 아키텍처에서 구성 요소가 느슨하게 결합 된 프로젝트의 거의 완전한 재 설계입니다. 새로운 알고리즘 및 이러한 알고리즘에 대한 새로운 추상화 (예 : 하이퍼 파라미터 선택)는 언제든지 추가 할 수 있습니다.

PyTorch 번개

강력한 프로젝트가 인기를 얻으면 사용하기 쉽게 만들어주는 타사 프로젝트로 보완되는 경우가 많습니다. PyTorch Lightning은 PyTorch에 대한 조직적 래퍼를 제공하므로 각 프로젝트에 대한 상용구를 작성하는 대신 중요한 코드에 집중할 수 있습니다.

Lightning 프로젝트는 클래스 기반 구조를 사용하므로 PyTorch 프로젝트의 각 공통 단계는 클래스 메서드에 캡슐화됩니다. 훈련 및 검증 루프는 반 자동화되므로 각 단계에 대한 논리 만 제공하면됩니다. 교육 결과를 여러 GPU 또는 서로 다른 하드웨어 혼합으로 설정하는 것도 더 쉽습니다. 그렇게하기위한 지침과 객체 참조가 중앙 집중화되어 있기 때문입니다.

Scikit-learn

Python은 채택의 용이성과 거의 모든 애플리케이션에서 사용할 수있는 라이브러리의 폭으로 인해 수학, 과학 및 통계 용 프로그래밍 언어가되었습니다. Scikit-learn은 수학 및 과학 작업을 위해 기존의 여러 Python 패키지 (NumPy, SciPy 및 Matplotlib)를 기반으로 구축하여 이러한 범위를 활용합니다. 결과 라이브러리는 대화 형 "워크 벤치"응용 프로그램에 사용되거나 다른 소프트웨어에 내장되어 재사용 될 수 있습니다. 이 키트는 BSD 라이선스로 제공되므로 완전히 개방되어 재사용 할 수 있습니다.

쇼군

Shogun은이 컬렉션에서 가장 오래 지속 된 프로젝트 중 하나입니다. 1999 년에 생성되어 C ++로 작성되었지만 Java, Python, C #, Ruby, R, Lua, Octave 및 Matlab과 함께 사용할 수 있습니다. 최신 메이저 버전 인 6.0.0은 Microsoft Windows 및 Scala 언어에 대한 기본 지원을 추가합니다.

대중적이고 광범위하지만 쇼군은 경쟁이 있습니다. 또 다른 C ++ 기반 기계 학습 라이브러리 인 Mlpack은 2011 년 이후로만 사용되었지만 경쟁 라이브러리보다 더 빠르고 통합적인 API 세트를 통해 작업하기가 더 쉽다고 공언합니다.

Spark MLlib

Apache Spark 및 Apache Hadoop 용 기계 학습 라이브러리 인 MLlib는 속도와 규모로 실행되도록 설계된 많은 공통 알고리즘과 유용한 데이터 유형을 자랑합니다. Java는 MLlib에서 작업하기위한 기본 언어이지만 Python 사용자는 MLlib를 NumPy 라이브러리와 연결할 수 있고 Scala 사용자는 MLlib에 대해 코드를 작성할 수 있으며 R 사용자는 버전 1.5부터 Spark에 연결할 수 있습니다. MLlib 버전 3은 Spark의 DataFrame API (이전 RDD API와 반대) 사용에 중점을두고 있으며 많은 새로운 분류 및 평가 기능을 제공합니다.

또 다른 프로젝트 인 MLbase는 결과를 더 쉽게 도출 할 수 있도록 MLlib 위에 빌드됩니다. 사용자는 코드를 작성하는 대신 SQL에 따라 선언적 언어로 쿼리를 작성합니다.

Weka

와이 카토 대학의 기계 학습 그룹에서 만든 Weka는 "프로그래밍없는 기계 학습"으로 청구됩니다. 데이터 랭글러가 코드를 작성하지 않고도 기계 학습 파이프 라인을 조립하고, 모델을 훈련시키고, 예측을 실행할 수 있도록 지원하는 GUI 워크 벤치입니다. Weka는 직접 래퍼를 통해 또는 NumPy, Pandas, SciPy 및 Scikit-learn과 같은 일반적인 숫자 라이브러리에 대한 인터페이스를 통해 R, Apache Spark 및 Python과 직접 작업합니다. Weka의 큰 장점은 패키지 관리, 전처리, 분류 및 시각화를 포함하여 작업의 모든 측면에 대해 탐색 가능하고 친숙한 인터페이스를 제공한다는 것입니다.