重要: Scalaに依存するMaven アーティファクトはScalaのメジャーバージョンが後ろに付きます。例えば、"2.10" あるいは "2.11"。プロジェクトwiki上のマイグレーションガイドに相談してください。

FlinkML - Flinkのための機械学習

FlinkML はFlinkのための機械学習(ML)ライブラリです。それは、アルゴリズムと貢献の増加するリストを使った、Flinkコミュニティでの新しい試みです。FlinkMLを使って、スケーラブルなMLアルゴリズム、直観的なAPI、および端と端を結ぶMLシステムでべったりとしたコードを最小にするのに役立つツールを提供することを目的とします。ビジョンとロードマップで私たちの目的とライブラリが目指している場所についてのもっと詳細を見ることができます。

サポートされたアルゴリズム

FlinkMLは現在のところ以下のアルゴリズムをサポートします:

教師あり学習

教師無し学習

データ事前処理

お勧め

ユーティリティ

開始

包括的な開始の例のために、クリックスタートガイドを調べることができます。

飛び込むためには、Flinkプログラムのセットアップをする必要があります。次に、FlinkML依存性をプロジェクトのpom.xmlに追加する必要があります。

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-ml_2.10</artifactId>
  <version>1.1-SNAPSHOT</version>
</dependency>

FlinkMLは現在のところバイナリの配布の一部では無いことに注意してください。クラスタ実行のためにそれをリンクするには ここを見てください。

これで、解析タスクの解決を始めることができます。以下のコードの断片は多重線形回帰モデルを訓練するのがどれくらい簡単かを示します。

// LabeledVector is a feature vector with a label (class or real value)
val trainingData: DataSet[LabeledVector] = ...
val testingData: DataSet[Vector] = ...

// Alternatively, a Splitter is used to break up a DataSet into training and testing data.
val dataSet: DataSet[LabeledVector] = ...
val trainTestData: DataSet[TrainTestDataSet] = Splitter.trainTestSplit(dataSet)
val trainingData: DataSet[LabeledVector] = trainTestData.training
val testingData: DataSet[Vector] = trainTestData.testing.map(lv => lv.vector)

val mlr = MultipleLinearRegression()
  .setStepsize(1.0)
  .setIterations(100)
  .setConvergenceThreshold(0.001)

mlr.fit(trainingData)

// The fitted model can now be used to make predictions
val predictions: DataSet[LabeledVector] = mlr.predict(testingData)

パイプライン

FlinkMLの重要な概念は、パイプラインの仕組みに着想を得たscikit-learn です。It allows you to quickly build complex data analysis pipelines how they appear in every data scientist’s daily work. FlinkMLのパイプラインと内部の動きの詳細な説明はここで見つけることができます。

以下の例のコードはFlinkMLを使って解析パイプラインをセットアップするのがどれくらい簡単なのかを示します。

val trainingData: DataSet[LabeledVector] = ...
val testingData: DataSet[Vector] = ...

val scaler = StandardScaler()
val polyFeatures = PolynomialFeatures().setDegree(3)
val mlr = MultipleLinearRegression()

// Construct pipeline of standard scaler, polynomial features and multiple linear regression
val pipeline = scaler.chainTransformer(polyFeatures).chainPredictor(mlr)

// Train pipeline
pipeline.fit(trainingData)

// Calculate predictions
val predictions: DataSet[LabeledVector] = pipeline.predict(testingData)

メソッドchainTransformerを呼び出すことで、Transformer を他の Transformerあるいは連なった Transformers のセットに繋ぐことができます。PredictorTransformer あるいは連なった Transformersに繋ぎたい場合は、chainPredictorを呼ぶ必要があります。

貢献する方法

Flink コミュニティはFlinkとそのライブラリの開発に関わりたい全ての貢献者を歓迎します。FlinkMLへの貢献を素早く開始するためには、公式の貢献ガイドを読んでください。

TOP
inserted by FC2 system