R モデルの作成

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

カスタム リソースを使用して R モデルを作成します

カテゴリ: データ変換/操作

注意

適用対象: Machine Learning Studio (クラシック) のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) で R モデルの作成モジュールを使用して、R スクリプトからトレーニングされていないモデルを作成する方法について説明します。

モデルは、R パッケージに含まれる任意の学習器を基に、Machine Learningできます。

モデルを作成した後は、[モデルのトレーニング] を使用して、データセットでモデルをトレーニングできます(他の学習ツールと同様にMachine Learning。 トレーニング済みのモデルをモデルのスコア付けに渡し、予測を行うために使用できます。 その後、トレーニング済みモデルは保存でき、スコアリング ワークフローは Web サービスとして発行できます。

警告

現時点では、R モデルのスコア付けされた結果をモデルの評価またはモデルのクロス検証に渡す必要があります。 モデルを評価する必要がある場合は、カスタム R スクリプトを記述し、R スクリプトの実行モジュール を使用して実行 できます。

R モデルの作成を使用してカスタム R モジュールを保存および再使用する以外に、R を使用してモデリングとデータ管理プロセスの独自の実装を作成し、zip 形式でファイルをワークスペースにアップロードしてから、パッケージをカスタム モジュールとして登録することができます。 詳細については、「カスタム R モジュール」を参照してください

R モデルの作成を構成する方法

このモジュールを使用するには、R に関する中級または専門家の知識が必要です。このモジュールでは、このモジュールに既にインストールされている R パッケージに含まれているすべての学習器の使用Machine Learning。

Azure AI Galleryの このサンプルでは、一 般的なパッケージ + Create R Model を使用して、2 クラスの Naïve Bayes e1070 分類子 を実装しています。 例をワークスペースにコピーし、それに従って実行することをお勧めします。

  1. 次のモジュールを実験に追加します: R モデルの作成モデルのトレーニング、モデルの スコア付け

  2. [R モデルの作成 ] の [プロパティ] ウィンドウで、次のスクリプトを指定します。

  3. サンプル実験には、モデル評価用 のグラフ をプロットするために使用される Python スクリプトの実行モジュールも含まれます。 このモジュールは、Web サービスに発行する場合は省略可能ですが、実験を開発する場合に便利です。

    • Python スクリプトからグラフを表示するには、Python モジュールを右クリックし、[ Python デバイス] を選択して、[視覚化] を選択 します
    • モデル メトリックを表示するには、Python モジュールを右クリックし、[ Python データセット] を選択して、[視覚化] を選択 します

    オプションの Python モジュールのコードについては、モデル評価のための Python モジュールに関するページを参照してください

トレーニング スクリプト

次の例は、Trainer R スクリプトで使用できるコードの 種類を示しています

このスクリプトは、R パッケージを読み込み、パッケージから学習器を使用してモデルを作成し、 R モデルの作成に関するページで提供されている定義済みの定数と関数を使用して特徴列とラベル列を構成します。

library(e1071)
features <- get.feature.columns(dataset)
labels   <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
  • 最初の行では、使用する単純ベイズ分類子アルゴリズムを含む R パッケージ e1071 が読み込まれます。 これは、Machine Learning 環境にプレインストールされているパッケージの 1 つで、パッケージをダウンロードまたはインストールする必要は一度も必要とされません。

  • 次の行では、データセットから特徴列とラベル列を取得し、それらを という名前の新しい R データ フレームに結合します train.data

    features <- get.feature.columns(dataset)   
    labels <- as.factor(get.label.column(dataset))   
    train.data <- data.frame(features, labels)
    feature.names <- get.feature.column.names(dataset)
    
  • 次の定義済み関数の使用に注意してください。

    • get.label.columns() は、モデルのトレーニング モジュールでクラス ラベルとして選択されている 列を返 します。

    • get.feature.columns()は、データセット内の特徴として指定された列を選択します。

      既定では、ラベル列を除くすべての列は、Studio (クラシック) の機能と見なされます。 そのため、特定の列を特徴としてマークするには、 メタデータの編集を使用するか、R スクリプト内の列のセットを選択します。

    • get.feature.column.names(dataset) データセットから特徴列名を取得します。

  • 結合されたデータセットの名前は、 train.dataの列の名前として指定され、ラベル列の一 Class 時名が作成されます。

    names(train.data) <- c(feature.names, "Class")
    
  • コードの最後の行では、Naïve Bayes 分類子アルゴリズムを、データ フレーム内の変数 (特徴) と結果 (ラベル) train.data の関数として定義します。

    model <- naiveBayes(Class ~ ., train.data)
    
  • モデルの作成、トレーニング、スコア付けスクリプト全体で、変数名 を使用する必要があります model

スコアリング スクリプト

次のコードは、Scorer R スクリプトで指定する R コード の種類を示しています

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • 最初の行では、パッケージが読み込まれます。

  • 2 行目は、必要な変数名 で指定されたトレーニング スクリプトのトレーニング済みモデルを使用して、スコア付けデータセットの予測確率を計算します model

  • 3 行目では、予測されたクラス ラベルを割り当てるときに、確率に 0.5 のしきい値を適用します。

  • 最後の行は、出力データ フレーム scores にクラス ラベルと確率を結合します。

  • モデルのスコア付けモジュールに 渡されるデータ フレームの名前は である必要があります scores

省略可能な Python 評価スクリプト

次のサンプル実験にはAzure AI Gallery Python スクリプトが含まれています。このスクリプトは、モデル評価のメトリックとグラフを生成するために使用されます。

def azureml_main(dataframe):
    import matplotlib
    matplotlib.use("agg")
    
    from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
    ytrue = scores["Class"]
    ypred = np.array([float(val) for val in scores["classes"]])    
    probabilities = scores["probabilities"]
    
    accuracy, precision, recall, auc = \
    accuracy_score(ytrue, ypred),\
    precision_score(ytrue, ypred),\
    recall_score(ytrue, ypred),\
    roc_auc_score(ytrue, probabilities)
    
    metrics = pd.DataFrame();
    metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
    metrics["Value"] = [accuracy, precision, recall, auc]

# Plot ROC Curve
    fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
    fig = plt.figure()
    axis = fig.gca()
    axis.plot(fpr, tpr, linewidth=8)
    axis.grid("on")
    axis.set_xlabel("False positive rate")
    axis.set_ylabel("True positive rate")
    axis.set_title("ROC Curve")
    fig.savefig("roc.png")

    return metrics,

カスタム R モデル ワークフローを Web サービスとして発行する

実験を実行したら、完全な実験を Web サービスとして発行できます。

Studio (クラシック) の実験から Web サービスを作成する方法の更新された手順については、「チュートリアル手順 5: Web サービスをMachine Learningする」を参照してください

既定では、Web サービスには、ラベル列を含む、指定するトレーニング データのすべての入力列が必要です。 入力データ ソースとモデルのスコア付けモジュールの間に Select Columns in Dataset のインスタンスを追加して、予測しようとしているラベルを除外できます。

テクニカル ノート

  • R モデルの作成モジュールでは 、CRAN R の使用のみをサポートしています。 別のバージョンの R を選択したり、Microsoft R Open を使用したりすることはできません。

  • モジュールの最初の実行後にモデルはキャッシュされ、入力スクリプト内のすべての変更が完了するまで、後続の実行でそのモジュールは呼び出されません。 R スクリプトで次のいずれかを使用する場合、この動作を考慮に入れてください。

    • 乱数を生成する関数
    • 乱数を生成する関数
    • その他の不明確な関数
  • このモジュールで作成されたカスタム R モデルは、次のモジュールでは使用できません。

  • R モデルはカテゴリ別のデータの特徴の正規化や不足値の処理を自動的には実行しません。 このような変数の処理は、トレーニングおよびスコア付け R スクリプト内で行う必要があります。

定義済み関数の表

使用法 説明
get.feature.columns(dataset) すべての特徴列を取得します。
get.label.column(dataset, label.type=TrueLabelType) 型を指定して、ラベル列を取得します。

利用可能な型の一覧については、「定数」セクションを参照してください。
get.label.column.names(dataset) すべてのラベル列の名前を取得します。
get.label.column.name(dataset, label.type=TrueLabelType) 型を指定して、ラベル列の名前を取得します。

利用可能な型の一覧については、「定数」セクションを参照してください。
get.label.column.types(dataset) すべてのラベル列の型を取得します。
get.feature.column.names(dataset) すべての特徴列の名前を取得します。
dataset < - set.score.column(dataset, score.type, column.name) 型を指定して、スコア列を設定します。

利用可能な型の一覧については、「定数」セクションを参照してください。
dataset < - set.feature.channel(dataset, channel.name, column.names) 名前を指定して、特徴チャネルを設定します。

利用可能な名前の一覧については、「定数」セクションを参照してください。

定義済みの定数の表

定数 説明
TrueLabelType True のラベル列の型
ScoredLabelType スコア付けされたラベル列の型
RawScoreType 生のスコア列の型
CalibratedScoreType 調整されたスコア列の型
ScoredProbabilitiesMulticlassColumnTypePattern 多クラス分類器に対して、スコア付けされた確率列の型を準備するパターン
BayesianLinearRegressionScoresFeatureChannel ベイジアン線形回帰のスコアを持つ特徴チャネルの名前
BinaryClassificationScoresFeatureChannel バイナリ分類のスコアを持つ特徴チャネルの名前
MulticlassClassificationScoresFeatureChannel 多クラス分類のスコアを持つ特徴チャネルの名前
OrdinalRegressionScoresFeatureChannel 順序回帰のスコアを持つ、特徴チャネルの名前
RegressionScoresFeatureChannel 回帰のスコアを持つ、特徴チャネルの名前

機械学習の実験でこのモジュールを使用する方法のその他の例については、次のAzure AI Gallery。

想定される入力

名前 説明
トレーナー R スクリプト スクリプト データセットを入力として受け取り、未トレーニング モデルを出力する R スクリプト。
スコア R スクリプト スクリプト モデルおよびデータセットを入力として受け取り、スクリプトで指定したスコアを出力する R スクリプト。

出力

名前 説明
モデル ILearner インターフェイス 未トレーニング モデル

こちらもご覧ください

R スクリプトの実行
R 言語モジュール