R モデルの作成

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

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

注意

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

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

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

モデルは、Azure Machine Learning 環境の R パッケージに含まれている学習器に基づいて作成できます。

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

警告

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

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

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

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

この Azure AI Gallery のサンプルでは、一般的な e1070 パッケージ + Create R モデルを使用して、2クラスの単純 Bayes 分類子を実装しています。 この例をワークスペースにコピーして、次の手順に従うことをお勧めします。

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

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

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

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

    オプションの Python モジュールのコードについては、「 モデル評価用の Python モジュール」を参照してください。

トレーニングスクリプト

次の例は、 トレーナー 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 が読み込まれます。 これは、Azure 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")
    
  • コードの最後の行では、データフレームの変数 (特徴) と結果 (ラベル) の関数として、単純な Bayes 分類子アルゴリズムが定義されて train.data います。

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

スコアリングスクリプト

次のコードは、スコアの付いた 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: Azure Machine Learning web サービスをデプロイする」を参照してください。

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

テクニカル ノート

  • 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を参照してください。

想定される入力

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

出力

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

関連項目

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