ブロックリファレンス

Block Reference

機械学習

ML ボード予測(オンライン)

2017/4/12 より前のトレーニングは、2017/6/1 以降は使えなくなります。予測で使用するトレーニングは、2017/4/12 以降にトレーニングしたものをお使いください。

このブロックはベータ版です。正式版リリース後、本ブロックは利用できなくなります。ご注意ください。
※正式版リリース後は、正式版のブロックをご利用ください。

また、ベータ版での提供となるため、一部の機能が正常に動作しない可能性があります。機能改善や不具合などのフィードバックは、フォーラムやお問い合わせで情報提供をお願いします。フィードバックの内容は MAGELLAN BLOCKS の品質向上のために利用いたします。

概要

このブロックは、ML ボードでトレーニングした結果と予測因子データ使って、予測を行います。

このオンライン予測は、変数から予測因子データを読み込んで予測します。予測した結果は、変数へ出力します。

オンライン予測概略図

大量の予測データを使って予測したい場合は、「ML ボード予測(バッチ)」ブロックの使用をおすすめします。

  • BigQuery のクエリー結果を使って予測する場合は、1000 件までの上限があります。
  • 予測因子データの容量が多すぎるとオンライン予測ができないことがあります。

このブロックで使用する ML ボードのトレーニングは、適用を済ませておいてください。

予測因子データの形式

予測因子データは、このブロックを実行する前に、変数に設定しておきます。

変数に設定する内容は、「数値分類タイプ・数値回帰タイプ」と「画像分類タイプ」で異なります。

ここでは、オブジェクト生成ブロックと JSON というデータを表現するための記法を使って、どのようなデータを変数に設定すれば良いかを説明します。

JSON とは

まず、JSON について簡単に説明します。詳しくは、「JSON の紹介 」および RFC 7159 を参照してください。

  • JSON は、データを表現するための記法です。
    {
      "name": "John Smith",
      "age": 35,
      "languages": ["English", "Japanese"]
    }
    
  • JSON では、データは「」と表現します。値には以下のような種類があります。
    • 文字列: "abc""xyz" などのように、文字を並べたものです。ダブルクオート(")で囲んで表記します。
    • 数値: 11.23 などのように、数値そのものです。10 進数で表記します。1.234e-5 のように指数表記もできます。
    • 真偽値: 真偽を示す値です。真を true、偽を false で表します。
    • null: 値が空であることを示します。null と表記します。
    • 配列: 複数個の「」をひとまとめにしたものです。[1, 2, 3] のようにコンマ(,)区切りで「」を並べます。配列全体は、[] で囲みます。値のひとつひとつを「要素」と呼びます。
    • オブジェクト: 複数個の「名前」と「」のペアをひとまとめにしたものです。
      • オブジェクト全体は、{} で囲みます。
      • {"a": 1, "b": 2, "c": 3} のようにコンマ(,)区切りで、「名前」と「」のペアを並べます。
      • 「名前」と「値」のペアは、: で区切ります(名前: 値)。
      • 名前は文字列で表します(" で囲む)。
      • この「名前」と「値」のペアを「メンバー」と呼びます。
  • JSON の記法で記述したデータのことを「JSON テキスト」と言います。
数値分類タイプ・数値回帰タイプの場合

予測に使うデータとキーをセットにして、変数に設定します。

  • オブジェクト生成」ブロックの例:

    予測因子データが単一のケース

    上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして)キーと予測データを以下のルールで列挙します。

    • キー用のデータを必ず指定します。このデータのキーは、Key に key を指定し、Value は予測データを特定するキーとなる値を指定します。Value の種類は、必ず String にします。
    • キー以外の予測に使うデータは、Key にトレーニングデータ設定で指定した項目名を指定し、Value に予測に使うデータを指定します。Value の種類は、予測に使うデータの型に合わせます。

    数値型、月および曜日については、数値を文字列にしたデータも受け付けます。たとえば、数値型の場合、"99" や "1.5" などは、99 と 1.5 として扱います。月や曜日の場合、"0" や "6" などは、0 と 6 として扱います。

  • JSON テキストの例:
    {
      "key": "1",
      "sepal_length": 5.9,
      "sepal_width": 3.0,
      "petal_length": 4.2,
      "petal.width": 1.5
    }
    
    • オブジェクト値({...})で指定します。
    • キー用のメンバーを必ず指定します。このメンバーの名前は、必ず "key" とし、値は予測データを特定するキーとなる文字列値を指定します。
    • それ以外のメンバーでは、名前をトレーニングデータ設定で指定した項目名に合わせ、値にそれぞれの予測に使うデータを指定します。

複数の予測データを使って予測する場合は、以下のようにします。

  • オブジェクト生成」ブロックの例:

    予測因子データが複数のケース

    上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして)各予測データを列挙します。各予測データは、先に紹介したとおりです。

  • JSON テキストの例:
    [
      {
        "key": "1",
        "sepal_length": 5.9,
        "sepal_width": 3.0,
        "petal_length": 4.2,
        "petal_width": 1.5
      },
      {
        "key": "2",
        "sepal_length": 6.9,
        "sepal_width": 3.1,
        "petal_length": 5.4,
        "petal_width": 2.1
      },
      {
        "key": "3",
        "sepal_length": 5.1,
        "sepal_width": 3.3,
        "petal_length": 1.7,
        "petal_width": 0.5
      }
    ]
    
    • 配列値([...])で指定します。
    • 配列の各要素は、予測データをオブジェクト値で指定します。各オブジェクト値の形式は、先に紹介したとおりです。
