Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

IntegratedML の基本

IntegratedML は、自動機械学習機能を SQL から直接使用して予測モデルを作成および使用できる InterSystems IRIS® の機能です。

IntegratedML のワークフロー
  1. IntegratedML を使用するには、まず入力フィールド (特徴)、予測されたフィールド (ラベル)、およびこれらのフィールドのデータ型に関するメタデータを含むモデル定義を指定します。モデル定義にはデータの構造のみが格納され、データ自体は格納されません。

    • オプション — トレーニングを実行するプロバイダを指定する ML 構成を選択できます。トレーニングの前にこの構成をカスタマイズすることも、何もアクションを行わずにシステムの既定の構成を使用することもできます。

  2. アクティブな ML 構成で指定されたプロバイダを使用し、データを使ってモデルをトレーニングします。プロバイダは構造化プロセスを使用して、さまざまな機械学習モデル・タイプ (線形回帰、ランダム・フォレストなど) のパフォーマンスをデータセットと比較して、適切なモデルを返します。このプロセスはプロバイダによって異なります。

    • オプション — モデルのトレーニング後、テスト・データを使用してモデルを検証し、モデルの予測パフォーマンスを評価できます。

  3. これで、トレーニングされたモデルを SQL 関数で呼び出して、データに基づいて予測をすることができます。

定義

IntegratedML 固有の用語については、以下の定義を参照してください。

モデル

モデルは、IntegratedML で使用されるプライマリ・オブジェクトです。モデル・エンティティには、次の 2 つのタイプがあります。

  • モデル定義 — IntegratedML では、モデルはテーブルやインデックスと同じようにデータベース・スキーマの一部です。CREATE MODEL 文は、新しいモデル定義をスキーマに導入します。このモデル定義では、トレーニングに使用される ML 構成と共に特徴、ラベル、およびデータ型を指定します。

  • トレーニングされたモデルTRAIN MODEL コマンドはモデル定義を使用し、構成で指定されたプロバイダを使ってモデルをトレーニングします。このトレーニングされたモデルを使用して、データに基づいて予測を行います。

プロバイダ

複数の組織が ML-as-a-Service を提供しており、顧客のデータセットに基づいて機械学習モデルを開発するためのツールや計算能力を提供しています。これらの自動化ソリューションは一般にスタンドアロン・アプリケーションとして提供され、顧客のデータセットに直接接続するフレームワークはありません。このため、機械学習フレームワークに応じて変化する条件に従って、データを他のワークフローにエクスポートする作業が必要になります。

IntegratedML は、自動機械学習機能を InterSystems IRIS® データ・プラットフォーム内に直接組み込み、InterSystems IRIS のデータと自動化されたワークフローとの間の接続を容易にすることで、これらの問題に対処します。プロバイダは、IntegratedML の共通インタフェース内でアクセスできる強力な機械学習フレームワークです。利用できるプロバイダは、以下のとおりです。

  • AutoML — インターシステムズが開発した機械学習エンジンで、InterSystems IRIS に収容されています

  • H2O — オープンソースの自動機械学習プラットフォーム

  • DataRobot — 高度なエンタープライズ自動機械学習プラットフォーム

ML 構成

ML 構成は、IntegratedML がモデルのトレーニングに使用する設定の集まりです。構成では主として、トレーニングを実行する機械学習プロバイダを指定します。プロバイダによっては、URL や API トークンなど接続に必要な情報も構成で指定します。既定の ML 構成がインストール時に直ちに有効になるため、最も単純なケースでは調整は不要です。オプションで、個々のニーズに合わせて追加の構成を作成および変更することもできます。

モデル定義の作成

モデルをトレーニングする前に、CREATE MODEL 文を使用してモデル定義を指定する必要があります。モデル定義は、IntegratedML がモデルのトレーニングに使用するテンプレートで、入力フィールド (特徴)、予測されたフィールド (ラベル)、およびこれらのフィールドのデータ型に関するメタデータが含まれます。モデル定義にはデータの構造のみが格納され、データ自体は格納されません。

