H2O-クイックガイド
巨大なデータベースで機械学習モデルを開発するように依頼されたことはありますか?通常、顧客はデータベースを提供し、誰が潜在的な購入者になるかなどの特定の予測を行うように依頼します。不正なケースなどを早期に検出できる場合。これらの質問に答えるには、顧客の質問に答える機械学習アルゴリズムを開発することがタスクになります。機械学習アルゴリズムを最初から開発するのは簡単な作業ではありません。市場にすぐに使用できる機械学習ライブラリがいくつかあるのに、なぜこれを行う必要があるのでしょうか。
最近では、これらのライブラリを使用し、これらのライブラリから十分にテストされたアルゴリズムを適用して、そのパフォーマンスを確認することをお勧めします。パフォーマンスが許容範囲内にない場合は、現在のアルゴリズムを微調整するか、まったく別のアルゴリズムを試してください。
同様に、同じデータセットで複数のアルゴリズムを試してから、顧客の要件を十分に満たす最適なアルゴリズムを選択することもできます。ここでH2Oが役に立ちます。これは、広く受け入れられているいくつかのMLアルゴリズムの完全にテストされた実装を備えたオープンソースの機械学習フレームワークです。巨大なリポジトリからアルゴリズムを取得して、データセットに適用するだけです。これには、最も広く使用されている統計アルゴリズムとMLアルゴリズムが含まれています。
ここでいくつか言及すると、勾配ブーストマシン(GBM)、一般化線形モデル(GLM)、ディープラーニングなどが含まれます。データセット上のさまざまなアルゴリズムのパフォーマンスをランク付けするAutoML機能もサポートしているため、最高のパフォーマンスを発揮するモデルを見つける手間が省けます。H2Oは、世界中で18000以上の組織で使用されており、開発を容易にするためにRおよびPythonとうまく連携しています。これは、優れたパフォーマンスを提供するインメモリプラットフォームです。
このチュートリアルでは、最初にPythonとRの両方のオプションを使用してH2Oをマシンにインストールする方法を学習します。コマンドラインでこれを使用する方法を理解し、行ごとの動作を理解できるようにします。Pythonが好きな方は、H2Oアプリケーションの開発にJupyterまたはその他の任意のIDEを使用できます。Rが必要な場合は、開発にRStudioを使用できます。
このチュートリアルでは、H2Oの操作方法を理解するための例を検討します。また、プログラムコードのアルゴリズムを変更し、そのパフォーマンスを以前のアルゴリズムと比較する方法についても学習します。H2Oは、データセットのさまざまなアルゴリズムをテストするためのWebベースのツールも提供します。これはフローと呼ばれます。
チュートリアルでは、フローの使用法を紹介します。同時に、データセットで最もパフォーマンスの高いアルゴリズムを特定するAutoMLの使用についても説明します。H2Oを学ぶことにワクワクしていませんか?読み続けます!
H2Oは、以下に示す5つの異なるオプションで構成および使用できます。
Pythonでインストール
Rにインストール
WebベースのフローGUI
Hadoop
アナコンダクラウド
以降のセクションでは、使用可能なオプションに基づいたH2Oのインストール手順を説明します。オプションの1つを使用する可能性があります。
Pythonでインストール
PythonでH2Oを実行するには、インストールにいくつかの依存関係が必要です。それでは、H2Oを実行するための最小限の依存関係のインストールを開始しましょう。
依存関係のインストール
依存関係をインストールするには、次のpipコマンドを実行します-
$ pip install requests
コンソールウィンドウを開き、上記のコマンドを入力して、requestsパッケージをインストールします。次のスクリーンショットは、Macマシンでの上記のコマンドの実行を示しています-
リクエストをインストールした後、以下に示すようにさらに3つのパッケージをインストールする必要があります-
$ pip install tabulate
$ pip install "colorama >= 0.3.8"
$ pip install future
依存関係の最新のリストは、H2OGitHubページで入手できます。この記事の執筆時点では、次の依存関係がページにリストされています。
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_Py.html 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のインストールが完了しました。
WebGUIフローのインストール
GUIフローをインストールするには、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 / AnacondaCloudにインストールする
経験豊富な開発者でない限り、ビッグデータで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行を表示することでこれを確認できます。あなたはhead そうする方法−
>>> data.head()
次の出力が表形式で表示されます。
このテーブルには、列名も表示されます。最初の4つの列をMLアルゴリズムの機能として使用し、最後の列クラスを予測出力として使用します。最初に次の2つの変数を作成することにより、MLアルゴリズムの呼び出しでこれを指定します。
>>> 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つのパラメーターとして以前に作成した機能と出力を受け取ります。トレーニングデータセットはtrainに設定されています。これは、完全なデータセットの80%です。トレーニング中、ここに示すように進行状況が表示されます-
モデル構築プロセスが終了したら、モデルをテストします。これを行うには、トレーニング済みのモデルオブジェクトでmodel_performanceメソッドを呼び出します。
>>> performance = model.model_performance(test_data=test)
上記のメソッド呼び出しでは、パラメーターとしてテストデータを送信しました。
モデルのパフォーマンスである出力を確認するときが来ました。これを行うには、パフォーマンスを印刷するだけです。
>>> print (performance)
これにより、次の出力が得られます-
出力には、平均二乗誤差(MSE)、二乗平均平方根誤差(RMSE)、LogLoss、さらには混同行列が表示されます。
Jupyterで実行
コマンドからの実行を確認し、コードの各行の目的も理解しました。コード全体をJupyter環境で、行ごとに実行することも、プログラム全体を一度に実行することもできます。完全なリストはここにあります-
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のパワーは、この機能をはるかに超えています。同じデータセットで別のモデルを試して、パフォーマンスを向上できるかどうかを確認する場合はどうでしょうか。これについては、次のセクションで説明します。
別のアルゴリズムの適用
ここで、以前のデータセットに勾配ブースティングアルゴリズムを適用して、そのパフォーマンスを確認する方法を学習します。上記の完全なリストでは、以下のコードで強調表示されているように、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ベースのMLモデルを作成する方法を学びました。H2O Flowは同じ目的を果たしますが、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を入力します。ここに示すように、H2OWebベースのデスクトップが表示されます-
これは基本的に、ColabやJupyterに似たノートブックです。Flowのさまざまな機能を説明しながら、このノートブックにサンプルアプリケーションをロードして実行する方法を示します。提供されている例のリストを表示するには、上の画面の[フローの例の表示]リンクをクリックしてください。
サンプルから航空会社の遅延フローの例を説明します。
以下のスクリーンショットに示すように、サンプルのリストで[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を使用して、パフォーマンスに基づいてさまざまなアルゴリズムをテストおよびランク付けする方法を学習します。
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はビッグデータでも優れたパフォーマンスを発揮します。これは、データサイエンティストがデータセットにさまざまな機械学習モデルを適用し、ニーズを満たすのに最適なモデルを選択するための恩恵です。