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

CREATE MODEL (SQL)

モデル定義を作成します。

Synopsis

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

引数

このコマンド概要は、CREATE MODEL の有効な形式を示します。CREATE MODEL コマンドには FROM 節または WITH 節 (または両方) が必要です。

model-name 作成するモデル定義の名前。テーブル名と同様の追加の名前付け制約に従う、有効な識別子です。モデル名は未修飾です (modelname)。モデル名が未修飾の場合は、既定のスキーマ名が使用されます。
PREDICTING ( label-column ) 予測される列名 (ラベル列)。標準の識別子です。この後の説明を参照してください。
WITH feature-column-clause 列名とそのデータ型として、または列名とデータ型のコンマ区切りリストとしての、モデル (特徴列) への入力。各列名は、標準の識別子です。
FROM model-source モデルの構築元にするテーブルまたはビュー。テーブルビュー、または結合の結果です。
USING json-object-string オプション — 1 つ以上のキーと値のペアを指定する JSON 文字列。詳細は、この後の説明を参照してください。

説明

CREATE MODEL コマンドは、指定された構造のモデル定義を作成します。少なくとも以下が含まれます。

  • モデル名

  • ラベル列

  • 特徴列

予測

入力列 (特徴列) を基にして、モデルが予測する出力列 (ラベル列) を指定する必要があります。例えば、スパム・メールである電子メールを識別する SpamFilter モデルを設計する場合、IsSpam というラベル列を使用できます。これは、指定された電子メールがスパムかどうかを指定するブーリアン値です。この列のデータ型を指定することもできます。指定しない場合、IntegratedML は以下の型を推測します。

CREATE MODEL SpamFilter PREDICTING (IsSpam) FROM EmailData
CREATE MODEL SpamFilter PREDICTING (IsSpam binary) FROM EmailData

WITH と FROM

モデルのスキーマ特性を指定するには、モデル定義に WITH または FROM (あるいはその両方) が含まれている必要があります。

WITH

WITH を使用して、モデル定義に含める入力列 (特徴) を指定できます。文で FROM を使用する場合を除き、各列のデータ型も指定する必要があります。

CREATE MODEL SpamFilter PREDICTING (IsSpam) WITH (email_length int, subject_title varchar)
CREATE MODEL SpamFilter PREDICTING (IsSpam) WITH (email_length, subject_title) FROM EmailData

FROM

FROM を使用すると、各列を個別に識別しなくても、指定されたテーブルまたはビューのすべての列を使用できます。

CREATE MODEL SpamFilter PREDICTING (IsSpam) FROM EmailData

この節は一般的であり、任意のサブクエリ式を指定できます。IntegratedML は各列のデータ型を推測します。FROM を使用して、このモデル定義を使用する将来の TRAIN MODEL 文の既定のデータ・セットを指定します。FROMWITH を一緒に使用して、既定のデータ・セットを指定し、特徴列に明示的に名前を付けることができます。

WITH 節がない場合、IntegratedML は各列のデータ型を推測して、FROM 節の結果を以下のクエリであるかのように暗黙的に使用します。

SELECT * FROM model-source

USING

モデル定義の既定の USING 節を指定できます。この節は、1 つ以上のキーと値のペアで構成される JSON 文字列を受け入れます。TRAIN MODEL を実行すると、既定ではモデル定義の USING 節が使用されます。ML 構成の USING 節で指定したすべてのパラメータは、モデル定義の USING 節の同じパラメータを上書きします。

指定するパラメータが、選択するプロバイダによって認識されることを確認する必要があります。これを行わないと、トレーニング時にエラーが発生することがあります。

必要なセキュリティ特権

CREATE MODEL を呼び出すには、%MANAGE_MODEL 特権が必要です。ない場合、SQLCODE –99 エラーになります (特権違反)。%MANAGE_MODEL 特権を割り当てるには、GRANT コマンドを使用します。

モデルの名前付け規約

モデル名は、識別子の規則に従い、以下のような制約を受けます。既定のモデル名は、簡単な識別子です。モデル名は 256 文字を超えることはできません。また、モデル名では大文字と小文字が区別されません。詳細は、"InterSystems SQL の使用法" の “識別子” の章を参照してください。

InterSystems IRIS はモデル名を使用して、対応するクラス名を生成します。クラス名には英数字 (文字および数字) のみを使用し、最初の 96 文字は一意である必要があります。このクラス名を生成するために、InterSystems IRIS は最初にモデル名から句読点を削除し、次に最初の 96 文字が一意である識別子を生成します。その際、クラス名の一意性を維持するために、必要に応じて最後の文字を (0 で始まる) 整数に置き換えます。InterSystems IRIS は有効なモデル名から一意のクラス名を生成しますが、モデルの名前を付ける際には、この名前の生成に伴う以下の制約について考慮する必要があります。

  • モデル名には、最低でも 1 文字を含める必要があります。ビュー名の先頭の文字または最初の句読点に続く文字は、数字以外の文字にする必要があります。

  • InterSystems IRIS は 16 ビット (ワイド) 文字のモデル名をサポートします。$ZNAME テストに合格した文字は、有効な文字です。

  • モデル名の最初の文字が句読点文字の場合、2 番目の文字に数字を指定することはできません。これにより、SQLCODE -400 エラーが発生し、生成される %msg の値は "エラー #5053: クラス名 'schema.name' は正しくありません" になります (句読点文字なし)。例えば、指定したモデル名が %7A の場合、生成される %msg は "エラー #5053: クラス名 'User.7A' は正しくありません" になります。

  • 生成されたクラス名には句読点が含まれないため、句読点のみ既存のモデル名と異なるモデル名を作成することは可能ですが、お勧めできません。この場合、InterSystems IRIS は、一意のクラス名を作成するために名前の最後の文字を (0 で始まる) 整数に置き換えます。

  • モデル名は 96 文字よりも大幅に長くすることができますが、最初の 96 の英数字が異なるようにモデル名を作成すると処理がはるかに容易になります。

モデル名は未修飾にする必要があります。モデル名が未修飾の場合は (viewname)、システム全体の既定のスキーマ名が使用されます。

CREATE MODEL PatientReadmit PREDICTING (IsReadmitted) FROM patient_table USING {"seed": 3}
CREATE MODEL PatientReadmit PREDICTING (IsReadmitted) WITH (age, gender, encounter_type, admit_reason, starttime, endtime, prior_visits, diagnosis, comorbitities)

関連項目

FeedbackOpens in a new tab