はじめに
Oracle Machine Learning for Python (OML4Py)は、Oracle Autonomous Databaseのデータに対して統計および機械学習分析を実行するためのPython APIです。
本記事はOracle, Live Labsを参考にしています。
本記事の前提条件
- OCI Always Freeのアカウントを取得していること
- サンプルデータをダウンロードしていること
Oracle, Live Labs, Lab1, Task2の「CLICK HERE」と書かれているリンクからダウンロードできます。
作業の大まかな流れ
- ADWインスタンスの構築
- OML4Pyを始める
- 透過層を使用したデータの選択および操作
- データベース内アルゴリズムおよびモデルの使用
- Pythonオブジェクトおよびユーザー定義関数の格納および管理
- Embedded Python Executionsを使用したユーザー定義の関数の実行
- AutoMLの使用
実際にOML4Pyを使ってみた
ADWインスタンスの構築
-
コンパートメントの作成
OMLという名前でコンパートメントを作成します。OCIのコンソール画面のハンバーガーメニューから、コンパートメントを選択します。「コンパートメントの作成」ボタンから以下のように、作成を行います。
-
ADWインスタンスを作成
再び、ハンバーガーメニューからAutonomous Databaseを選択します。以下の画像の左側のように、OMLコンパートメントを選択し、「Autonomous Databaseの作成」ボタンを押します。詳細情報を以下のように入力し、ADWを作成します。
入力項目 入力内容 表示名 OML_LABS データベース名 OMLLABS ワークロード・タイプの選択 データ・ウェアハウス デプロイメント・タイプの選択 共有インフラストラクチャ データベースを構成します Always Freeのトグルをオンにする パスワード Welcome12345# (例) ネットワーク・アクセスの選択 すべての場所からのセキュア・アクセス ライセンスとOracle Databaseエディションの選択 ライセンス込み
以下のようにSQLの項目を押して、OMLUSERを作成するSQL文を入力していきます。
以下のSQL文をワークシートに入力します。
-- The following commands should be run before running the labs,
-- since it creates the OML users required to
-- sign-in to OML Notebooks
-- Click F5 to run all the scripts at once
-- Drop the schema OMLUSER
BEGIN
EXECUTE IMMEDIATE 'DROP USER OMLUSER CASCADE';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
-- Drop the schema OMLUSER2
BEGIN
EXECUTE IMMEDIATE 'DROP USER OMLUSER2 CASCADE';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
CREATE USER OMLUSER IDENTIFIED BY "Welcome12345#";
GRANT DWROLE TO OMLUSER;
GRANT OML_DEVELOPER TO OMLUSER;
ALTER USER OMLUSER GRANT CONNECT THROUGH OML$PROXY;
ALTER USER OMLUSER QUOTA UNLIMITED on DATA;
CREATE USER OMLUSER2 IDENTIFIED BY "Welcome12345#";
GRANT DWROLE TO OMLUSER2;
GRANT OML_DEVELOPER TO OMLUSER2;
ALTER USER OMLUSER2 GRANT CONNECT THROUGH OML$PROXY;
ALTER USER OMLUSER2 QUOTA UNLIMITED on DATA;
ユーザーOMLUSERとOMLUSER2が、初期化された状態で作成されます。
OML4Pyを始める
-
以下のようなログイン画面が出るので、ユーザー名: OMLUSER、パスワード: Welcome12345#を入力します。
-
Oracle Machine Learningのホーム画面が表示されます。クイック・アクションメニューの「ノートブック」を選択します。
-
事前にダウンロードしたノートブックファイルをOMLノートブックにインポートします。
・インポートを押します。
・今回使用するノートブック(JSONファイル)を1度にすべて選択し、「開く」をクリックします。
-
ノートブックが正常にインポートされたら、Lab1をクリックして表示します。
OMLノートブックはセッションをロードし、ノートブックを編集可能にします。 -
OMLノートブックおよびインタプリタを使用してみます。
OMLノートブックには、インタプリタ・バインディングのデフォルトのリストが含まれており、接続されているAutonomous Databaseに対してスクリプトを実行するために使用します。本記事では、インタプリタ・バインディングを"データベース名_medium"に設定します。
ノートブックの右上隅にあるインタプリタ・バインディングのアイコン(歯車)をクリックして、使用可能なインタプリタ・バインディングを表示します。
-
デフォルトのサービスはlowです。ここで、mediumインタプリタを上へドラッグし、リストの最初に表示されるようにして、デフォルトにしました。Saveを押して、設定を保存します。
インタプリタは、Oracle Machine Learningノートブックで特定のデータ処理言語を使用するためのプラグインです。
段落を複数追加でき、各段落はSQL、PL/SQL、Pythonなどの異なるインタプリタを使用できます。
-
Python用のインタプリタを使います。
まず、各段落の結果を確認できるように、ノートブック全体を実行します。ノートブックの名前の前にあるRun all paragraphsアイコンをクリックし、OKをクリックして確定すると、下記のように内容が更新されます。
-
実行した結果を画面をスクロールしながら、確認していきます。
OML4Pyモジュールを使用するためには、omlモジュールをインポートする必要があります。以下のPythonコマンドを入力して、omlモジュールをインポートし、実行アイコンをクリックします。(すでに実行済みなので、ここでは特に何も操作する必要はありません)
-
デフォルトのインタプリタバインディングを使用すると、OMLノートブックは自動的にノートブック用のデータベース接続を確立します。
Pythonインタプリタがomlモジュールを介してデータベース接続を確立したことを確認するには、次のコマンドを実行します。ノートブックが接続されると、Trueを返します。
-
サンプルデータを表およびビューにロードし、すべてのユーザーにアクセス権を付与します。
ノートブック「Lab 1a: Run Me First - OML4Py table created and grant」を開きます。
-
すべての段落の実行が終了し、「PL/SQL procedure successfully completed」というメッセージが表示されているの最後の段落に、現在の時刻が表示されるまで待ちます。
透過層を使用したデータの選択および操作
透過層クラスを使用してデータを操作し、データの探索的分析を実行する方法を見ていきます。
透過層クラスを使用すると、選択したPythonオブジェクトをOracle Autonomous Databaseオブジェクトに変換できます。これにより、ユーザーは、オーバーロードされた一連の使い慣れたPython関数を呼び出して、データベース内の表の対応するSQL文を起動できます。
このチャプターでは、次のことを確認できます。
・oml.push関数を使用して一時表を作成します。
・プロキシ・オブジェクトを使用した表の行および列の操作
・pandas.DataFrameオブジェクトの操作
・append、concatおよびmerge関数を使用したデータの操作
・split関数とKFold関数を使用したデータのパーティション化
・OML DataFrameプロキシでのクロス集計およびpivot_table関数の使用
・oml.boxplotおよびoml.hist関数を使用したプロットの作成
・OML4Py Transparency Layer関数を使用したデータの管理と探索
・cx_Oracle関数を使用したPythonからのSQL問合せの送信
-
Task1: ライブラリのインポートおよびOracle Machine Learning DataFrameプロキシ・オブジェクトの作成
-
Task7: oml.boxplot関数およびoml.hist関数の使用
OML4Pyには、データをグラフィカルに表示するための関数が用意されています。oml.boxplotとoml.hist関数は、箱ひげ図やヒストグラムをデータベース内で生成するために必要な統計量を計算します。
データベース内アルゴリズムおよびモデルの使用
OML4Pyで使用可能な機械学習アルゴリズムと機能(Generalized Linear Models (GLM)、K-Means クラスタリング、パーティション化されたモデル、およびモデルの説明可能性)について見ていきます。
このチャプターでは、次のことを確認します。
・回帰を使用した数値の予測(一般化線形モデル(GLM))
・k-meansを使用したクラスタリングの操作
・パーティション化されたモデルの操作
・モデルの説明可能性機能の使用
Pythonオブジェクトおよびユーザー定義の関数の格納および管理
OML4Pyデータストアおよびスクリプト・リポジトリを使用および操作するステップを確認できます。
詳しくは、Oracle, LiveLabs, Lab4を参照ください。
Embedded Python Executionsを使用したユーザー定義関数の実行
このステップでは、OML4Py Embedded Python Execution関数を使用してカスタムしたPythonコードを実行する方法を確認しました。
詳しくは、Oracle, LiveLabs, Lab5を参照ください。
AutoMLの使用
最後に、AutoML機能を使用するための手順を確認します。
以下のような手順を追います。
・CUSTOMER_INSURANCE_LTVデータベース表のPandas DataFrame(OML DataFrame)プロキシ・オブジェクトを作成し、現在の顧客の行動に基づいて保険を購入する対象者を予測
・automl.AlgorithmSelectionを使用して、BUY_INSURANCEターゲットを分類するための予測スコア・メトリックでデータベース内アルゴリズムをランク付け
・automl.FeatureSelectionを使用して、トレーニング・データおよび選択したアルゴリズムに最も関連する機能サブセットを識別
・automl.ModelTuningを使用して、選択したアルゴリズム・ハイパーパラメータを調整
・automl.ModelSelectionを使用してデータベース内上位アルゴリズムを選択し、チューニングしたモデルを1つの関数で返す
サンプルデータを用いてOML4Pyの概要をざっと見ていきました。
まとめ
本記事ではOML4Pyを用いて、Autonomous Database環境で生成されたPythonエンジンでユーザー定義のPython関数を実行し、自動化されたアルゴリズムと特徴選択、およびモデルの選択とチューニング等を行ってみました。