構文 — CREATE MODEL

CREATE MODEL 文の構文は以下のとおりです。

CREATE MODEL model-name PREDICTING (label-column) [ WITH feature-column-clause ] FROM model-source [ USING json-object-string ]

または

CREATE MODEL model-name PREDICTING (label-column) WITH feature-column-clause [ FROM model-source ] [ USING json-object-string ]

または

CREATE MODEL model-name PREDICTING (label-column) WITH feature-column-clause FROM model-source [ USING json-object-string ]

例 — CREATE MODEL

以下の例では、CREATE MODEL 文におけるさまざまな節の使用法を示します。

FROM による特徴列の選択

以下のコマンドは、モデル定義 HousePriceModel を作成します。ラベル列 (予測される列) は、Price です。HouseData テーブルの列は、FROM 節を使用することにより、暗黙的にモデル定義の特徴列として提供されます。

CREATE MODEL HousePriceModel PREDICTING (Price) FROM HouseData

Important:

CREATE MODEL 文で FROM を使用しない場合、TRAIN MODEL 文で FROM が必要になります。

WITH による特徴列の選択

以下のコマンドは、上記と同じモデル定義 HousePriceModel を作成しますが、WITH 節を使用して特徴列とそのデータ型を明示的に指定します。

CREATE MODEL HousePriceModel PREDICTING (Price) WITH (TotSqft numeric, num_beds integer, num_baths numeric)
USING によるトレーニング・パラメータの選択

以下のコマンドは、オプションの USING 節を使用して、トレーニングに使うプロバイダのパラメータを指定します。USING 節の詳細は、"トレーニング・パラメータの追加 (USING 節)" を参照してください。

CREATE MODEL HousePriceModel PREDICTING (Price) FROM HouseData USING {"seed": 3}

モデルのためのデータの準備

モデル定義を作成する前に、以下の項目を考慮してデータセットを準備する必要があります。

  • データを単一のビューまたはテーブルにまとめます。

  • 特徴を評価します。

    • 列のいくつかの行に欠落値または Null 値があると、トレーニングするモデルに悪影響を及ぼす可能性があるため、該当の列を削除することが必要になります。CASE 式を使用して、列の NULL を任意の値に置き換えることも検討できます。

    • 文字数の多いデータを使用すると、モデルのトレーニングがかなり遅くなります。

詳細情報

INFORMATION_SCHEMA.ML_MODELS ビューで、モデル定義を確認することができます。

モデル定義に関して実行できるその他の操作の詳細は、"モデルのメンテナンス" を参照してください。

CREATE MODEL 文の詳細は、"InterSystems SQL リファレンス" を参照してください。

モデルのトレーニング

モデル定義を作成した後、TRAIN MODEL 文を使用して予測モデルをトレーニングできます。IntegratedML は、ML 構成で指定されたプロバイダを使用してこのモデルをトレーニングします。プロバイダは構造化プロセスを使用して、さまざまな機械学習モデル・タイプ (線形回帰、ランダム・フォレストなど) のパフォーマンスをデータと比較して、適切なモデルを返します。

構文 — TRAIN MODEL

TRAIN MODEL 文の構文は以下のとおりです。

TRAIN MODEL model-name [ AS preferred-model-name ] [ NOT DEFAULT ] [ FOR label-column ] [ WITH feature-column-clause ] [ FROM model-source ] [ USING json-object-string ]

例 — TRAIN MODEL

以下の例では、TRAIN MODEL 文におけるさまざまな節の使用法を示します。

最も単純な構文

以下のコマンドは、HousePriceModel モデル定義を使用してモデルをトレーニングします。

TRAIN MODEL HousePriceModel

Important:

CREATE MODEL 文で FROM を使用しなかった場合、TRAIN MODEL 文で FROM が必要になります。

FROM によるトレーニング・ データの選択

以下のコマンドは、HousePriceModel モデル定義および HouseData をトレーニング・データとして使用してモデルをトレーニングします。

