機械学習を最大限に活用するための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に基づいた、プロジェクトの主要な内部リファクタリングです。

作曲

イノベーションラボによるComposeは、機械学習モデルの一般的な問題を対象としています。生データのラベル付けは、時間と手間がかかるプロセスですが、それなしでは機械学習モデルは有用な結果を提供できません。Composeを使用すると、Pythonでデータの一連のラベル付け関数を記述できるため、ラベル付けを可能な限りプログラムで実行できます。離散値または分位数に基づいてデータをビンに配置するなど、さまざまな変換としきい値をデータに設定して、ラベル付けプロセスを容易にすることができます。

コアMLツール

AppleのCoreMLフレームワークを使用すると、機械学習モデルをアプリに統合できますが、独自の学習モデル形式を使用します。良いニュースは、モデルを使用するためにCoreML形式でモデルを事前トレーニングする必要がないことです。CoreMLツールを使用してモデルを一般的に使用されるほぼすべての機械学習フレームワークからCoreMLに変換できます。

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ファイルなどのいくつかのファイルのみで構成されています。パッケージ全体がDockerコンテナとしてAWSまたは別のDocker互換ホスティングシステムにデプロイされます。コンピューティングリソースは、Kubernetesで使用されている定義と同じように割り当てられ、GPUまたはAmazon InferentiaASICを使用してサービスを高速化できます。

Featuretools

特徴エンジニアリング、つまり特徴の作成には、機械学習モデルのトレーニングに使用されるデータを取得し、モデルのトレーニングに役立つデータの変換および集約バージョンを、通常は手動で作成することが含まれます。Featuretoolsは、データフレーム内のデータを合成することによって構築された高レベルのPythonオブジェクトを介してこれを行うための関数を提供し、1つまたは複数のデータフレームから抽出されたデータに対してこれを行うことができます。Featuretoolsは、合成操作に共通のプリミティブも提供するため(たとえば、time_since_previousタイムスタンプ付きデータのインスタンス間の経過時間を提供するため)、それらを自分でロールする必要はありません。

GoLearn

開発者のStephenWhitworth氏によると、GoogleのGo言語用の機械学習ライブラリであるGoLearnは、シンプルさとカスタマイズ性という2つの目標を掲げて作成されました。単純さは、SciPyとRの後にパターン化されたライブラリでのデータのロードと処理の方法にあります。カスタマイズ可能性は、アプリケーションで一部のデータ構造を簡単に拡張できる方法にあります。Whitworthは、Shogunツールボックスにあるライブラリの1つであるVowpalWabbitライブラリのGoラッパーも作成しました。

グラディオ

機械学習アプリケーションを構築する際の一般的な課題の1つは、モデルのトレーニングと予測を提供するメカニズムのために、堅牢で簡単にカスタマイズできるUIを構築することです。Gradioは、モデルとリアルタイムで対話できるWebベースのUIを作成するためのツールを提供します。Inception V3画像分類子への入力インターフェイスやMNIST手書き認識モデルなど、いくつかのサンプルプロジェクトが含まれているため、独自のプロジェクトでGradioを使用する方法がわかります。

H2O

H2Oは、現在3番目のメジャーリビジョンであり、トレーニングから予測の提供まで、インメモリ機械学習のためのプラットフォーム全体を提供します。H2Oのアルゴリズムは、たとえば画像分析ではなく、ビジネスプロセス(たとえば、詐欺や傾向の予測)を対象としています。H2Oは、スタンドアロン方式でHDFSストアと、YA​​RNの上で、MapReduceで、またはAmazonEC2インスタンスで直接対話できます。

Hadoop mavenはJavaを使用してH2Oと対話できますが、フレームワークはPython、R、およびScalaのバインディングも提供し、これらのプラットフォームで使用可能なすべてのライブラリーと対話できるようにします。H2Oをほとんどすべてのパイプラインに統合する方法として、REST呼び出しにフォールバックすることもできます。

オリックス