画像分類タイプの場合

変数には、予測に使用する JPEG 形式の画像ファイルを指定します。この画像の指定には、いくつかの方法があります。

  • 画像ファイルへの GCS URL (gs://バケット名/画像ファイル名 のような形式) を文字列で指定します。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データの文字列のみのケース

      上図のように、Value の種類に String を選択します。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:

      "gs://my-bucket/sample01.jpg"

      文字列値("...")で、画像ファイルへの GCS URL を指定します。

  • 複数の画像を使って予測する場合は、画像ファイルへの GCS URL を配列で指定します。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データが文字列のみの配列のケース

      上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして)画像ファイルへの GCS URL を文字列(String)で列挙します。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:

      ["gs://my-bucket/sample01.jpg", "gs://my-bucket/sample02.jpg"]

      • 配列値([...])で指定します。
      • 各要素は、文字列値で画像ファイルへの GCS URL を指定します。
  • 数値分類タイプや数値回帰タイプのように、画像ファイルごとにキーの指定ができます。複数の画像で予測する場合、キーにより、それぞれの予測結果と予測画像ファイルを対応づけやすくなります。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データがオブジェクトのケース

      上図のように、Value の種類に Object を選択し、その内容として(Object 横の + ボタンをクリックして) キーと GCS URL を文字列(String)で列挙します。列挙するキーと画像ファイルへの GCS URL の Key には、それぞれkeyimage を指定します。

    • JSON テキストの例:

      {"key": "sample01", "image": "gs://my-bucket/sample01.jpg"}

      • オブジェクト値({...})で指定します。
      • キー用のメンバーを必ず指定します。このメンバーの名前は、必ず "key" とし、値は画像ファイルを特定するキーとなる文字列値を指定します。
      • もうひとつのメンバーで、画像ファイルの情報を指定します。このメンバーの名前は、必ず "image" とし、画像ファイルへの GCS URL を文字列値で指定します。

    複数の画像ファイルを指定する場合は、配列を使います。

    • オブジェクト生成」ブロックの例:

      画像分類タイプ予測因子データが複数オブジェクトのケース

      上図のように、Value の種類に Array を選択し、その内容として(Array 横の + ボタンをクリックして) 各画像ファイルの情報を列挙します。各画像ファイルの情報は、先に紹介したとおりです。

      このとき、「オブジェクト生成」ブロックの「結果を格納する変数」が _ の場合は、_.data が予測因子データです。

    • JSON テキストの例:
      [
        {
          "key": "sample01",
          "image": "gs://my-bucket/sample01.jpg"
        },
        {
          "key": "sample02",
          "image": "gs://my-bucket/sample02.jpg"
        }
      ]
      
      • 配列値([...]) で指定します。
      • 配列の各要素は、画像ファイルの情報をオブジェクト値で指定します。各オブジェクト値の形式は、先に紹介したとおりです。
  • キーを指定する場合の画像ファイルへの GCS URL 部分は、以下の形式で画像ファイルを渡すこともできます。

    • 画像ファイルの内容を Base64 でエンコードしたデータ
    • 画像ファイルの内容そのままのデータ(バイナリデータ)

