機械学習バックエンド(Dev docs)

提供:MoodleDocs
移動先:案内検索

English page: dev:Machine learning backends

はじめに

機械学習バックエンドは、アナリティクスAPIによって計算された指標とターゲットから生成されたデータセットを処理します。これらは、機械学習のトレーニング、予測、モデルの評価に使用されます。 アナリティクスAPIを読んで、いくつかの概念定義、これらの概念がMoodleにどのように実装されているか、機械学習バックエンドプラグインが分析APIにどのように適合するかを読んでおくとよいでしょう。

データセットを処理するコードはPHP、Python、その他の言語で記述でき、クラウドサービスを使用できるため、機械学習バックエンドとMoodle間の通信はファイルを介して行われます。これはスケーラブルである必要があるため、大きなファイルを管理し、必要に応じて入力ファイルをバッチで読み取るアルゴリズムをトレーニングできることが期待されます。

機械学習バックエンドは新しいMoodleプラグインタイプです。それらはlib/mlbackendに保存され、そこで独自のプラグインを追加できます。

Moodleコアに含まれるバックエンド

PHPバックエンド は、PHPで記述されており、外部依存関係がないため、デフォルトの予測プロセッサです。ロジスティック回帰を使用しています。

Pythonバックエンドpython バイナリ(python2またはpython3のいずれか)とmoodlemlbackend pythonパッケージ (Moodle HQによって管理)が必要です。これはGoogleのtensorflowライブラリを利用して作られ、1つの隠れ層を持つフィードフォワードニューラルネットワークを使用しています。 moodlemlbackend パッケージは、モデルのパフォーマンス情報を保存し、その情報は tensorboardを使用して視覚化できます。モデルの評価中に生成された情報は、各モデルの 操作 > 評価ログ メニューの下にあるモデル管理ページから入手できます。 moodlemlbackend ソースコードは https://github.com/moodlehq/moodle-mlbackend-python で入手できます。

PythonバックエンドはPHPよりも推奨されます。 PHPバックエンドよりも正確に予測でき、高速です。

インターフェース

これらのインターフェースの目的の要約:

  • 提供された予測モデルを評価する
  • 既存のサイトデータを使用して機械学習アルゴリズムをトレーニングする
  • 以前にトレーニングされたアルゴリズムに基づいてターゲットを予測する

予測子

これは、機械学習バックエンドによって実装される基本的なインターフェースです。 2つの主なタイプは、 分類子リグレッサー です。 リグレッサー インターフェースを提供していますが、現在、コアの機械学習バックエンドでは実装されていません。これらは両方とも教師ありアルゴリズムです。各タイプには、データセットをトレーニング、予測、評価するためのメソッドが含まれています。

is_ready を使用して、バックエンドが使用可能であることを確認できます。

   /**
    * Is it ready to predict?
    *
    * @return bool
    */
   public function is_ready();

clear_model および delete_output_dir の目的は、機械学習バックエンドによって作成されたものをクリーンアップすることです。

   /**
    * Delete all stored information of the current model id.
    *
    * This method is called when there are important changes to a model,
    * all previous training algorithms using that version of the model
    * should be deleted.
    *
    * @param string $uniqueid The site model unique id string
    * @param string $modelversionoutputdir The output dir of this model version
    * @return null
    */
   public function clear_model($uniqueid, $modelversionoutputdir);


   /**
    * Delete the output directory.
    *
    * This method is called when a model is completely deleted.
    *
    * @param string $modeloutputdir The model directory id (parent of all model versions subdirectories).
    * @param string $uniqueid The site model unique id string
    * @return null
    */
   public function delete_output_dir($modeloutputdir, $uniqueid);
分類子

分類子は、指標の分析に基づいて、入力を2つ以上のカテゴリに分類します。これは、コースの完了と脱落などのバイナリ予測で頻繁に使用されます。この機械学習アルゴリズムは 教師あり です。分類がわかっている要素のトレーニングデータセットが必要です(たとえば、学生が脱落したかどうかを明確に定義した過去のコース)。これは、分類をサポートする機械学習バックエンドによって実装されるインターフェースです。 予測子 インターフェースを拡張します。

これらのメソッドと 予測子 メソッドの両方を実装する必要があります。

   /**
    * Train this processor classification model using the provided supervised learning dataset.
    *
    * @param string $uniqueid
    * @param \stored_file $dataset
    * @param string $outputdir
    * @return \stdClass
    */
   public function train_classification($uniqueid, \stored_file $dataset, $outputdir);


   /**
    * Classifies the provided dataset samples.
    *
    * @param string $uniqueid
    * @param \stored_file $dataset
    * @param string $outputdir
    * @return \stdClass
    */
   public function classify($uniqueid, \stored_file $dataset, $outputdir);


   /**
    * Evaluates this processor classification model using the provided supervised learning dataset.
    *
    * @param string $uniqueid
    * @param float $maxdeviation
    * @param int $niterations
    * @param \stored_file $dataset
    * @param string $outputdir
    * @param  string $trainedmodeldir
    * @return \stdClass
    */
   public function evaluate_classification($uniqueid, $maxdeviation, $niterations, \stored_file $dataset, $outputdir);
リグレッサー

リグレッサーは、指標の分析に基づいて結果(または従属)変数の値を予測します。この値は、コースの最終成績や学生がコースに合格する可能性など、線形です。この機械学習アルゴリズムは 教師あり です。分類がわかっている要素のトレーニングデータセットが必要です(たとえば、学生が脱落したかどうかを明確に定義した過去のコース)。これは、回帰をサポートする機械学習バックエンドによって実装されるインターフェースです。 予測子 インターフェースを拡張します。

これらのメソッドと 予測子 メソッドの両方を実装する必要があります。

   /**
    * Train this processor regression model using the provided supervised learning dataset.
    *
    * @param string $uniqueid
    * @param \stored_file $dataset
    * @param string $outputdir
    * @return \stdClass
    */
   public function train_regression($uniqueid, \stored_file $dataset, $outputdir);


   /**
    * Estimates linear values for the provided dataset samples.
    *
    * @param string $uniqueid
    * @param \stored_file $dataset
    * @param mixed $outputdir
    * @return void
    */
   public function estimate($uniqueid, \stored_file $dataset, $outputdir);


   /**
    * Evaluates this processor regression model using the provided supervised learning dataset.
    *
    * @param string $uniqueid
    * @param float $maxdeviation
    * @param int $niterations
    * @param \stored_file $dataset
    * @param string $outputdir
    * @param  string $trainedmodeldir
    * @return \stdClass
    */
   public function evaluate_regression($uniqueid, $maxdeviation, $niterations, \stored_file $dataset, $outputdir);