Oryxは、Cloudera Hadoopディストリビューションの作成者の好意により、ApacheSparkとApacheKafkaを使用して、リアルタイムデータで機械学習モデルを実行しています。Oryxは、レコメンデーションエンジンやライブ異常検出など、新しいデータと履歴データの両方によって通知される、現時点での決定を必要とするプロジェクトを構築する方法を提供します。バージョン2.0は、プロジェクトのほぼ完全な再設計であり、そのコンポーネントはラムダアーキテクチャで疎結合されています。新しいアルゴリズム、およびそれらのアルゴリズムの新しい抽象化(ハイパーパラメータの選択など)は、いつでも追加できます。

PyTorch Lightning

強力なプロジェクトが普及すると、多くの場合、使いやすくするサードパーティのプロジェクトによって補完されます。PyTorch Lightningは、PyTorchの組織ラッパーを提供するため、プロジェクトごとに定型文を作成する代わりに、重要なコードに集中できます。

Lightningプロジェクトはクラスベースの構造を使用するため、PyTorchプロジェクトの一般的な各ステップはクラスメソッドにカプセル化されます。トレーニングと検証のループは半自動化されているため、各ステップのロジックを提供するだけで済みます。また、複数のGPUまたは異なるハードウェアミックスでトレーニング結果を設定する方が簡単です。これは、そのための命令とオブジェクト参照が一元化されているためです。

Scikit-learn

Pythonは、採用が容易で、ほぼすべてのアプリケーションで利用できるライブラリの幅が広いため、数学、科学、統計のプログラミング言語になりました。Scikit-learnは、数学と科学の作業のために、いくつかの既存のPythonパッケージ(NumPy、SciPy、およびMatplotlib)の上に構築することにより、この幅を活用します。結果として得られるライブラリは、インタラクティブな「ワークベンチ」アプリケーションに使用したり、他のソフトウェアに組み込んで再利用したりできます。キットはBSDライセンスで入手できるため、完全にオープンで再利用できます。

将軍

将軍は、このコレクションの中で最も長く存続しているプロジェクトの1つです。1999年に作成され、C ++で記述されていますが、Java、Python、C#、Ruby、R、Lua、Octave、Matlabで使用できます。最新のメジャーバージョン6.0.0は、MicrosoftWindowsとScala言語のネイティブサポートを追加します。

将軍は人気があり幅広いですが、競争があります。もう1つのC ++ベースの機械学習ライブラリであるMlpackは、2011年から登場していますが、競合するライブラリよりも高速で簡単に操作できると公言しています(より統合されたAPIセットを使用)。

Spark MLlib

ApacheSparkおよびApacheHadoop用の機械学習ライブラリであるMLlibは、速度とスケールで実行するように設計された、多くの一般的なアルゴリズムと便利なデータ型を誇っています。JavaはMLlibで作業するための主要言語ですが、PythonユーザーはMLlibをNumPyライブラリに接続でき、ScalaユーザーはMLlibに対してコードを記述でき、Rユーザーはバージョン1.5以降Sparkにプラグインできます。MLlibのバージョン3は、(古いRDD APIではなく)SparkのDataFrame APIの使用に重点を置いており、多くの新しい分類および評価関数を提供します。

別のプロジェクトであるMLbaseは、MLlibの上に構築されており、結果を簡単に導き出すことができます。ユーザーは、コードを記述するのではなく、SQLの宣言型言語を使用してクエリを実行します。

ウェカ

ワイカト大学の機械学習グループによって作成されたWekaは、「プログラミングなしの機械学習」と呼ばれています。これは、データラングラーがコードを記述せずに機械学習パイプラインを組み立て、モデルをトレーニングし、予測を実行できるようにするGUIワークベンチです。Wekaは、R、Apache Spark、Pythonと直接連携します。後者は、直接ラッパーを介して、またはNumPy、Pandas、SciPy、Scikit-learnなどの一般的な数値ライブラリのインターフェイスを介して動作します。Wekaの大きな利点は、パッケージ管理、前処理、分類、視覚化など、ジョブのあらゆる側面に閲覧可能で使いやすいインターフェイスを提供することです。