TRAIN MODEL HousePriceModel FROM HouseData
AS によるトレーニング実行の命名

以下のコマンドは、HousePriceModel モデル定義を使用してモデルをトレーニングします。このトレーニングされたモデルは、HousePriceModelTrained という名前で保存されます。

TRAIN MODEL HousePriceModel AS HousePriceModelTrained FROM HouseData
WITH による特徴列のマッチング

以下のコマンドは、HousePriceModel モデル定義でモデルをトレーニングし、FOR 節と WITH 節を使用して、トレーニング・セットとモデル定義との間で、ラベル列と特徴列をそれぞれ明示的に合わせます。

TRAIN MODEL HousePriceModel FOR house_price WITH (TotSqft = house_area, num_beds = beds, num_baths = bathrooms) FROM OtherHouseData
USING によるトレーニング・パラメータの選択

以下のコマンドは、オプションの USING 節を使用して、トレーニングに使うプロバイダのパラメータを指定します。USING 節の詳細は、"トレーニング・パラメータの追加 (USING 節)" を参照してください。

TRAIN MODEL HousePriceModel USING {"seed": 3}

トレーニング・パラメータの追加 (USING 節)

USING 節を使用すると、プロバイダがモデルをトレーニングする方法に影響を与えるパラメータの値を指定できます。機械学習の専門家は、この特徴を使用して、ニーズに合わせてトレーニング実行を細かく調整できます。

例えば、以下のようにすることができます。

TRAIN MODEL my-model USING {"seed": 3}

USING 節を使用して、プロバイダ固有のトレーニング・パラメータを渡すことができます。この節には、パラメータ名とパラメータ値のキーと値のペアを記述した JSON 文字列を使用できます。これらの値のペアでは大文字と小文字が区別されます。

CREATE MODEL 文と TRAIN MODEL 文だけでなく ML 構成でも USING 節を渡すことができます。以下のように解決されます。

  • TRAIN MODEL コマンドの USING 節で指定したパラメータは、CREATE MODEL コマンドまたは既定の ML 構成で指定した同じパラメータの値を上書きします。

  • CREATE MODEL コマンドの USING 節で指定したパラメータは、TRAIN MODEL コマンドに暗黙的に使用され、既定の ML 構成で指定した同じパラメータの値を上書きします。

  • CREATE MODEL コマンドまたは TRAIN MODEL コマンドで USING を指定しない場合、モデルでは既定の ML 構成で指定された USING 節が使用されます。

すべてのパラメータ名は文字列として渡す必要があり、値はパラメータに固有の型で渡す必要があります。リストは、コンマで区切った文字列で入力する必要があります。

各プロバイダで使用できるパラメータの詳細は、以下を参照してください。

詳細情報

トレーニングされたモデルとトレーニング実行の結果は、それぞれ INFORMATION_SCHEMA.ML_TRAINED_MODELS ビューおよび INFORMATION_SCHEMA.ML_TRAINING_RUNS ビューで確認できます。トレーニングされたモデルは、トレーニングに使用されたモデル定義に関連付けられています。

トレーニングされたモデルに関して実行できるその他の操作の詳細は、"モデルのメンテナンス" を参照してください。

TRAIN MODEL 文の詳細は、"InterSystems SQL リファレンス" を参照してください。

モデルの検証

トレーニング中、プロバイダはトレーニングされたモデルを出力するプロセス全体を通して検証を実行します。IntegratedML が提供する VALIDATE MODEL 文を使用して、モデルに対して独自の検証を実行できます。VALIDATE MODEL は、提供されたテスト・セットに基づいて、回帰モデルと分類モデルの両方の簡易なメトリックを返します。

構文 — VALIDATE MODEL

VALIDATE MODEL 文の構文は以下のとおりです。

VALIDATE MODEL trained-model-name [ AS validation-run-name ] [ USE preferred-trained-model-name ] [ WITH feature-column-clause ] FROM testing-data-set

例 — VALIDATE MODEL

以下の例では、VALIDATE MODEL 文におけるさまざまな節の使用法を示します。

