Skip to main content

CREATE MODEL (SQL)

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

構文

モデルの分類または回帰

CREATE MODEL [ IF NOT EXISTS ] model-name 
      PREDICTING ( label-column )
      FROM model-source 
      [ USING json-object ]
CREATE MODEL [ IF NOT EXISTS ] model-name 
      PREDICTING ( label-column )       
      WITH feature-column-clause 
      [ USING json-object ]
CREATE MODEL [ IF NOT EXISTS ] model-name 
      PREDICTING ( label-column )       
      WITH feature-column-clause 
      FROM model-source 
      [ USING json-object ]
時系列モデル

CREATE [ TIME ] SERIES MODEL [ IF NOT EXISTS ] model-name 
      PREDICTING ( label-column1,  label-column2, ...)      
      BY ( timestep ) 
      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 文字列。詳細は、この後の説明を参照してください。
BY ( timestep ) 時系列モデルが構築される時間ベースのデータを含む列。

説明

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

  • モデル名

  • ラベル列 (時系列モデルの場合は複数の列)

  • 特徴列

回帰モデルと分類モデルは、ほとんど同じ方法で作成され、考慮事項も同じです。ただし、時系列モデルでは別の考慮事項が必要になるため、若干異なる構文を採用しています。これらのモデルのタイプ間の相違点は、以下の該当する節で列挙しています。

予測

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

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

時系列モデルの作成時には、複数の列の値を予測したいことがよくあります。これを行うには、コンマ区切りのリストで予測する列の名前を指定します。この列のデータ型を指定することもできます。指定しない場合、IntegratedML は以下の型を推測します。モデルがテーブル内のすべての列の値を予測するように指定するには、アスタリスク (*) を使用します。

CREATE TIME SERIES MODEL WeatherForecast PREDICTING (Temp, Precipitation, Humidity, UVIndex) BY (Date) FROM WeatherData
CREATE TIME SERIES MODEL WeatherForecast PREDICTING (*) BY (DATE) FROM WeatherData

WITH と FROM

モデルのスキーマ特性を指定するには、分類または回帰のモデル定義に WITH または FROM (あるいはその両方) が含まれている必要があります。時系列モデルには FROM 節を含める必要があり、WITH を含めることはできません。

WITH

WITH を使用して、モデル定義に含める入力列 (特徴) を指定できます。文で FROM 節を使用している場合でも、各列のデータ型を指定する必要があることに注意してください。

CREATE MODEL SpamFilter PREDICTING (IsSpam) WITH (email_length int, subject_title varchar)
CREATE MODEL SpamFilter PREDICTING (IsSpam) WITH (email_length int, subject_title varchar) 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 節の同じパラメータを上書きします。

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

時系列パラメータ

時系列モデルは、USING 節の 3 つのオプション・パラメータもサポートしています。これらのパラメータでは大文字と小文字が区別されません。これらは、以下のとおりです。

  • forward では、予測する将来の時間ステップの数を正の整数で指定します。元のデータセットの最新の時刻または日付の後に、予測された行が表示されます。これと backward 設定の両方を同時に指定することもできます。

  • backward では、予測する過去の時間ステップの数を正の整数で指定します。元のデータセットの最も早い時刻または日付の前に、予測された行が表示されます。これと forward 設定の両方を同時に指定することもできます。AutoML プロバイダではこのパラメータは無視されます。

  • frequency では、予測する時間ステップのサイズと単位の両方を正の整数として指定し、その後に時間の単位を表す 1 文字を付加します。この値を指定しない場合、データ内で最も一般的な時間ステップが指定されます。DataRobot プロバイダではこのパラメータは無視されます。

    時間の単位の 1 文字での省略形を以下のテーブルに示します。

    省略形 時間の単位
    y year
    m month
    w week
    d day
    h hour
    t minute
    s second

必要なセキュリティ特権

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

モデルの名前付け規約

モデル名は、識別子の規則に従い、以下のような制約を受けます。既定のモデル名は、簡単な識別子です。モデル名は 256 文字を超えることはできません。また、モデル名では大文字と小文字が区別されません。

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)
CREATE TIME SERIES MODEL BusinessGrowth PREDICTING (*) BY (date) FROM BusinessData USING {"Forward":5}

関連項目

FeedbackOpens in a new tab