- Apache Sparkは巨大なデータに対して高速に分散処理を行うオープンソースのフレームワーク
- JavaやScala、Pythonなどいろいろなプログラミング言語のAPIが用意されている
- Sparkは分散処理のややこしい部分をうまく抽象化してくれているので、簡潔なコードを実行するだけで、何百台ものコンピュータで、同時平行に計算を実行させることができる
- クラスタ上のデータをSQLで処理できる「Spark SQL」や、機械学習のための「MLlib」、グラフ処理のための「GraphX」、ストリーミング処理のための「Spark Streaming」など、便利なコンポーネントが付属している
- マイクロバッチ方式によるストリームデータ処理機能を提供
- 数百ミリ秒から数秒ほどの短い時間に流れて来たデータに対して、短い間隔でバッチ処理を行うようなイメージ
- バッチ処理の間隔を短くしてできる限りレイテンシを小さくすることで、「ニア・リアルタイム」に結果を得ることができる。
MLlib †
- MLlibは一般的な機械学習アルゴリズムとユーティリティからなるSparkのスケール可能な機械学習ライブラリで、分類、回帰、クラスタ化、協調フィルター、次元削減、そして低レベル optimization primitivesと高レベルpipeline API を含んでいる
主な機能 †
基本的な統計 †
- 相関関係
- 階層化されたサンプリング
- 仮説テスト
- ランダムデータ生成
- カーネル密度推定
分類と回帰 †
- 2値分類
- 線形SVM
- ロジスティック回帰
- 決定木
- ランダムフォレスト
- 勾配ブースト木
- ナイーブベイズ
- 多クラス分類
- ロジスティック回帰
- 決定木、
- ランダムフォレスト
- ナイーブベイズ
- 回帰
- 線形最小二乗
- ラッソ
- リッジ回帰
- 決定木
- ランダムフォレスト
- 勾配ブースト木
- アイソトニック回帰
協調フィルタリング †
クラスタリング †
- K-平均法
- 混合ガウス
- べき乗クラスタリング (PIC)
- 潜在的ディレクレ配分法 (LDA)
- 二値k平均法
- ストリーミング k-平均法
次元削減 †
特徴量抽出および変形 †
- TF-IDF
- Word2Vec
- StandardScaler?
- 平均器
- ChiSqSelector?
- ElementwiseProduct?
- PCA
頻出パターンマイニング †
- FP-growth
- 相関ルール
- PrefixSpan?
評価マトリックス †
- 分類モデルの評価
- 二値分類
- 多クラス分類
- 多ラベル分類
- ランキング システム
- 回帰モデルの評価
PMML モデル抽出 †
- Predictive Model Markup Language (PMML)へのモデルのエクスポートをサポート
最適化 †
- 勾配降下法
- 確率的勾配降下法 (SGD : Stochastic Gradient Descent)
- L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)
- Apache Software Foundationの元で開発されている、Sparkをベースにしたオープンソース機械学習サーバ
- 以下の機能を提供
- 学習データや学習モデルを格納するためのストレージ
- 機械学習を使用したエンジンを定型化するためのフレームワーク
- 開発したエンジンをWebサービスとしてデプロイする機能
- 機械学習はSparkのMLlibで行われる。
- 学習データの投入は基本は CLI ツールから行うが、REST API でデータ投入もできる。
- 学習データは RDBMS か HBase 上に保存。学習データ以外にメタデータ(RDBMSかElasticsearch上)、モデルデータ(RDBMS, HDFS, LOCALFS上)も保存する必要がある。
- 機械学習されたモデルを使って予測が出来る。
- 予測サービスは REST API で呼び出せる。計算済みのモデルを用いて、Spark で予測してレスポンスを返す。
Kafka †
- Spark Streaming と同類の、分散ストリーム処理プラットフォームのOSS
- 特長
- 高パフォーマンス&低レイテンシ(真のストリーム処理が可能)
- 耐障害性に優れる(自動でイベント処理継続)
- 各処理をステートフルで扱っており、障害が発生した際には、その情報から処理を自動で復旧させる機能を有している
- ストリーム処理、バッチ処理の両方をサポートし、高レベルのAPIが提供されるAll-in-One構成