最も単純な構文

以下のコマンドは、HouseTesting をテスト・データ・セットとして使用して、トレーニングされた HousePriceModel を検証します。

VALIDATE MODEL HousePriceModel From HouseTesting
AS による検証実行の命名

以下のコマンドは、HouseTesting をテスト・データ・セットとして使用して、トレーニングされた HousePriceModel を検証し、検証実行を HousePriceValidation として保存します。

VALIDATE MODEL HousePriceModel AS HousePriceValidation From HouseTesting
WITH による特徴列のマッチング

以下のコマンドは、トレーニングされた HousePriceModel を検証し、WITH 節を使用してテスト・データ・セット HouseTesting の特徴列を明示的にマッチングします。

VALIDATE MODEL HousePriceModel WITH (TotSqft = area, num_beds = beds, num_baths = baths) From HouseTesting

詳細情報

検証実行とその結果については、それぞれ INFORMATION_SCHEMA.ML_VALIDATION_RUNS ビューと INFORMATION_SCHEMA.ML_VALIDATION_METRICS ビューで確認できます。

VALIDATE MODEL 文および検証メトリックの詳細は、"InterSystems SQL リファレンス" を参照してください。

予測

トレーニングされたモデルにはそれぞれ、専門の関数 PREDICT があり、この関数がプロバイダを呼び出して、該当する行セットの各行の結果を予測します。分類モデルにはさらに PROBABILITY 関数があり、この関数がプロバイダを呼び出して、指定された値がモデルに対して正しい結果である確率を返します。

これらはスカラ関数であり、SQL クエリの任意の場所で、他のフィールドや関数と組み合わせて使用できます。

PREDICT

PREDICT 関数を使用し、指定されたモデル (したがって、プロバイダ) を該当する行セットの各行に適用して、ラベル列の予測値 (回帰モデルの場合) または最も可能性の高い値 (分類モデルの場合) を返すことができます。各行には入力列 (特徴列) があり、モデルはこの入力列から出力 (ラベル) を返します。行セットは、必要な特徴列とラベル列を含む任意の行のセットとすることができます。

構文

PREDICT 関数の構文は以下のとおりです。

PREDICT(model-name [ USE trained-model-name ] [ WITH feature-column-clause ] )

以下の文では、モデル HousePriceModel の専門の関数 PREDICT をさまざまな形式で使用しています。

SELECT *, PREDICT(HousePriceModel) FROM NewHouseData
SELECT * FROM NewHouseData WHERE PREDICT(HousePriceModel) > 500000

WITH 節を使用して、すべてのデータセットに基づくのではなく、トレーニング・セットの列に対応する指定の値に基づいて予測できます。各引数は、CREATE MODEL 文で指定した順序どおりに記述する必要があります。欠落している引数は空のコンマで表現できます。例えば、以下の文では 2 セットの列データに基づいて予測が実行されます。

SELECT PREDICT(HousePriceModel WITH ({4200, 5, 4},{3800, , 3)))

また、WITH を使用して、モデルの作成元のデータセットとは異なるデータセットの列とモデルの列とのマッピングを指定することもできます。以下の文は、モデルから別のデータセットの列に特徴列をマッピングします。

