H2o-running-sample-application

提供:Dev Guides
移動先:案内検索

H2O-サンプルアプリケーションの実行

以下のスクリーンショットに示すように、サンプルのリストで航空会社の遅延フローのリンクをクリックします-

サンプルアプリケーション

確認後、新しいノートブックがロードされます。

すべての出力をクリアする

ノートブックのコードステートメントを説明する前に、すべての出力をクリアしてから、ノートブックを徐々に実行してみましょう。 すべての出力をクリアするには、次のメニューオプションを選択します-

Flow/Clear All Cell Contents

これは、次のスクリーンショットに示されています-

出力のクリア

すべての出力がクリアされたら、ノートブックの各セルを個別に実行し、その出力を調べます。

最初のセルの実行

最初のセルをクリックします。 セルが選択されていることを示す赤いフラグが左側に表示されます。 これは、以下のスクリーンショットに示されているとおりです-

最初のセル

このセルの内容は、MarkDown(MD)言語で書かれたプログラムコメントです。 内容は、ロードされたアプリケーションの動作を説明しています。 セルを実行するには、以下のスクリーンショットに示すように、実行アイコンをクリックします-

MarkDown

現在のセルには実行可能なコードがないため、セルの下には出力が表示されません。 カーソルは自動的に次のセルに移動し、実行準備が整います。

データのインポート

次のセルには、次のPythonステートメントが含まれています-

importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]

このステートメントは、allyears2k.csvファイルをAmazon AWSからシステムにインポートします。 セルを実行すると、ファイルがインポートされ、次の出力が表示されます。

ステートメントのインポート

データパーサーのセットアップ

次に、データを解析し、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"

上記のステートメントの実行時に、次の出力が表示されます-

DatExamining aframe

これで、データを機械学習アルゴリズムにフィードする準備が整いました。

次のステートメントは、回帰モデルを使用し、事前設定された正則化とラムダ値を指定するというプログラムのコメントです。

モデルの構築

次に、最も重要なステートメントがあり、それはモデル自体を構築しています。 これは、次のステートメントで指定されています-

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モデルの資料を参照してください。

次に、このステートメントを実行します。 実行すると、次の出力が生成されます-

生成されたaframe

確かに、実行時間はマシンによって異なります。 次に、このサンプルコードの最も興味深い部分があります。

出力を調べる

私たちは次のステートメントを使用して構築したモデルを単に出力します-

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曲線出力を検討します。

ディープラーニング

前の場合と同様に、さまざまなタブを展開し、さまざまな出力を調べます。

モデルを保存する

さまざまなモデルの出力を検討した後、実稼働環境でそれらのいずれかを使用することにします。 H20では、このモデルをPOJO(Plain Old Java Object)として保存できます。

出力の最後のタグPREVIEW POJOを展開すると、微調整されたモデルのJavaコードが表示されます。 これを実稼働環境で使用します。

モデルの保存

次に、H2Oの非常にエキサイティングな機能について学習します。 AutoMLを使用して、パフォーマンスに基づいてさまざまなアルゴリズムをテストおよびランク付けする方法を学習します。