プロバイダ
プロバイダは、IntegratedML の共通インタフェース内でアクセスできる強力な機械学習フレームワークです。トレーニングに使用するプロバイダを選択するには、目的のプロバイダを指定する ML 構成を選択します。
USING 節を使用して、これらのプロバイダに固有の追加のパラメータを渡すことができます。詳細は、"トレーニング・パラメータの追加 (USING 節)" を参照してください。
AutoML
AutoML はインターシステムズが開発した自動機械学習システムで、InterSystems IRIS® データ・プラットフォームに収容されています。IntegratedML、AutoML は、モデルを迅速にトレーニングして正確な結果を生成します。また、AutoML は基本的な自然言語処理 (NLP) を備えているため、プロバイダは構造化されていないテキストを含む特徴列を機械学習モデルにすばやく組み込むことができます。
%AutoML は IntegratedML のシステムの既定の ML 構成で、AutoML をプロバイダとして指しています。
トレーニング・パラメータ — AutoML
USING 節を使用して、トレーニング・パラメータを渡すことができます。例えば、以下のようにすることができます。
TRAIN MODEL my-model USING {"seed": 3}
AutoML では、以下のパラメータをトレーニング・クエリに渡すことができます。
トレーニング・パラメータ | 説明 |
---|---|
seed | 乱数ジェネレータを初期化するためのシード。複数のトレーニング実行での再現性を実現するために、シードとして任意の整数を手動で設定できます。既定では、seed は “None” に設定されます。 |
verbosity | トレーニング実行出力の詳細度を指定します。この出力は ML_TRAINING_RUNS ビューで確認できます。verbosity には以下のいずれかのオプションを指定できます。
|
TrainMode | 分類モデルでのモデル選択のメトリックを指定します。TrainMode には以下のいずれかのオプションを指定できます。
|
MaxTime | トレーニングの実行を開始するために割り当てる時間値 (分)。これによって必ずしもトレーニング時間が制限されるわけではありません。例えば、MaxTime を 3,000 分に設定していて、あるモデルのトレーニング後に 2 分残っていれば別のモデルをトレーニングできます。既定では、MaxTime は 14400 分に設定されています。
Note:
このパラメータは、TrainMode を “TIME” に設定している場合にのみ適用できます。 |
MinimumDesiredScore | 選択したトレーニング・モードに関係なく、分類モデルの選択で許可する最小スコア。0 ~ 1 の範囲で任意の値を設定できます。既定では、MinimumDesiredScore は 0 に設定されています。
Note:
このパラメータは、TrainMode を “TIME” に設定している場合にのみ適用できます。 トレーニングしたロジスティック回帰モデルまたはランダム・フォレスト分類子モデルのスコアが MinimumDesiredScore を超える場合、AutoML ではニューラル・ネットワーク・モデルがトレーニングされません。分類モデルに使用する各種モデルの詳細は、"AutoML リファレンス" を参照してください。 |
特徴量エンジニアリング
AutoML では、特徴量エンジニアリングを使用して既存の特徴を変更し、新しい特徴を作成し、不要な特徴を削除します。これらのステップによって、トレーニングの速度とパフォーマンスが向上します。
-
列タイプの分類により、モデルで特徴を正しく使用できます
-
特徴量削減により、冗長性が排除され、正確性が向上します
-
カテゴリカル特徴の One-hot エンコーディング
-
不完全なデータセットの欠落値/Null 値の入力
-
必要に応じて、時間/日/月/年に関連する新しい列を作成し、時間に関連するデータから洞察を生み出します。
モデルの選択
回帰モデルが適切であると判断された場合、AutoML は回帰モデルを開発するための単一プロセスを使用します。
分類モデルの場合、AutoML は以下の選択プロセスを使用して、最も正確なモデルを決定します。
-
データセットが大きすぎる場合、AutoML はデータをダウン・サンプル (圧縮) して、モデル選択プロセスを高速化します。モデルの選択後は、引き続き完全なデータセットがトレーニングに使用されます。
-
適切なスコアリング・メトリックを使用するために、AutoML はデータセットに二項分類の問題があるかどうか、または複数のクラスがあるかどうかを確認します。
-
AutoML はモンテカルロ交差検証を使用して、データセット全体のトレーニングのための最適なスコアリング・メトリックを持つモデルを選択します。
プラットフォームのサポートと既知の問題
AutoML プロバイダは IBM AIX® プラットフォーム、Red Hat Enterprise Linux 8 (ARM)、および Ubuntu 20.04 (ARM) ではサポートされていません。
AutoML は Python を使用して実装されていますが、AutoML Python パッケージと Embedded Python パッケージとの分離が不適切になることがあります。その結果、AutoML が正しく動作するために必要なパッケージが見つからないことがあります。この問題を回避するには、InterSystems IRIS インスタンスで Python の sys.path に <path to instance>/lib/automl を追加します。そのためには、%SYS.Python.Shell()Opens in a new tab で Python シェルを開き、以下のコマンドを入力します。
import sys
sys.path.append("<path to instance>\\lib\\automl")
詳細情報
AutoML の仕組みの詳細は、"AutoML リファレンス" を参照してください。
H2O
%H2O を ML 構成として設定することで、H2O をプロバイダとして指定できます。
PROVIDER が H2O を指す新しい ML 構成を作成することもできます。
H2O プロバイダでは、時系列モデルの作成はサポートされません。
トレーニング・パラメータ — H2O
USING 節を使用して、トレーニング・パラメータを渡すことができます。例えば、以下のようにすることができます。
TRAIN MODEL my-model USING {"seed": 3}
予想される入力およびこれらのパラメータの処理方法については、H2O のドキュメントOpens in a new tabを参照してください。不明なパラメータを指定すると、トレーニング中にエラーが発生します。
H2O プロバイダを使用してモデルをトレーニングする場合、max_models パラメータは既定で 5 に設定されます。
モデルの選択
使用するモデルのタイプの選択を行うために、システムは列にある一意の値の数を確認し、それを列内の値の合計数と比較します。一意の値の数が比較的少ない場合、システムは H2O 分類モデルを使用します。一意の値の数が比較的多い場合は、システムは H2O 回帰モデルを使用します。
列を H2O によって回帰モデルとしてトレーニングするよう強制するには、キーと値のペア "model_type":"regression" を USING 節に手動で追加します。例えば以下のようにします。
TRAIN MODEL h2o-model USING {"model_type": "regression"}
トレーニング・ログ出力
H2O を使用してモデルをトレーニングした後、INFORMATION_SCHEMA.ML_TRAINING_RUNS ビューの LOG 列をクエリできます。
既知の問題
-
H2O プロバイダを使用してトレーニングする際、以下のエラー・メッセージが表示されることがあります。
LogMessage: %ML Provider '%ML.H2O.Provider' is not available on this instance > ERROR #5002: ObjectScript error: <READ>%GetResponse+4^%Net.Remote.Object.1
その場合、以下を実行してこの問題を解決することができます。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[接続性]→[External Language Servers] に移動します。
-
%IntegratedML Server という名前のサーバを選択します。
-
[JVM 引数] フィールドに以下を追加します。
-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Addresses=false
-
-
USING 節を使用して H2O プロバイダにシード・パラメータを設定しても、再現可能なトレーニング実行は保証されません。これは、H2O の既定のトレーニング設定には、5 に設定された max_models パラメータが含まれ、早期停止モードがトリガされるためです。H2O のドキュメントOpens in a new tabにも記載されているように、H2O の勾配ブースティング・モデル・アルゴリズムの再現性は複雑なトピックです。
詳細情報
H2O の詳細は、H2O のドキュメントOpens in a new tabを参照してください。
DataRobot
DataRobot の AutoML 機能を使用するには、DataRobot とビジネス関係を結んでいる必要があります。
DataRobot のクライアントは IntegratedML を使用し、InterSystems IRIS® データ・プラットフォームに保存されているデータを利用してモデルをトレーニングできます。
DataRobot 構成を既定の ML 構成として選択することで、DataRobot をプロバイダとして指定できます。
SET ML CONFIGURATION datarobot_configuration
datarobot_configuration は ML 構成の名前で、PROVIDER は DataRobot を指しています。
トレーニング・パラメータ — DataRobot
USING 節を使用して、トレーニング・パラメータを渡すことができます。例えば以下のようにします。
TRAIN MODEL my-model USING {"seed": 3}
IntegratedML は DataRobot API を使用して HTTP 要求を作成し、モデリングを開始します。予想される入力およびこれらのパラメータの処理方法については、DataRobot のドキュメントOpens in a new tabを参照してください。不明なパラメータを指定すると、トレーニング中にエラーが発生します。
DataRobot プロバイダを使用してモデルをトレーニングする場合、quickrun パラメータは既定で true に設定されます。
PMML
IntegratedML は PMML コンシューマとしての PMML をサポートしており、SQL を使用して PMML モデルを容易にインポートおよび実行できます。
IntegratedML での PMML モデルの動作の仕組み
他のプロバイダと同様に、CREATE MODEL 文を使用して、特徴やラベルを含むモデル定義を指定します。このモデル定義には、PMML モデルに含まれるものと同じ特徴とラベルが含まれている必要があります。
TRAIN MODEL 文の動作は異なります。TRAIN MODEL 文はデータを “トレーニング” する代わりに、PMML モデルをインポートします。PMML モデルによって、特徴やラベルの情報を含め、トレーニングされたモデルのプロパティが提示されるため、トレーニングは不要です。このモデルは、USING 節によって識別されます。
モデル定義で指定した特徴列およびラベル列は、PMML モデルの特徴列およびラベル列と一致する必要があります。
CREATE MODEL 文と TRAIN MODEL 文のどちらにも FROM 節が必要ですが、指定されたデータは一切使用されません。
“トレーニングされた” PMML モデルを使用した予測は、IntegratedML のその他のトレーニングされたモデルと同様に機能します。PREDICT 関数は、PMML 定義と一致する特徴列を含むどのデータでも使用することができます。
PMML モデルのインポート方法
PMML モデルを使用するには、事前に %PMML を ML 構成として設定するか、PROVIDER が PMML を指す別の ML 構成を選択する必要があります。
PMML モデルは、USING 節を使用して指定できます。以下のいずれかのパラメータを選択できます。
"class_name" パラメータを使用して、PMML モデルのクラス名を指定できます。例を以下に示します。
USING {"class_name" : "IntegratedML.pmml.PMMLModel"}
"file_name" パラメータを使用して、PMML モデルへのディレクトリ・パスを指定できます。例を以下に示します。
USING {"file_name" : "C:\temp\mydir\pmml_model.xml"}
例
以下の例では、USING 節を渡して PMML モデルを指定する複数のメソッドを示しています。
以下の一連の文では、ファイル名によって住宅価格の PMML モデルを指定する PMML 構成を作成し、その後 TRAIN MODEL 文でモデルをインポートします。
CREATE ML CONFIGURATION pmml_configuration PROVIDER PMML USING {"file_name" : "C:\PMML\pmml_house_model.xml"}
SET ML CONFIGURATION pmml_configuration
CREATE MODEL HousePriceModel PREDICTING (Price) WITH (TotSqft numeric, num_beds integer, num_baths numeric)
TRAIN MODEL HousePriceModel FROM HouseData
SELECT * FROM NewHouseData WHERE PREDICT(HousePriceModel) > 500000
以下の一連の文では、指定された %PMML 構成を使用し、TRAIN MODEL 文でクラス名によって PMML モデルを指定します。
SET ML CONFIGURATION %PMML
CREATE MODEL HousePriceModel PREDICTING (Price) WITH (TotSqft numeric, num_beds integer, num_baths numeric)
TRAIN MODEL HousePriceModel FROM HouseData USING {"class_name" : "IntegratedML.pmml.PMMLHouseModel"}
SELECT * FROM NewHouseData WHERE PREDICT(HousePriceModel) > 500000
その他のパラメータ
PMML ファイルに複数のモデルが含まれる場合、IntegratedML では、既定でファイル内の最初のモデルが使用されます。ファイル内の別のモデルを指す場合は、USING 節で model_name パラメータを使用します。
TRAIN MODEL my_pmml_model FROM data USING {"class_name" : my_pmml_file, "model_name" : "model_2_name"}