H2O-実行中のサンプルアプリケーション
以下のスクリーンショットに示すように、サンプルのリストで[Airlines DelayFlow]リンクをクリックします-
確認すると、新しいノートブックが読み込まれます。
すべての出力をクリアする
ノートブックのコードステートメントを説明する前に、すべての出力をクリアしてから、ノートブックを徐々に実行してみましょう。すべての出力をクリアするには、次のメニューオプションを選択します-
Flow / Clear All Cell Contents
これは次のスクリーンショットに示されています-
すべての出力がクリアされたら、ノートブックの各セルを個別に実行し、その出力を調べます。
最初のセルの実行
最初のセルをクリックします。セルが選択されていることを示す赤いフラグが左側に表示されます。これは、以下のスクリーンショットに示されているとおりです-
このセルの内容は、MarkDown(MD)言語で記述されたプログラムコメントです。コンテンツは、ロードされたアプリケーションの機能を説明しています。セルを実行するには、下のスクリーンショットに示すように[実行]アイコンをクリックします-
現在のセルには実行可能コードがないため、セルの下に出力は表示されません。これで、カーソルが自動的に次のセルに移動し、実行の準備が整います。
データのインポート
次のセルには、次のPythonステートメントが含まれています-
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
このステートメントは、allyears2k.csvファイルをAmazonAWSからシステムにインポートします。セルを実行すると、ファイルがインポートされ、次の出力が表示されます。
データパーサーの設定
次に、データを解析して、MLアルゴリズムに適したものにする必要があります。これは、次のコマンドを使用して実行されます-
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
上記のステートメントを実行すると、セットアップ構成ダイアログが表示されます。ダイアログでは、ファイルを解析するためのいくつかの設定が可能です。これは、以下のスクリーンショットに示されているとおりです-
このダイアログでは、指定されたドロップダウンリストから目的のパーサーを選択し、フィールドセパレーターなどの他のパラメーターを設定できます。
データの解析
上記の構成を使用して実際にデータファイルを解析する次のステートメントは長いものであり、次のようになります。
parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
"ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
"Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
"Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
"Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304
構成ボックスで設定したパラメーターが上記のコードにリストされていることを確認してください。次に、このセルを実行します。しばらくすると、解析が完了し、次の出力が表示されます-
データフレームの調査
処理後、次のステートメントを使用して調べることができるデータフレームを生成します-
getFrameSummary "allyears2k.hex"
上記のステートメントを実行すると、次の出力が表示されます-
これで、データを機械学習アルゴリズムに入力する準備が整いました。
次のステートメントは、回帰モデルを使用することを示し、事前設定された正則化とラムダ値を指定するプログラムコメントです。
モデルの構築
次に、最も重要なステートメントがあります。それはモデル自体の構築です。これは次のステートメントで指定されます-
buildModel 'glm', {
"model_id":"glm_model","training_frame":"allyears2k.hex",
"ignored_columns":[
"DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
"WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
"solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
"standardize":true,"non_negative":false,"score_each_iteration":false,
"max_iterations":-1,"link":"family_default","intercept":true,
"objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
"prior":-1,"max_active_predictors":-1
}
ファミリタイプが二項に設定された一般化線形モデルスイートであるglmを使用します。上記のステートメントでこれらが強調表示されていることがわかります。私たちの場合、期待される出力はバイナリであるため、二項型を使用します。他のパラメータは自分で調べることができます。たとえば、前に指定したアルファとラムダを見てください。すべてのパラメーターの説明については、GLMモデルのドキュメントを参照してください。
ここで、このステートメントを実行します。実行すると、次の出力が生成されます-
確かに、実行時間はマシンによって異なります。ここで、このサンプルコードの最も興味深い部分があります。
出力の調査
次のステートメントを使用して、作成したモデルを出力するだけです。
getModel "glm_model"
glm_modelは、前のステートメントでモデルを構築するときにmodel_idパラメーターとして指定したモデルIDであることに注意してください。これにより、いくつかのさまざまなパラメーターを使用して結果を詳細に示す膨大な出力が得られます。レポートの部分的な出力を以下のスクリーンショットに示します-
出力からわかるように、これはデータセットで一般化線形モデリングアルゴリズムを実行した結果であることがわかります。
SCORING HISTORYのすぐ上に、MODEL PARAMETERSタグが表示され、それを展開すると、モデルの構築中に使用されるすべてのパラメーターのリストが表示されます。これは、以下のスクリーンショットに示されています。
同様に、各タグは特定のタイプの詳細な出力を提供します。さまざまなタグを自分で展開して、さまざまな種類の出力を調べます。
別のモデルの構築
次に、データフレーム上にディープラーニングモデルを構築します。サンプルコードの次のステートメントは、単なるプログラムコメントです。次のステートメントは、実際にはモデル構築コマンドです。ここに示す通りです−
buildModel 'deeplearning', {
"model_id":"deeplearning_model","training_frame":"allyear
s2k.hex","ignored_columns":[
"DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
"CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"res ponse_column":"IsDepDelayed",
"activation":"Rectifier","hidden":[200,200],"epochs":"100",
"variable_importances":false,"balance_classes":false,
"checkpoint":"","use_all_factor_levels":true,
"train_samples_per_iteration":-2,"adaptive_rate":true,
"input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
"score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
"overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
"seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
"initial_weight_distribution":"UniformAdaptive","classification_stop":0,
"diagnostics":true,"fast_mode":true,"force_load_balance":true,
"single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
"MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
"average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
"reproducible":false,"export_weights_and_biases":false
}
上記のコードでわかるように、ディープラーニングモデルのドキュメントで指定されている適切な値に設定されたいくつかのパラメーターを使用して、モデルを構築するためのディープラーニングを指定します。このステートメントを実行すると、GLMモデルの構築よりも時間がかかります。タイミングは異なりますが、モデルの構築が完了すると、次の出力が表示されます。
ディープラーニングモデルの出力の調査
これにより、前の場合と同様に次のステートメントを使用して調べることができる種類の出力が生成されます。
getModel "deeplearning_model"
クイックリファレンスとして、以下に示すROC曲線の出力を検討します。
前の場合と同様に、さまざまなタブを展開して、さまざまな出力を調べます。
モデルの保存
さまざまなモデルの出力を調査した後、実稼働環境でそれらの1つを使用することにします。H20を使用すると、このモデルをPOJO(Plain Old Java Object)として保存できます。
出力の最後のタグPREVIEWPOJOを展開すると、微調整されたモデルのJavaコードが表示されます。これを実稼働環境で使用してください。
次に、H2Oの非常にエキサイティングな機能について学習します。AutoMLを使用して、パフォーマンスに基づいてさまざまなアルゴリズムをテストおよびランク付けする方法を学習します。