序言
データサイエンスプロジェクトを検討するとき、よく使われる名前は、言葉のサラダのように感じることがあります。 カフカ? スパーク? ケラス? これらすべての言葉は何ですか、そしてなぜそれらはデータサイエンスにとってそれほど重要なのですか?
このブログでは、プログラミングフレームワークの理由を紹介し、データプロジェクトでよく使用される31のプログラミングフレームワークとインターフェイスを紹介します。 最後に、組織でデータサイエンスを探索する方法について詳しく知りたい場合に、私たちから支援を得る方法を紹介します。
プログラミングフレームワークとは何ですか?
しかし、最初に、プログラミングフレームワークが何であるかを理解することが重要です。 ほとんどの人は、プログラミングにはコード行の記述が含まれるという基本的な理解を持っているでしょう。 ただし、プロジェクトごとにコードを最初から作成するのは面倒です。 フレームワークとライブラリは、創造的なプロセスを短縮し、プログラマーが一般的な問題に対する実証済みのプログラムによるソリューションを利用できるようにします。
これは特にデータサイエンスに当てはまります。データサイエンスでは、解決すべき問題が非常に影響力があり、エラーを残すことができません。また、非常に複雑であるため、毎回ゼロから始めるのは非常に時間がかかる可能性があります。
フレームワークとライブラリは、基本的にコードを作成するための開始ブロックです。 これらのコードブロックは、コミュニティによって構築、テスト、および最適化されています。
データサイエンティストにとってのフレームワークのXNUMXつの利点
フレームワークは、データサイエンティストと彼らが働くテクノロジーチームに多くのメリットをもたらします。
- フレームワークはより良いコードを作成します。 フレームワークは、コーダーがより良いデザインパターンを作成し、重複したコードや安全でないコードを回避するのに役立ちます。 後続のコードは、記述、テスト、およびデバッグが容易です。
- フレームワークは事前にテストされ、事前に最適化されています。 データサイエンスチームは、最初から始めるのではなく、事前にテストおよび最適化されたコードを使用することで、時間を節約できます。
- より迅速な実装。 チームが詳細に文書化、テスト、および最適化されたコードを使用する場合、実装の滑走路は短くなります。 チームは、モデルの設計とテストに費やす時間を減らし、モデルの分析と最適化に多くの時間を費やすことができます。
次に、データサイエンスの世界で耳にする31の一般的なデータサイエンスフレームワーク(およびインターフェイス)を紹介します。
31データサイエンスのフレームワークとインターフェース
1. アパッチ・カフカ
Apache Kafkaは、JavaとScala上に構築され、LinkedInによって作成されたオープンソースのスケーラブルなメッセージングプラットフォームです。 ストリーミングプラットフォーム(「取り込みバックボーン」)として、XNUMX日に何兆ものイベントをリアルタイムで処理できます。 Kafkaは、非常に大量のリアルタイムデータへのアクセスと処理を必要とするプロジェクトのデータサイエンスフレームワークとして使用されます。
Apache Kafkaの詳細については、 https://kafka.apache.org/.
2.AWSディープラーニングAMI
AWS Deep Learning AMIは、それ自体はフレームワークではありませんが、データサイエンティストがより速くより良い作業を行えるようにするツールです。 Amazonによると、「AWS Deep Learning AMIは、機械学習の実践者と研究者に、あらゆる規模でクラウドでのディープラーニングを加速するためのインフラストラクチャとツールを提供します。」 この記事の執筆時点では、AWS DL環境は、TensorFlow、PyTorch、Apache MXNet、Chainer、Microsoft Cognitive Toolkit、Gluon、Horovod、およびKerasで事前構成されています。
AWSディープラーニングAMIの詳細については、 https://aws.amazon.com/machine-learning/amis/.
3.ボケ
Bokehは、ブラウザー内でインタラクティブでスケーラブルな視覚化を作成するために使用されるオープンソースのPythonデータ視覚化ライブラリです。 Bokehでは、「対話性」が重要な部分であり、データサイエンティストが視覚化にそれを使用するのが好きな理由です。 ボケはレイヤーで構築され、最初は図形、次に要素、最後にグリフの順になります。 その後、「インスペクター」を追加して、ユーザーとの対話を可能にすることができます。
ボケの詳細については、 https://bokeh.org/.
4.コーヒー
Caffe(現在はCaffe2、PyTorchの一部)は、C ++で記述された「表現、速度、モジュール性を念頭に置いて作成されたディープラーニングフレームワーク」です。 Caffeには事前構成されたトレーニングモジュールが付属しており、機械学習を初めて使用する初心者にとって優れたフレームワークになっています。 Caffeは、標準のアレイおよび統合メモリインターフェイスである「ブロブ」にデータを格納および操作します。 Blobプロパティは、ニューラルネットワークのレイヤー間で情報がどのように保存および伝達されるかを記述します。 Caffeを調査しているデータサイエンティストは、TensorFlow、Theano、Veles、およびMicrosoft CognitiveToolkitも試しています。
Caffeの詳細については、 https://caffe2.ai/.
5.チェイナー
Chainerは、東京の機械学習とロボット工学の新興企業によって作成されたオープンソースのニューラルネットワークPythonフレームワークです。 Chainerは、特にTensorflowのような他のより「洗練された」フレームワークと比較して、その速度で知られています。 Chainerは、「define-by-run」ニューラルネットワーク定義を最初に提供しました。これにより、ニューラルネットワークの動的な変更が可能になります(デバッグに関しては利点があります)。 また、CUDA計算をサポートし、標準のPythonツールを使用して検査できます。
Chainerの詳細については、 https://chainer.org/.
6.ディープラーニング4j
Eclipse DeepLearning4jは、「JavaおよびScala用に作成された最初の商用グレードのオープンソースの分散型ディープラーニングライブラリ」です。 分散されているため、マルチCPUを利用してトレーニングを加速できます。 Scala、Clojure、KotlinなどのJVM言語と互換性があり、SparkとHadoopで動作します。 DeepLearning4jを使用すると、浅いネットから深いニューラルネットを作成できます。
DeepLearning4jの詳細については、 https://deeplearning4j.org/.
7.Fast.ai
Fastaiは、Pythonを使用してJeremyHowardとRachelThomasによって開発されたディープラーニングライブラリです。 ドキュメントによると、Fastaiは「標準的な深層学習ドメインで最先端の結果を迅速かつ簡単に提供できる高レベルのコンポーネントを実践者に提供し、研究者に次のことができる低レベルのコンポーネントを提供する深層学習ライブラリです。新しいアプローチを構築するために、組み合わせて組み合わせることができます。」 Fastaiチームは、人工知能とディープラーニングの民主化を目指しており、フレームワークのトレーニングを無料でオープンソースにしています。
で詳細はこちら https://www.fast.ai/.
8.グルーオン
Gluonは、MicrosoftとAmazonのオープンソースのディープラーニングインターフェースです。 このインターフェースにより、機械学習開発者は、事前に構築されたニューラルネットワークコンポーネントを使用して、パフォーマンスを犠牲にすることなくモデルを迅速に開発できます。 これは、より高速なプロトタイピングとトレーニングを意味します。
Gluonの詳細については、 https://gluon.mxnet.io/ .
9.H2O
H2Oは、オープンソースのエンタープライズ対応プラットフォーム(同じグループの多くのプラットフォームの20,000つ)であり、世界中の2を超える組織のビジネスユースケースに対応しています。 HXNUMXOモデルは、PythonやRなどの一般的に使用される言語を使用して構築できます。また、ユーザー指定の制限内で機械学習プロセスを自動化できる「AutoML」も備えています。 また、分散されているため、非常に大きなデータセットをサポートし、速度を維持できるため、エンタープライズアプリケーションに最適です。
H2Oの詳細については、 https://www.h2o.ai/.
10.ホロボッド
Horovodは、TensorFlow、Keras、PyTorch、ApacheMXNetを使用した分散型ディープラーニングトレーニング用の無料のオープンソースソフトウェアフレームワークです。 これは、分散TensorFlowモデルをトレーニングするためのより良い方法として、ミケランジェロプラットフォームの一部としてUberの機械学習エンジニアリングチームによって開発されました。
Horovodの詳細については、 https://github.com/horovod/horovod .
11. JupyterNotebook
Jupyter Notebookは、データサイエンス、科学計算、機械学習ワークフロー向けのオープンソースのウェブベースのインターフェースです。 その中で、ライブコード、方程式、視覚化、およびナラティブテキストを含むドキュメントを作成および共有できます。 Jupyter Notebookは、Python、R、Julia、Scalaを含む40を超えるプログラミング言語をサポートしています。
Jupyter Notebookの詳細については、 https://jupyter.org/.
12.ケラス
Kerasは、人工ニューラルネットワーク用のPythonインターフェースを提供するオープンソースのデータサイエンスライブラリです。 バージョン2.4以降、TensorFlowライブラリのインターフェースとして機能します。 以前のバージョンは、TensorFlow、Microsoft Cognitive Toolkit、R、Theano、PlaidMLなどをサポートしていました。 レイヤー、目的、活性化関数、オプティマイザーなどのニューラルネットワークビルディングブロックをサポートします。
Kerasの詳細については、 https://keras.io.
13.ライトGBM
Light GBMは、ツリーベースの機械学習アルゴリズムを利用する「勾配ブースティングフレームワーク」です。 そのヒストグラムベースのアルゴリズムは、連続値を個別のビンに配置します。これにより、トレーニングが高速化され、メモリが効率的に使用されます。 ドキュメントによると、Light GBMは、データサイエンティストに、より速いトレーニング速度とより高い効率、より低いメモリ使用量、より良い精度、並列学習とGPU学習のサポートを提供します。 また、大規模データの処理もサポートしています。 ランク付け、分類、その他の機械学習タスクに使用されます。
Light GBMの詳細については、 https://github.com/microsoft/LightGBM.
14.Matplotlib
Matplotlibは、「パブリケーション品質」の視覚化を作成するための、包括的で人気のあるオープンソースのPythonライブラリです。 視覚化は、静的、アニメーション、またはインタラクティブにすることができます。 これはMATLABからエミュレートされたため、オブジェクト階層を含む、MATLABによく似たグローバルスタイルが含まれています。
Matplotlibの詳細については、 https://matplotlib.org/.
15. Microsoft Cognitive Toolkit(以前はCNTKと呼ばれていました)
Microsoft Cognitive Toolkitの詳細は、商用グレードの分散型ディープラーニング用のオープンソースツールキットです。 これは、「フレームワークの相互運用性と共有の最適化」のためのオープンソースの共有モデル表現であるONNXを最初にサポートしたもののXNUMXつでした。 また、PythonやC ++などの一般的なデータサイエンス言語と連携して、商用グレードのAIを作成します。
Microsoft Cognitive Toolkitの詳細については、次を参照してください。 https://docs.microsoft.com/en-us/cognitive-toolkit/.
16. MXNET
Apache MXNETは、もうXNUMXつのオープンソースフレームワークであり、今回はディープラーニング用です。 MXNETはPythonと緊密に統合されており、Scala、Julia、Clojure、Java、C ++、R、Perlをサポートしています。 MXNETの主な魅力のXNUMXつは、生産性を最大化するためにシンボリックプログラミングと命令型プログラミングを切り替える機能です。 もうXNUMXつの魅力は、トレーニングをスケーリングして配布する機能です。
MXNETの詳細については、 https://mxnet.apache.org/.
17. ナンパイ
NumPy(「数値Python」)は別のPythonプログラミングライブラリであり、今回は配列処理パッケージとして数値および科学計算を操作するために使用されます。 NumPyの速度が最適化されたCコードは、Pythonリストよりも50倍高速な配列オブジェクトを提供するため、データサイエンスの目的に最適です。
NumPyの詳細については、 https://numpy.org/.
18.TensorFlow
TensorFlowは、データサイエンスが機械学習(ML)モデルを開発およびトレーニングするのに役立つ、「エンドツーエンドのオープンソース機械学習プラットフォーム」です。 これは、高速なプロトタイプを効率的に構築するのに特に役立ちます。 データサイエンティストは、クラウドまたはオンプレミスでモデルをトレーニングおよびデプロイするために、すでに使い慣れている任意の言語で記述できます。
TensorFlowの詳細については、 https://www.tensorflow.org/.
19.Scikit-learn
Scikit-learnは、NumPy、SciPy、およびmatplotlib上に構築された機械学習用の簡単に学習できるオープンソースのPythonライブラリです。 データの分類、回帰、クラスタリング、次元削減、モデル選択、および前処理に使用できます。
Scikitの詳細-で学ぶ https://scikit-learn.org/stable/.
20.ONNX
フレームワークではなく、価値のあるツールであるにもかかわらず、ONNXは「OpenNeuralNetworkExchange」の略です。 これは、機械学習モデルを表すために設計されたオープンソース形式です。 ONNXは、データサイエンティストに、フレームワーク、ツール、ランタイム、およびコンパイラ間で使用する共通の演算子セットと共通のファイル形式を提供します。 既存のモデルは、ONNX形式との間でエクスポートできます。
ONNXの詳細については、 https://onnx.ai/.
21.パンダ
Pandas(「panel-data-s」の略)は、データの探索、クリーニング、変換、視覚化に使用される機械学習ツールであり、機械学習モデルやトレーニングで使用できます。 これは、NumPy上に構築されたオープンソースのPythonライブラリです。 Pandasは、series、DataFrame、panelのXNUMX種類のデータ構造を処理できます。
パンダの詳細については、 https://pandas.pydata.org/.
22.プロット
Plotlyは、分析アップルを作成するための人気のあるツールです。 これには、Webベースの分析アプリケーションを構築するためのオープンソースのPythonおよびRフレームワークであるDashや、科学機器でデータ収集GUIを構築するためのDashDAQなどのさまざまな製品が含まれています。 Plotlyには、Python、R、MATLAB、Node.js、Julia、Arduino、RESTのAPIライブラリ、およびJupyterノートブックとの統合も含まれています。 Plotlyは、オープンソースのJavaScriptライブラリとオンプレミスのインストールも提供しています。
Python Plotlyライブラリは、40を超えるさまざまなグラフの種類と視覚化を含むプロットライブラリであり、Jupyterノートブック、HTML、またはDASH上に構築されたアプリケーションの一部として表示できます。
Plotlyの詳細については、 https://plotly.com/.
23. ピドット
Pydotは、DOT言語に解析してダンプできるGraphvizのDot用のPythonインターフェースです。 Pydotを使用すると、データサイエンティストはグラフを処理、変更、処理したり、グラフの構造を表示したりして、ニューラルネットワークで使用できるようになります。
Pydotの詳細については、 https://pypi.org/project/pydot/.
24.PyTorch
PyTorchは、データサイエンティストがディープラーニングタスクをすばやく実行できるようにする、もうXNUMXつのオープンソースPythonフレームワークです。 PyTorchは、Salesforce、スタンフォード大学、Udacityなどで使用され、Tensor計算を実行し、動的ニューラルネットワークを構築します。 PyTorchは、CベースのオープンソースディープラーニングライブラリであるTorchに基づいています。
PyTorchの詳細については、 https://pytorch.org/.
25.SciPy
SciPyは、線形代数、積分、微分方程式の解法、信号処理などの数学と科学計算のためのオープンソースエコシステムです。NumPy、IPython、SciPy Library、MatPlotlib、SymPy、pandasなどの便利なコアパッケージがいくつか含まれています。
SciPyの詳細については、 https://www.scipy.org/.
26.将軍
Shogunは、Python、Octave、R、Java / Scala、Lua、C#、Rubyなどの多くのデータサイエンスプログラミング言語をサポートするオープンソースの機械学習ライブラリです。 次元削減アルゴリズム、クラスタリングアルゴリズム、サポートベクターマシンなどの多くのアルゴリズムをサポートします。 巨大なデータセットを処理できるため、エンタープライズアプリケーションに有効です。
将軍の詳細については、 https://www.shogun-toolbox.org/.
27.スパークMLib
MLibはApacheSparkの機械学習ライブラリです。 カリフォルニア大学バークレー校によって開発され、非常に大量のデータを高速で処理することができます。 クエリオプティマイザーと物理最適化エンジンのおかげで、大規模なデータ処理ではHadoopよりも100倍高速です。 データサイエンティストは、Java、Scala、Python、R、およびSQLでアプリケーションを作成できます。
Spark MLibの詳細については、 https://spark.apache.org/.
28.シーボーン
Seabornは、「魅力的で有益な」統計グラフを描画するためのPythonデータ視覚化ライブラリです。 SeabornはMatplotlibに基づいています。 時系列やジョイントプロットなど、選択可能なさまざまな視覚化が含まれています。
Seabornの詳細については、 https://seaborn.pydata.org/.
29.テアノ
Theanoは、「多次元配列を含む数式を効率的に定義、最適化、評価できるPythonライブラリ」です。 NumPyと緊密に統合されており、CPUよりも高速にデータ計算を実行し、式をより高速に評価し、組み込みの単体テストと自己検証を備えています。 残念ながら、Theanoは2017年に最後に更新され、徐々に他のツールに置き換えられています。
Theanoの詳細については、 http://deeplearning.net/software/theano/.
30.ヴェレス
Velesは、バイナリデータ分析用のオープンソースツールです。 Velesを使用すると、データサイエンティストは、バイナリコードを人間が理解できる視覚化に変換できます。 そのため、データサイエンティストは、バイナリをリバースエンジニアリングしたり、ファイルシステムの画像を調べたり、ステガノグラフィを簡単に実行したりすることもできます。
Velesの詳細については、 https://codisec.com/veles/ .
31. エグブースト
eXtreme Gradient Boostingの略であるXgboostは、Tianqi Chenによって開発され、現在はDistributed Machine Learning Community(DMLC)の一部であるオープンソースツールです。 Xgboostは、回帰、分類、ランク付け、モデルチューニング、およびアルゴリズムの拡張のために広く普及しているツールであり、エンタープライズレベルのプロジェクトでテストされています。 その作成者によると、「…xgboostは、より正規化されたモデル形式を使用して過剰適合を制御し、パフォーマンスを向上させました。」
Xgboostの詳細については、 https://xgboost.readthedocs.io/en/latest/.