ADB HOL #8-4 : Oracle Machine Learningを使った機械学習

Version 7

    目次に戻る : チュートリアル : Oracle Cloud Infrastructure を使ってみよう

    >ADBコンテンツ一覧に戻るAutonomous Database ハンズオンラボ

     

    Autonomous Databaseに付属する、Oracle Machine Learning Notebookは、SQL Notebookのインタフェース(Apache Zeppelinベース)であり、データ・サイエンティストがOracle Autonomous Database上で機械学習を実行するのに利用できます。

     

    この章ではOracle Machine Learning Notebookを使って、機械学習を行う方法を学びます。シナリオ(ハンズオン内容)は2つあり、ハンズオン①は分類(液体の品質予測を行う分類モデルの作成)、ハンズオン②はアソシエーション分析です。

     

    Oracle Databaseには旧来よりAdvanced Analytics(2019年12月の名称変更で、Machine Learningとなりました)という、データベースに内包された機械学習関連の機能があります。その機能で用意されているPL/SQLパッケージ:DBMS_DATA_MININGパッケージを、ここでは主に使用していきます。

     

    作業の流れ

    1. 使用するデータ①を準備(データベースユーザを作成し、ADBにロードする)
    2. 使用するデータ②を準備(Object Storageへのアップロード)
    3. Oracle Machine Learning Notebook環境ログインと機械学習ユーザの割当て
    4. Oracle Machine Learningを使った機械学習

     

    所要時間 : 約60分

     

    本ページで使用する全てのファイルは、本ページ最下部にある「ADB_ML_handson_files.zip」にあります。ダウンロードし、zipファイルを展開しておきます。

     

    1. 使用するデータ①を準備(データベースユーザを作成し、ADBにロードする)

    ここで作成するOracle Databaseのユーザ名は任意ですが、今回は「MLUSER」ユーザを作成します。

    データのロードで使用するツールは任意ですが、今回は「SQL Developer Web」を使用します。

    ハンズオン①で使用するデータ(liquid.csv)をアップロードします。

    本ページで使用する全てのファイルは、ページ下部にある添付「ADB_ML_handson_files.zip」にあります。ダウンロードし、zipファイルを展開しておきます。

     

    1. OCIコンソールにログインし、該当のADB管理画面にアクセスします。

     

    2. 「ツール」タブをクリックし、「SQL Developer Web」にある「SQL Developer Webを開く」をクリックします。(ADB起動直後でグレーアウトしている場合は、しばらく時間を置いてアクセスしてみてください)

     

    00_sqldev_1.png

     

    3. ユーザ名とパスワードにそれぞれ「admin」「ADB作成時に指定したadminユーザのパスワード」を入力し、サインインします。

     

     

    4. SQL Developer Webの画面です。右上に「ADMIN」表示があり、ADMINユーザでログインしていることが分かります。

     

    実際にデータベースユーザが利用する際には、ADMIN以外のユーザで接続して作業したいので、追加の手順を実施し、専用のURLからログインできるようにしていきます。

    「データベースユーザを新規作成する」「そのユーザでのSQL Developer Webアクセスを、専用のURLで可能にする」ためのスクリプト実行を行います。

     

    00_sqldev_2.png

     

     

    ワークシート内に、以下の内容をコピー&ペーストし、「スクリプトを実行」(赤枠で囲ったアイコン)をクリックします。(注:コピー&ペーストの際、パスワード部分は書き換えてください。必要に応じて②URL内に含める文字列を指定(任意の文字列を指定する)部分も書き換えてください)

     

    「スクリプトを実行」では、ワークシート内の全てのSQLが実行されます。

    SQLを順番に1つずつ実行したい場合は、その左側にあるアイコン「文の実行」を使用します(カーソルのある行のSQLが実行されます)。

     

    -- (データベースユーザを作成し、必要な権限を付与)

    CREATE USER MLUSER IDENTIFIED BY パスワードを指定;  -- ①ユーザ名とパスワードを指定

    GRANT DWROLE to MLUSER;

    GRANT UNLIMITED TABLESPACE to MLUSER;

     

    -- プロシージャを実行し、そのユーザでのSQL Developer Webアクセスを有効にする

    BEGIN

       ORDS_ADMIN.ENABLE_SCHEMA(

         p_enabled => TRUE,

         p_schema => 'MLUSER',  -- 上記①で指定したユーザ名(スキーマ名)※大文字で

         p_url_mapping_type => 'BASE_PATH',

         p_url_mapping_pattern => 'userweb', -- ②URL内に含める文字列を指定(任意の文字列を指定する)

         p_auto_rest_auth => TRUE

       );

       COMMIT;

    END;

    /

     

    全ての実行が成功すると、以下のように4つの文が成功していることが、画面下部の「スクリプト出力」欄に表示されているはずです。

    User MLUSER created.

    Elapsed: 00:00:00.69

     

    Grant succeeded.

    Elapsed: 00:00:00.027

     

    Grant succeeded.

    Elapsed: 00:00:00.006

     

    PL/SQL procedure successfully completed.

    Elapsed: 00:00:00.262

     

    5. MLUSERでログイン可能な、SQL Developer WebのURIを確認します。

    今、ADMINでログインしている状態でのURIを、ブラウザのアドレスバーから確認します。例えば以下である場合、

    -- ブラウザのアドレスバーから確認したURI

    https://hogehoge.adb.us-phoenix-1.oraclecloudxx.com/ords/admin/_sdw/?nav=worksheet

    このadmin部分を、先の手順で指定した「②URL内に含める文字列を指定(任意の文字列を指定する)」に書き換えたURIが、MLUSERでログイン可能な、SQL Developer WebのURIになります。今回の例では次のとおりです。

    -- MLUSERがログイン可能なURI

    https://hogehoge.adb.us-phoenix-1.oraclecloudxx.com/ords/userweb/_sdw/?nav=worksheet

     

    6. MLUSERがログイン可能なURIをブラウザのアドレスバーに入力すると、手順3のような、SQL Developer Webのサインイン画面が表示されます。

    ユーザ名とパスワードに、mluserとそのパスワードを入力し、サインインします。

    SQL Developer Webにサインイン後、右上には「MLUSER」表示があり、MLUSERでログインしていることが分かります。

     

    7. CSVファイルをロードします。

    「データロード」タブをクリックすると、以下の画面になります。

     

    liquid.csv ファイルを、データロードタブの下のグレー部分(「新しいファイルをドラッグ・アンド・ドロップしてください」と表示されている領域)に、ドロップします。

     

    00_sqldev_3_load.png

     

    ドロップすると自動的に1行目がヘッダ(列名)として扱われています。

    下図は中央の歯車アイコンをクリックし、オプション表示したところですが、「列名に最初の行」を利用していることが分かります。

    画面下部左にある、「」をクリックします。

     

    00_sqldev_4_liquid.png

     

    Table name(テーブル名)として、「LIQUID」が自動で入力されています。

    デフォルトで全ての列が VARCHAR2(4000) で定義されています(CSVロード時のデータ型が合わないエラーを回避する意味で、一旦、最大長のVARCHAR2でロードしてみる、というのは良い選択です)。

     

    今回は、一部の列タイプを変更します。

     

    00_sqldev_5.png

     

    今回は、事前にデータの内容が分かっているので、一部の列タイプを変更します。

    • QUALITY列(一番最後にある):列タイプで「VARCHAR2」を選択し、長さ/精度 に「1」を入力します。
    • それ以外の列:列タイプで「NUMBER」を選択し、長さ/精度 を「空白」にします。

     

    以下のように、全て指定したら、「」をクリックします。

    00_sqldev_7.png

     

    ロード前の確認画面です。DDL(CREATE TABLE定義)も表示されているので、内容を確認します。

    終了」をクリックし、ロードを開始します。

    00_sqldev_8.png

     

    データロード中...(「OK」押して大丈夫です)

    00_sqldev_9.png

     

    ロードが完了すると、次のように表示されます。

    LIQUID表に、「行の合計:4898」「失敗した行:0」となっていればOKです。

    00_sqldev_92.png

     

     

    2. 使用するデータ②を準備(オブジェクト・ストレージへのアップロード)

    ハンズオン②で使用する order_items.csv は、ハンズオンの中でテーブルを作成してロードするので、ここではObject StorageにUploadします。

     

    1. OCIコンソールにログインし、左上のハンバーガーメニューから、
    オブジェクト・ストレージ > オブジェクト・ストレージ > バケットの作成

    「handson」という名前のバケットを作成します。(バケット名は任意です)

     

    2. 作成したバケットをクリックし、「オブジェクトのアップロード」をクリックします。

    「ここにファイルをドロップします」に、order_items.csv ファイルをドラッグ&ドロップします。

     

    3. 今回は手順の簡単化のために、「事前認証済みリクエスト」を使用し、認証情報なしにCSVファイルへアクセスできるよう設定します。

    ※URLを知る人なら認証なしにアクセスできる、インターネットに公開された状態になりますのでご利用時には留意ください。

     

    order_items.csv の 右端の点をクリックし、「事前認証済みリクエストの作成」を選択します。

     

    03_02_objstore.png

     

    4. アクセスタイプや有効期限を確認し、「事前認証済みリクエストの作成」をクリックします。

    (有効期限短いです。有効期限が切れると、そのURLは無効になります)

     

    03_03_obj.png

    5. 「事前認証済みリクエスト」が作成されました。

    このURLは一度しか表示されません。必ずコピーして別途メモ帳などに保存しておきます。(赤枠のアイコンがコピーするアイコン)

    ハンズオン②で使用します。

     

    03_04_obj.png

     

     

    3. Oracle Machine Learning Notebook環境へログインとユーザの割当て

    先に作成したデータベースユーザ「MLUSER」に、機械学習用の開発者ロールを割り当てます。

     

    1. OCIコンソールにログインし、該当のADB管理画面にアクセスします。

     

    2. 「ツール」タブをクリックし、「Oracle MLユーザ管理」にある「Oracle ML User Administrationを開く」をクリックします。
    (ADB起動直後でグレーアウトしている場合は、しばらく時間を置いてアクセスしてみてください)

    01_ml_console.png

     

    3. 「Oracle Machine Learningデータベース管理者資格証明を使用してサインインします」表示になっていることを確認します。

    ユーザ名:adminと、パスワードにADB作成時に指定したadminのパスワードを入力し、サインインします。

     

     

    4. 機械学習ユーザ管理のページになりました。

    既存ユーザ(MLUSER)を、機械学習ユーザとして登録していきます。

    すべてのユーザを表示」をチェックすると、MLUSERの行が表示されます(図の水色の行)。

    MLUSER」の文字部分をクリックします。

     

    02_notebook_01.png

     

    5.  「MLUSER」の編集画面です。必須項目である電子メール欄のみ入力し(他は変更しません)、右上の「保存」をクリックします。

     

    01_ml_useradd_kizon.png

    保存に成功した画面です。

    MLUSERの行に「開発者」ロールが付与されていることが分かります。(ここでの開発者ロールとは、機械学習開発者ロールのことを示します)

     

    01_ml_useradd_kizon_fin.png

     

     

    3. Oracle Machine Learningを使った機械学習

    では、今回の本題である、機械学習を始めましょう。

     

    1. Oracle Machine Learning環境に、OML開発者としてログインします。(先にOMLユーザ管理を行ったページとは異なる場所にあるのでご注意ください)

    Oracle Machine Learning環境へのユーザログインは、OCIコンソール > 該当のADB >サービス・コンソール >開発 > Oracle Machine Learningノートブック からアクセスします。

     

    04_ml_2.png

     

    サインイン画面が、次のように「Oracle Machine Learningデータベースユーザー資格証明を使用してサインインします」と表示されていたらOKです。

    ユーザ名:mluser と、パスワードを入力し、サインインします。

    04_ml_3.png

     

     

    2. 以降、こちらの資料を見ながら実施していきます。

     

    https://speakerdeck.com/oracle4engineer/adb-ml-hol

     

    資料内で使用するSQLは、冒頭でダウンロードしたファイル「ハンズオン資料内SQL.txt」にあり、手入力ではなくコピー&ペーストして進めていくことができます。

     

    ハンズオン②でのOracle Analytics Cloudを使ったGUIでのデータ分析(p.55~57)の内容は、本ページ内には含みません。

    Oracle Analytics Cloud環境のセットアップ方法や分析は、下記ページでご紹介しています。ぜひご参照ください。

    https://blogs.oracle.com/otnjp/learn_oracle_cloud

     

    以上で、この章の作業は終了です。

     

    参考資料

     

     

    >ADBコンテンツ一覧に戻るAutonomous Database ハンズオンラボ