SELECT PREDICT(HousePriceModel WITH (TotSqft = house_area, num_beds = beds, num_baths = bathrooms) FROM OtherHouseData
詳細情報

PREDICT 関数の詳細は、"InterSystems SQL リファレンス" を参照してください。

PROBABILITY

分類モデルの場合、PROBABILITY 関数を使用して、指定したラベル値が予測されたラベル値である確率を行ごとに返すことができます。これにより、その値の予測の相対的な強度を評価できます。

構文

PROBABILITY 関数の構文は以下のとおりです。

PROBABILITY(model-name [ USE trained-model-name ] FOR label-value [ WITH feature-column-clause ] )

以下の文では、モデル Iris_mdoel 専用の関数 PROBABILITY をさまざまな形式で使用しています。

SELECT *, PROBABILITY(Iris_Model FOR 'iris-setosa') FROM Iris_Flower_Set
SELECT * FROM Iris_Flower_Set WHERE PROBABILITY(Iris_Model FOR 'iris-setosa') < 0.3

以下の文では、モデル EmailFilter の専門の関数 PROBABILITY を使用しています。これは、ブーリアン値 0 または 1 を唯一の出力とする二項分類モデルであるため、暗黙的な FOR 値 1 を使用して、FOR 節を省略できます。

SELECT * EmailData WHERE PROBABILITY(EmailFilter) > 0.7
詳細情報

PROBABILITY 関数の詳細は、"InterSystems SQL リファレンス" を参照してください。

ウォークスルー

このウォークスルーでは、IntegratedML がアプリケーション通じて実世界のシナリオに提供するシンプルかつ強力な構文を示します。ユーザは少数の SQL クエリを使用し、自身のデータを使って検証済みの予測モデルを開発します。

医療システムの管理者は、患者の再入院率が増加していることを憂慮しています。患者システムを評価する際、医者が全体的にもっと慎重になるべきかもしれませんが、何を探せばよいかを示す基準が定義されていません。新しい分析ソリューションに多大な投資を行う前に、管理者からデータ・アナリストに対し、再入院した患者のプロファイルで傾向を見つけるモデルを迅速に開発する課題が課せられます。データは InterSystems IRIS® データベース・プラットフォームに格納されているため、アナリストは IntegratedML を使用すれば、手動によるフォーマット設定やプラットフォーム外部からのデータの移動を必要とする他のソリューションよりも、ずっと速く開発できることを知っています。

データの準備

IntegratedML を使用する前に、アナリストはデータを準備し、データがクリーンですぐにトレーニングに使用できることを確認します。使いやすいように、必要なデータを複数のテーブルから単一のビューに入れます。この例では、ビューに Hospital.PatientDataView という名前が付けられています。

構成のカスタマイズ

アナリストは、既定の構成で IntegratedML を使用することを選択します。モデルのトレーニングにさまざまなプロバイダを使用できることは分かっていますが、スピードと使いやすさから、追加の構文が不要な既定の構成を使用することにしました。

モデルの作成

データが揃い、単一のビューにまとめられたので、アナリストは自動機械学習機能でトレーニングするモデル定義を作成します。PatientReadmission というこの定義は、IsReadmitted を予測するラベル列として指定します。

CREATE MODEL PatientReadmission PREDICTING (IsReadmitted) FROM Hospital.PatientDataView
モデルのトレーニング

次に、アナリストはモデルをトレーニングします。

TRAIN MODEL PatientReadmission

トレーニングのためにカスタマイズされたパラメータを指定する必要はありません。

モデルの検証

アナリストは、準備したテスト・データセット (Hospital.PatientDataViewTesting) を使用してモデルを検証し、パフォーマンスに関するメトリックを取得して、それらのメトリックを確認します。

VALIDATE MODEL PatientReadmission FROM Hospital.PatientDataViewTesting
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS 
モデルを使用した予測

モデルをトレーニングして検証したので、次にアナリストはモデルを適用して、同じスキーマを持つさまざまなデータセットに基づいて予測を行います。この 1 週間に入院した患者の情報を含むデータセット Hospital.NewPatientDataView にモデルを適用し、再入院の可能性のある患者がいるかどうかを確認します。

SELECT ID FROM Hospital.NewPatientDataView WHERE PREDICT(PatientReadmission) = 1
まとめ

まとめると、アナリストは以下の SQL クエリを入力して、未加工データを有効な予測モデルに変換しました。

CREATE MODEL PatientReadmission PREDICTING (IsReadmitted) FROM Hospital.PatientDataView
TRAIN MODEL PatientReadmission
VALIDATE MODEL PatientReadmission FROM Hospital.PatientDataViewTesting
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS
SELECT ID FROM Hospital.NewPatientDataView WHERE PREDICT(PatientReadmission) = 1
FeedbackOpens in a new tab