予測結果の形式

予測結果は、変数に出力します。ここでは、その変数の内容を「ログへ出力」ブロックを使って出力した例(JSON 形式)を使って、予測結果の内容を解説します。

数値分類タイプの場合

以下は、数値分類タイプの例です。

{
  "predictions": [
    {
      "score": [
        8.715780131751671e-05,
        0.9995228052139282,
        0.00039013021159917116
      ],
      "key": "1",
      "label": 1
    },
    {
      "score": [
        9.230815578575857e-08,
        0.007054927293211222,
        0.9929450154304504
      ],
      "key": "2",
      "label": 2
    },
    {
      "score": [
        0.9998869895935059,
        0.00011299729521851987,
        1.5803254260760013e-09
      ],
      "key": "3",
      "label": 0
    }
  ]
}
  • 全体がひとつの JSON オブジェクトです。
  • "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
    • "score": 分類ごとの予測の確からしさです。
      • 順に分類値 0 の確からしさ、分類値 1 の確からしさ、分類値 2 の確からしさ・・・を表しています。
      • 例えば、[8.715780131751671e-05, 0.9995228052139282, 0.00039013021159917116] の場合は、分類値 00.00871578 %、分類値 199.952280521 %、分類値 20.039013021 % の確からしさです。
      • もっとも確からしい分類値が予測値となります。
    • "key": 予測に使用した予測因子データの "key" の値です。
    • "label": 予測値です。"score" の最も高い分類値が予測値となります。
数値回帰タイプの場合

以下は、数値回帰タイプの例です。

{
  "predictions": [
    {
      "output": 10261.9072265625,
      "key": "20170101"
    },
    {
      "output": 12506.2861328125,
      "key": "20170102"
    },
    {
      "output": 10304.1962890625,
      "key": "20170103"
    },
    {
      "output": 10350.099609375,
      "key": "20170104"
    }
  ]
}
  • 全体がひとつの JSON オブジェクトです。
  • "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
    • "output": 予測値です。
    • "key": 予測に使用した予測因子データの "key" の値です。
画像分類タイプの場合

以下は、画像分類タイプの例です。

{
  "predictions": [
    {
      "labels": [
        "cat",
        "dog"
      ],
      "score": [
        1.0,
        3.764146683238323e-08
      ],
      "key": "gs://my-bucket/blocks_ml_image_example/prediction/sample_01.jpg",
      "label": "cat"
    },
    {
      "labels": [
        "cat",
        "dog"
      ],
      "score": [
        7.805689392625936e-07,
        0.9999991655349731
      ],
      "key": "gs://my-bucket/blocks_ml_image_example/prediction/sample_02.jpg",
      "label": "dog"
    }
  ]
}
  • 全体がひとつの JSON オブジェクトです。
  • "predictions": 予測結果の配列です。予測結果は、以下のメンバーで構成するオブジェクトです。
    名前 説明
    "labels"

    分類の種類のリストです。この例の場合、"cat"(猫)と "dog"(犬)の 2 種類です。

    "labels" のリスト順序は、次の "score" のリスト順序に対応しています。

    "score"

    分類ごとの予測の確からしさです。

    この例の場合、"score" の 1 番目の値は、"cat" に対応し、"score" の 2 番目の値は、"dog" に対応します。

    "key" 予測にキーを指定した場合は、そのキーの値が出力されます。予測にキーを指定していない場合は、画像ファイルへの GCS URL が出力されます。
    "label" 予測値です。"score" の最も高い分類値が予測値となります。

プロパティ

プロパティ名 説明
ブロック名 ブロックの名前を指定します。ブロックに表示されます。
GCP サービスアカウント このブロックで使用する GCP サービスアカウントを選択します。
MLボード名 ML ボード名を指定します。
予測因子データの変数 予測因子データを格納している変数を指定します。
予測結果変数 予測結果データを格納する変数を指定します。
ブロックメモ ブロックに対するコメントを指定します。