H2o-quick-guide
H2O-はじめに
巨大なデータベースで機械学習モデルを開発するように依頼されたことはありますか? 通常、顧客はデータベースを提供し、潜在的な買い手はだれであるかなどの特定の予測を行うように求めます。不正なケースなどを早期に検出できる場合 これらの質問に答えるために、あなたの仕事は、顧客のクエリに答えを提供する機械学習アルゴリズムを開発することです。 機械学習アルゴリズムをゼロから開発するのは簡単な作業ではありません。市場ですぐに使用できる機械学習ライブラリがいくつかあるのに、なぜこれを行う必要があるのでしょうか。
最近では、これらのライブラリを使用し、これらのライブラリから十分にテストされたアルゴリズムを適用して、そのパフォーマンスを確認します。 パフォーマンスが許容範囲内にない場合は、現在のアルゴリズムを微調整するか、まったく異なるアルゴリズムを試してください。
同様に、同じデータセットで複数のアルゴリズムを試してから、顧客の要件を十分に満たす最適なアルゴリズムを選択できます。 これは、H2Oがあなたを救う場所です。 これは、広く受け入れられているいくつかのMLアルゴリズムの完全にテストされた実装を備えたオープンソースの機械学習フレームワークです。 巨大なリポジトリからアルゴリズムを選択して、データセットに適用するだけです。 最も広く使用されている統計アルゴリズムとMLアルゴリズムが含まれています。
ここでいくつか言及すると、勾配ブーストマシン(GBM)、一般化線形モデル(GLM)、深層学習などが含まれます。 データセット上のさまざまなアルゴリズムのパフォーマンスをランク付けするAutoML機能もサポートしているだけでなく、最高のパフォーマンスモデルを見つける手間を削減します。 H2Oは18000以上の組織で世界中で使用されており、開発を容易にするためにRおよびPythonとうまく連携しています。 優れたパフォーマンスを提供するインメモリプラットフォームです。
このチュートリアルでは、まずPythonオプションとRオプションの両方を使用してマシンにH2Oをインストールする方法を学びます。 コマンドラインでこれを使用する方法を理解するので、その動作をラインごとに理解できます。 Pythonが好きな人は、H2Oアプリケーションの開発にJupyterまたはその他の任意のIDEを使用できます。 Rを希望する場合は、RStudioを開発に使用できます。
このチュートリアルでは、H2Oの操作方法を理解するための例を検討します。 また、プログラムコードのアルゴリズムを変更し、そのパフォーマンスを以前のアルゴリズムと比較する方法も学習します。 H2Oは、データセットのさまざまなアルゴリズムをテストするためのWebベースのツールも提供します。 これはフローと呼ばれます。
チュートリアルでは、Flowの使用方法を紹介します。 同時に、データセットで最高のパフォーマンスのアルゴリズムを識別するAutoMLの使用について説明します。 H2Oを学ぶことに興奮していませんか? 読み続けます!
H2O-インストール
H2Oは、以下にリストする5つの異なるオプションで構成および使用できます-
- Pythonでインストールする
- Rにインストール
- WebベースのフローGUI
- Hadoop *アナコンダクラウド
以降のセクションでは、利用可能なオプションに基づいてH2Oのインストール手順を確認します。 オプションのいずれかを使用する可能性があります。
Pythonでインストールする
PythonでH2Oを実行するには、インストールにいくつかの依存関係が必要です。 そこで、H2Oを実行するための最小限の依存関係のインストールを開始しましょう。
依存関係のインストール
依存関係をインストールするには、次のpipコマンドを実行します-
$ pip install requests
コンソールウィンドウを開き、上記のコマンドを入力して要求パッケージをインストールします。 次のスクリーンショットは、Macマシンでの上記コマンドの実行を示しています-
リクエストをインストールした後、以下に示すように、さらに3つのパッケージをインストールする必要があります-
$ pip install tabulate
$ pip install "colorama >= 0.3.8"
$ pip install future
依存関係の最新のリストは、H2O GitHubページで入手できます。 この記事の執筆時点では、次の依存関係がページにリストされています。
python 2. H2O — Installation
pip >= 9.0.1
setuptools
colorama >= 0.3.7
future >= 0.15.2
古いバージョンの削除
上記の依存関係をインストールした後、既存のH2Oインストールを削除する必要があります。 これを行うには、次のコマンドを実行します-
$ pip uninstall h2o
最新バージョンのインストール
今、私たちは次のコマンドを使用してH2Oの最新バージョンをインストールしましょう-
$ pip install -f http://h2o-release.s3.amazonaws.com/h2o/latest_stable_Pyl h2o
インストールが正常に完了すると、画面に次のメッセージが表示されます-
Installing collected packages: h2o
Successfully installed h2o-3.26.0.1
インストールのテスト
インストールをテストするために、H2Oインストールで提供されるサンプルアプリケーションの1つを実行します。 最初に次のコマンドを入力してPythonプロンプトを開始します-
$ Python3
Pythonインタープリターが起動したら、Pythonコマンドプロンプトで次のPythonステートメントを入力します-
>>>import h2o
上記のコマンドは、プログラムにH2Oパッケージをインポートします。 次に、次のコマンドを使用してH2Oシステムを初期化します-
>>>h2o.init()
画面にはクラスタ情報が表示され、この段階で次のように見えるはずです-
これで、サンプルコードを実行する準備ができました。 Pythonプロンプトで次のコマンドを入力して実行します。
>>>h2o.demo("glm")
デモは、一連のコマンドを備えたPythonノートブックで構成されています。 各コマンドを実行すると、その出力がすぐに画面に表示され、次の手順に進むためにキーを押すように求められます。 ノートブックの最後のステートメントの実行に関する部分的なスクリーンショットはここに示されています-
この段階で、Pythonのインストールが完了し、独自の実験の準備が整いました。
Rにインストール
R開発用のH2Oのインストールは、インストール用にRプロンプトを使用することを除いて、Python用のインストールと非常によく似ています。
Rコンソールの開始
マシンのRアプリケーションアイコンをクリックして、Rコンソールを起動します。 コンソール画面は、次のスクリーンショットに示すように表示されます-
H2Oのインストールは、上記のRプロンプトで行われます。 RStudioを使用する場合は、Rコンソールのサブウィンドウにコマンドを入力します。
古いバージョンの削除
まず、Rプロンプトで次のコマンドを使用して古いバージョンを削除します-
> if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
> if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }
依存関係のダウンロード
次のコードを使用してH2Oの依存関係をダウンロードします-
> pkgs <- c("RCurl","jsonlite")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
}
H2Oのインストール
Rプロンプトで次のコマンドを入力してH2Oをインストールします-
> install.packages("h2o", type = "source", repos = (c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")))
次のスクリーンショットは、期待される出力を示しています-
RにH2Oをインストールする別の方法があります。
CRANからRにインストールする
CRANからRをインストールするには、Rプロンプトで次のコマンドを使用します-
> install.packages("h2o")
あなたはミラーを選択するように求められます-
--- Please select a CRAN mirror for use in this session ---
ミラーサイトのリストを表示するダイアログボックスが画面に表示されます。 最寄りの場所または選択したミラーを選択します。
インストールのテスト
Rプロンプトで、次のコードを入力して実行します-
> library(h2o)
> localH2O = h2o.init()
> demo(h2o.kmeans)
生成される出力は、次のスクリーンショットに示すようになります-
RでのH2Oのインストールが完了しました。
Web GUIフローのインストール
GUI Flowをインストールするには、H20サイトからインストールファイルをダウンロードします。 ダウンロードしたファイルを任意のフォルダーに解凍します。 インストールにh2o.jarファイルが存在することに注意してください。 次のコマンドを使用して、コマンドウィンドウでこのファイルを実行します-
$ java -jar h2o.jar
しばらくすると、以下がコンソールウィンドウに表示されます。
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO: H2O started in 7725ms
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO:
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO: Open H2O Flow in your web browser: http://192.168.1.18:54321
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO:
フローを開始するには、指定されたURL* http://localhost:54321 *をブラウザーで開きます。 次の画面が表示されます-
この段階で、Flowのインストールは完了です。
Hadoop/Anaconda Cloudにインストールする
あなたがベテランの開発者でない限り、ビッグデータでH2Oを使用することは考えないでしょう。 ここで言うと、H2Oモデルは数テラバイトの巨大なデータベースで効率的に実行されます。 データがHadoopインストールまたはクラウドにある場合は、H2Oサイトに記載されている手順に従って、それぞれのデータベースにインストールします。
マシンにH2Oを正常にインストールしてテストしたので、実際の開発の準備ができました。 最初に、コマンドプロンプトから開発を確認します。 以降のレッスンでは、H2Oフローでモデルテストを行う方法を学習します。
コマンドプロンプトでの開発
次に、H2Oを使用して、機械学習アプリケーションの開発に自由に利用できる有名なアヤメのデータセットの植物を分類することを考えてみましょう。
シェルウィンドウで次のコマンドを入力してPythonインタープリターを起動します-
$ Python3
これにより、Pythonインタープリターが開始されます。 次のコマンドを使用してH2Oプラットフォームをインポートします-
>>> import h2o
分類にはランダムフォレストアルゴリズムを使用します。 これは、H2ORandomForestEstimatorパッケージで提供されます。 次のようにimportステートメントを使用してこのパッケージをインポートします-
>>> from h2o.estimators import H2ORandomForestEstimator
initメソッドを呼び出して、H2o環境を初期化します。
>>> h2o.init()
初期化が成功すると、コンソールに次のメッセージとクラスター情報が表示されます。
Checking whether there is an H2O instance running at http://localhost:54321 . connected.
次に、H2Oのimport_fileメソッドを使用して虹彩データをインポートします。
>>> data = h2o.import_file('iris.csv')
次のスクリーンショットに示すように進行状況が表示されます-
ファイルがメモリにロードされた後、ロードされたテーブルの最初の10行を表示することでこれを確認できます。 あなたはそうするために*ヘッド*メソッドを使用します-
>>> data.head()
次の出力が表形式で表示されます。
テーブルには列名も表示されます。 最初の4列をMLアルゴリズムの機能として使用し、最後の列クラスを予測出力として使用します。 MLアルゴリズムの呼び出しでこれを指定するには、まず次の2つの変数を作成します。
>>> features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
>>> output = 'class'
次に、split_frameメソッドを呼び出して、データをトレーニングとテストに分割します。
>>> train, test = data.split_frame(ratios = [0.8])
データは80:20の比率で分割されます。 トレーニングには80%のデータを使用し、テストには20%のデータを使用します。
次に、組み込みのランダムフォレストモデルをシステムに読み込みます。
>>> model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
上記の呼び出しでは、ツリーの数を50に、ツリーの最大深さを20に、交差検証のフォールドの数を10に設定します。 次に、モデルをトレーニングする必要があります。 私たちは次のようにtrainメソッドを呼び出すことでそうします-
>>> model.train(x = features, y = output, training_frame = train)
trainメソッドは、先に作成した特徴と出力を最初の2つのパラメーターとして受け取ります。 トレーニングデータセットはトレーニング用に設定されています。これは、完全なデータセットの80%です。 トレーニング中に、ここに示すように進捗状況が表示されます-
これで、モデル作成プロセスが終了したので、モデルをテストします。 これを行うには、トレーニング済みのモデルオブジェクトでmodel_performanceメソッドを呼び出します。
>>> performance = model.model_performance(test_data=test)
上記のメソッド呼び出しでは、テストデータをパラメーターとして送信しました。
ここで、モデルのパフォーマンスである出力を確認します。 これを行うには、単にパフォーマンスを印刷します。
>>> print (performance)
これにより、次の出力が得られます-
出力には、二乗平均誤差(MSE)、二乗平均平方根誤差(RMSE)、LogLoss、さらには混同マトリックスが表示されます。
Jupyterで実行する
コマンドからの実行を確認し、コードの各行の目的も理解しました。 Jupyter環境でコード全体を1行ずつ実行することも、プログラム全体を一度に実行することもできます。 完全なリストはここに与えられています-
import h2o
from h2o.estimators import H2ORandomForestEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios=[0.8])
model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data=test)
print (performance)
コードを実行し、出力を観察します。 これで、データセットにランダムフォレストアルゴリズムを簡単に適用してテストできることを理解できます。 H20のパワーは、この機能をはるかに超えています。 同じデータセットで別のモデルを試して、パフォーマンスが向上するかどうかを確認する場合はどうでしょう。 これについては、後続のセクションで説明します。
別のアルゴリズムを適用する
次に、以前のデータセットにGradient Boostingアルゴリズムを適用して、そのパフォーマンスを確認する方法を学習します。 上記の完全なリストでは、以下のコードで強調表示されているように、わずかな変更を2つだけ行う必要があります-
import h2o
from h2o.estimators import H2OGradientBoostingEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios = [0.8])
model = H2OGradientBoostingEstimator
(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data = test)
print (performance)
コードを実行すると、次の出力が得られます-
MSE、RMSE、混同マトリックスなどの結果を比較するだけです。 前の出力を使用して、運用展開に使用するものを決定します。 実際、いくつかの異なるアルゴリズムを適用して、目的に合った最適なアルゴリズムを決定できます。
H2O-フロー
前回のレッスンでは、コマンドラインインターフェイスを使用してH2OベースのMLモデルを作成する方法を学びました。 H2Oフローは同じ目的を果たしますが、Webベースのインターフェースを備えています。
次のレッスンでは、H2Oフローを開始し、サンプルアプリケーションを実行する方法を示します。
H2Oフローの開始
前にダウンロードしたH2Oインストールには、h2o.jarファイルが含まれています。 H2Oフローを開始するには、まずコマンドプロンプトからこのjarを実行します-
$ java -jar h2o.jar
jarが正常に実行されると、コンソールに次のメッセージが表示されます-
Open H2O Flow in your web browser: http://192.168.1.10:54321
ここで、選択したブラウザを開き、上記のURLを入力します。 ここに示すように、H2O Webベースのデスクトップが表示されます-
これは基本的に、ColabやJupyterに似たノートブックです。 Flowのさまざまな機能を説明しながら、このノートブックでサンプルアプリケーションをロードして実行する方法を紹介します。 上記の画面の[フローの例を表示]リンクをクリックして、提供されているサンプルのリストを表示します。
サンプルから航空会社の遅延フローの例を説明します。
H2O-サンプルアプリケーションの実行
以下のスクリーンショットに示すように、サンプルのリストで航空会社の遅延フローのリンクをクリックします-
確認後、新しいノートブックがロードされます。
すべての出力をクリアする
ノートブックのコードステートメントを説明する前に、すべての出力をクリアしてから、ノートブックを徐々に実行してみましょう。 すべての出力をクリアするには、次のメニューオプションを選択します-
Flow/Clear All Cell Contents
これは、次のスクリーンショットに示されています-
すべての出力がクリアされたら、ノートブックの各セルを個別に実行し、その出力を調べます。
最初のセルの実行
最初のセルをクリックします。 セルが選択されていることを示す赤いフラグが左側に表示されます。 これは、以下のスクリーンショットに示されているとおりです-
このセルの内容は、MarkDown(MD)言語で書かれたプログラムコメントです。 内容は、ロードされたアプリケーションの動作を説明しています。 セルを実行するには、以下のスクリーンショットに示すように、実行アイコンをクリックします-
現在のセルには実行可能なコードがないため、セルの下には出力が表示されません。 カーソルは自動的に次のセルに移動し、実行準備が整います。
データのインポート
次のセルには、次の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"
上記のステートメントの実行時に、次の出力が表示されます-
これで、データを機械学習アルゴリズムにフィードする準備が整いました。
次のステートメントは、回帰モデルを使用し、事前設定された正則化とラムダ値を指定するというプログラムのコメントです。
モデルの構築
次に、最も重要なステートメントがあり、それはモデル自体を構築しています。 これは、次のステートメントで指定されています-
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曲線出力を検討します。
前の場合と同様に、さまざまなタブを展開し、さまざまな出力を調べます。
モデルを保存する
さまざまなモデルの出力を検討した後、実稼働環境でそれらのいずれかを使用することにします。 H20では、このモデルをPOJO(Plain Old Java Object)として保存できます。
出力の最後のタグPREVIEW POJOを展開すると、微調整されたモデルのJavaコードが表示されます。 これを実稼働環境で使用します。
次に、H2Oの非常にエキサイティングな機能について学習します。 AutoMLを使用して、パフォーマンスに基づいてさまざまなアルゴリズムをテストおよびランク付けする方法を学習します。
H2O-AutoML
AutoMLを使用するには、新しいJupyterノートブックを起動し、以下に示す手順に従います。
AutoMLのインポート
まず、次の2つのステートメントを使用して、H2OおよびAutoMLパッケージをプロジェクトにインポートします-
import h2o
from h2o.automl import H2OAutoML
H2Oを初期化する
次の文を使用してh2oを初期化します-
h2o.init()
次のスクリーンショットに示すように、画面にクラスター情報が表示されるはずです-
データのロード
このチュートリアルの前半で使用したのと同じiris.csvデータセットを使用します。 次の文を使用してデータをロードします-
data = h2o.import_file('iris.csv')
データセットの準備
機能と予測列を決定する必要があります。 以前のケースと同じ機能と予測列を使用します。 次の2つのステートメントを使用して機能と出力列を設定します-
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
トレーニングとテストのためにデータを80:20の比率で分割します-
train, test = data.split_frame(ratios=[0.8])
AutoMLを適用する
これで、データセットにAutoMLを適用する準備が整いました。 AutoMLは、設定された一定の時間実行され、最適化されたモデルを提供します。 私たちは次のステートメントを使用してAutoMLを設定します-
aml = H2OAutoML(max_models = 30, max_runtime_secs=300, seed = 1)
最初のパラメーターは、評価および比較するモデルの数を指定します。
2番目のパラメーターは、アルゴリズムを実行する時間を指定します。
ここに示すように、AutoMLオブジェクトでtrainメソッドを呼び出します-
aml.train(x = features, y = output, training_frame = train)
xを先ほど作成した機能配列として指定し、yを予測値を示す出力変数として指定し、データフレームを train データセットとして指定します。
コードを実行すると、次の出力が得られるまで5分間待つ必要があります(max_runtime_secsを300に設定します)。
リーダーボードの印刷
AutoML処理が完了すると、評価した30のアルゴリズムすべてをランク付けするリーダーボードが作成されます。 リーダーボードの最初の10レコードを表示するには、次のコードを使用します-
lb = aml.leaderboard
lb.head()
実行時に、上記のコードは次の出力を生成します-
明らかに、DeepLearningアルゴリズムは最大スコアを取得しています。
テストデータの予測
これで、モデルのランク付けが完了し、テストデータで最高評価のモデルのパフォーマンスを確認できます。 これを行うには、次のコードステートメントを実行します-
preds = aml.predict(test)
処理はしばらく続き、完了すると次の出力が表示されます。
印刷結果
次の文を使用して予測結果を印刷します-
print (preds)
上記のステートメントを実行すると、次の結果が表示されます-
すべてのランキングを印刷する
あなたがすべてのテストされたアルゴリズムのランクを表示したい場合は、次のコードステートメントを実行します-
lb.head(rows = lb.nrows)
上記のステートメントの実行時に、次の出力が生成されます(部分的に表示されます)-
結論
H2Oは、特定のデータセットに異なるMLアルゴリズムを適用するための使いやすいオープンソースプラットフォームを提供します。 ディープラーニングを含むいくつかの統計およびMLアルゴリズムを提供します。 テスト中に、これらのアルゴリズムに合わせてパラメーターを微調整できます。 これを行うには、コマンドラインまたは提供されるFlowというWebベースのインターフェイスを使用します。 H2Oは、パフォーマンスに基づいていくつかのアルゴリズムの中でランキングを提供するAutoMLもサポートしています。 H2Oはビッグデータでも優れたパフォーマンスを発揮します。 これは間違いなく、データサイエンティストがさまざまな機械学習モデルをデータセットに適用し、ニーズに合わせて最適なモデルを選択することの恩恵です。