Oracle Autonomous Database、機械学習、APEXを使用した機械学習モデルの開発と導入 (2023/05/26)

Oracle Autonomous Database、機械学習、APEXを使用した機械学習モデルの開発と導入 (2023/05/26)

https://blogs.oracle.com/machinelearning/post/develop-and-deploy-machine-learning-models-using-oracle-autonomous-database-machine-learning-and-apex

投稿者: Joe Hahn | Senior Data Scientist

Steven Wadsworth | Principal Solutions Engineer

Barr Bauer | Distinguished Solution Engineer and SLED-C Lead Architect


この演習では、プロパティトランザクションの履歴レコードがOracle Autonomous Database (ADB)にロードされ、Oracle Machine Learning (OML) Notebooksを使用してML用にデータを準備します。次に、OML AutoMLユーザーインタフェース(UI)を使用して、そのデータの回帰モデルを迅速にトレーニングおよび最適化します。このモデルは、任意のプロパティレコードの市場価格を見積もるために設計されています。その後、いくつかのAPEXダッシュボードがそのMLモデルを呼び出して、モデルの予測のレポートとプロットを生成します。このウォークスルーの目的は、APEXのポイント・アンド・クリック・インタフェースを介して、ADB、OMLおよびAPEXを連携して機械学習タスクを役立ち、ビジネスユーザーの幅広いコミュニティからアクセスできるようにする方法を示すことです。


OML Notebooks


Oracle Autonomous Database (ADB)によって提供される様々なOMLコンポーネントを使用して、機械学習(ML)モデルを開発およびデプロイします。このモデルはBrooklyn NY全体の住宅の市場価値を推定するためのトレーニングを受け、モデルの入力データは、このOracleリポジトリでもミラー化されたKaggleによって最初に公開されたブルックリン・プロパティ・トランザクションの14年間です。最初のステップは、そのデータをADB表にアップロードすることです。これにより、Oracle Machine Learning (OML) Notebooksを使用してこれらのレコードを検査に容易に使用できるようになります(図1)。OMLにはADBが付属しており、問合せ結果がインラインで表示またはビジュアル化されるため、SQLおよびPL-SQLコードを開発およびデバッグする便利な場所です。OML Notebooksは、RおよびPythonも理解しているため、かなり言語に依存しません。OML Notebooksを使用すると、後でMLモデルのトレーニングに使用されるBrooklynデータをフィルタして準備するコードを迅速に開発およびスポットチェックして、各アセットの市場価値(SALE_PRICE)を予測できます。OMLのもう1つの大きな利点は、ボタンをクリックすることで、問合せ結果をインラインプロットに変換できることです(図2)。図1-2に示す残りのOML Notebooksでは、入力データの追加のフィルタリングおよびマッサージが実行され、そのデータがADB表として格納されているトレーニングおよびテストサンプルに分割されます。


図1: OML Notebooksを使用して、プロパティ・トランザクションのADBテーブルを調べる。この Notebooksの残りの部分では、ADBのOML AutoML UIを使用して、MLモデル・トレーニング用にこのデータを準備します。



図2: barchartボタンをクリックすると、2004-2017年に手が変わったすべてのBrooklyn常駐の四半期合計を示すプロットにSQL問合せ結果が保存されます。2007-2009年のグレート・リセッション中に不動産売上が下降し、その後徐々に回復したことに注意してください。



AutoML


次に、OML AutoML UIにナビゲートします。ここでは、数回のクリックで、一連の回帰アルゴリズムをトレーニングして、各トランザクション・レジデンスのSALE_PRICEを予測する実験を作成します。「開始」ボタンを押すと、MLモデルのトレーニングに使用される様々なアルゴリズム(一般化線形回帰、リッジ回帰、線形および非線形サポート・ベクトル・マシン、ニューラル・ネットワーク)を評価するようにAutoMLに指示されます。また、ADBのサービス・レベルが「medium」または「high」の場合、これらのモデルはADBでパラレルにトレーニングされ、AutoMLはハイパーパラメータを自動的に調整し、最適な機能セットを選択する点にも注意してください。数分後、適切に最適化されたMLモデルが完成し、図3は、ニューラル・ネットワーク・アルゴリズムがR2=0.66スコアで最も正確であることを示しています。これは問題ありませんが、大きな R2スコアではありませんが、これは、いくつかの地理データと各プロパティーに関するいくつかの基本的な事実(たとえば、エーカー、ホームサイズ、フロア数)を含む、このデータセットのスリムな機能セットの結果です。寝室数、浴室数、最後の改装からの時間、プロパティ品質情報など、家庭市場価値のより詳細なドライバは存在しません。これらの追加ファクトがここに存在する場合、AutoMLはより正確なモデルを生成することになります。ただし、現在のモデルは、この演習の主な目標であるADBのMLOps機能を示すのに十分です。


図3は、AutoMLが最適化されたモデルとそのモデル名のランク付けされたリストを提供していることも示しています。これは、これらのモデルが、データベース・ユーザー、コードまたはOCIサービス(Oracle Analytics Cloud OACなど)がSQLを介してアクセスしてモデル予測を生成できる最上級のデータベース・オブジェクトであるため、役立ちます。これは、ADBでトレーニングされたMLモデルも即時デプロイされることを意味します。これは、そのデータベースにアクセスできる他のユーザー/コード/サービスも、そのモデルと相互作用して、その予測の利点を享受できるためです。


図3: AutoMLは、モデルの最適化を完了すると、各アルゴリズムのランク付けされたリストと、モデルの機能重要度チャートをレポートします。




OML4Py


次に、図3に示されている最高位のニューラル・ネットワーク・モデルを強調表示し、「ノートブックの作成」をクリックします。これにより、同じトレーニング・データと調整されたハイパーパラメータを使用してニューラル・ネットワーク・モデルを再構築する、OML4Pyコードの新しいOML Notebooksが生成されます(図4)。これにより、ユーザーは必要に応じてそのモデルをさらに調整し、図5のような追加のモデル検証プロットを生成できます。OML4Pyライブラリの注目すべき利点は、Pythonユーザーがデータベース表へのポインタを確立できることです。データベース表へのポインタは、単純なPythonコードを介してさらに操作できます(たとえば、フィルタ、結合、集計など)。そのため、理解やメンテナンスが困難なネストされたSQLコードの作成やデバッグに苦労している場合は、OML4Pyライブラリを介して、その複雑なSQLを読みやすいPythonに書き換えることを検討してください。


図4: AutoMLの「ノートブックの作成」ボタンをクリックすると、OML4PYライブラリを使用してAutoMLトレーニング済モデルを再構築するPythonコードが自動生成されます。このノートブックの検査では、AutoMLの最適なモデルは、50ノードを含む単一の非表示レイヤーを持つニューラル・ネットワークであることが示されています。




また、図5では、OMLのカスタムPython機能を使用して、ニューラル・ネットワーク・モデルの予測されたSALE_PRICEと、各プロパティの実際のSALE_PRICEをプロットします。このscatterplotは、モデルの見積りが非常に低いプロパティでは「あまりに暖かい」ことを示しており、最高値プロパティの市場価格を見積もると、モデルの見積りが「あまりにも涼しくない」ことを示しています。この動作は、実際にはすべてのMLモデルで一般的であり、この問題は、APEXを使用してこれらの予測の一部の「エッジ・トリミング」を実行するときに後から対処されます。


図5: OML4Pyライブラリ+カスタムPythonは、モデルの予測SALE_PRICEと実際のSALE_PRICEのプロットを生成します。予測(青のドット)は、$450K < SALE_PRICE < $1.1Mのプロパティの実際(黄色の破線)について、主に均等に分散されます。ただし、ローエンド・プロパティ(左端)の予測は体系的に高いバイアス(たとえば、「あまり暖かい」)ですが、ハイエンド・プロパティ(右端)の予測はバイアスが低く(涼しく)なります。リグレッション・モデルでは、これらのエッジ・バイアスが発生することが多く、APEXを使用してこれらのモデル・バイアスを軽減します。




モデルデプロイメント


また、OML AutoML UIにより、MLモデルのRESTエンドポイントとしてのデプロイメントも特に容易になります。再度、図3に示されている最高位のニューラル・ネットワーク・モデルを強調表示し、「Deploy」をクリックして、この例でsale_price_predictionになるデプロイメントのURIを指定します(図6を参照)。次に、「OK」をクリックしてそのMLモデルをデプロイします。


図6: OML AutoML UIを使用したニューラル・ネットワーク・モデルのデプロイ




次のタスクは、このウォークスルーで最も困難な部分であるデプロイ済モデルのAPIをプログラムで操作できることを確認することです。それにもかかわらず、単純です。


デプロイメントのテスト


OCIコンソールページを使用して、Cloud Shellセッションを開始してテストを開始します。次に、「ADB」→「Database Actions」→「OML RESTful」サービスに移動し、図7に示すような最初のURLをコピーします。Cloud Shellセッションに戻り、そのURLをtoken_server_urlというシェル変数に貼り付けます。また、"api/oauth2/v1/token"が追加され、改訂されたtoken_server_urlの形式は次のようになります。


token_server_url=https://mvdvitnosgjllaz-joehahnadw.adb.us-ashburn-1.oraclecloudapps.com/omlusers/api/oauth2/v1/token


図7: OML RESTfulサービス・コンソール




デプロイされたモデルのREST APIと対話する場合はaccessTokenが必要であり、token_server_urlへのこのコールを介してaccessTokenがリクエストされます:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"grant_type":"password", "username":"'<username>'", "password":"'<password>'"}' "${token_server_url}"

<username>および<password>は、ADBユーザー資格証明を参照します。上記は、別のシェル変数にステージングされた985-character-long accessTokenを表示します。

accessToken=’eyJhbGciOi... h2H4Ca2w==’

これは簡潔にするためにここで短縮されています。


デプロイされたモデルのスコアリングURLは、図7の3番目のURLの後にモデルのdeployment_uri (図6)からも推測されます。

score_url="https://mvdvitnosgjllaz-joehahnadw.adb.us-ashburn-1.oraclecloudapps.com/omlmod/v1/deployment/sale_price_prediction/score"

次に、accessTokenとプロパティの関連ファクトを、次の方法でスコアリングURLにフィードします。

curl -X POST --header "Authorization: Bearer ${accessToken}" --header 'Content-Type: application/json' "$score_url" -d '{"inputRecords":[{"YEAR_STR": "2016", "NUMFLOORS": 2.0, "BUILDING_CLASS_AT_SALE": "B1", "XCOORD": 1012437, "QUARTER": "3", "CT2010": 974.0, "SANITDISTR": "18", "ASSESSTOT": 38376, "YCOORD": 175458, "AGE_YEARS": 17, "ASSESSLAND": 9088, "SHAPE_LENG": 263.108470427, "RESIDFAR": 1.25, "SCHOOLDIST": "18", "LAND_SQFT": 2858, "GROSS_SQFT": 4818}]}'

which responds with

{
  "scoringResults": [
    {
      "regression": 800205.4431348437
    }
  ]
}


これは、この特定の17-year-old 2階建て住宅の市場価値は、2016年第3四半期に約$800Kと推定されていることを示しています。


これにより、デプロイされたモデルのREST APIと対話するためにカスタム・コードを使用できることが確認されます。これは、MLモデルの予測をデータ処理パイプラインまたはアプリケーションに埋め込むためのコードを使用したい場合に便利です。ただし、MLモデルとの対話を希望する場合、上記が不便である可能性があり、これらの対話のために、ADBによって提供されるAPEXサービスにピボットします。



APEX


Brooklyn NY全体の住宅資産の市場価値を推定するMLモデルを導入した後、APEXを使用して、そのMLモデルを使用して予測を生成するアプリケーションを迅速に構築します。APEXはOracleのローコード・アプリケーション開発ツールであり、ADBを含むOracle Databaseの任意のバージョンと相互運用できます。APEXのウィザード主導のインタフェースを使用して、最初にADBデータベース・インスタンスに存在するBrooklynプロパティ・レコードの詳細を表示する検索ページを作成します(図8)。


図8: アドレスを入力して「検索」をクリックすると、選択したプロパティに関する追加の詳細が表示されます(図9)。




Brooklyn住所を検索すると、その資産の販売履歴を示す短いレポートと、そのプロパティの場所を示す対話型マップ(図9)が表示されます。また、そのレポートではMLモデルを使用して、目的のプロパティ「comps」の市場値をオンザフライで計算します。これは、類似した機能を持つ近傍の他の特性です。


図9: Brooklynマップ(ブルー・フラグ)上の居住地と、クリックで詳細を検査できる近隣の同等のプロパティ(赤)を含む住宅地の詳細。




次のAPEXダッシュボードの図10では、ユーザーがwhat-ifシナリオ分析を実行できます。そのダッシュボードでは、ユーザーは、プロパティのホームに500平方フィートを追加するなど、特定のプロパティの属性を調整して、その居住に対する潜在的な変更に対応できます。その後、APEXインタフェースを介して行われた変更によって、MLモデルへのコールがトリガーされ、プロパティの市場価値の見積りが改訂されます。また、APEXフードの下の図11週間は、APEXページ・デザイナ・インタフェースを使用して、APEXダッシュボードでMLモデルをコールするために使用するカスタムSQLおよびPL-SQLコードをユーザーが埋め込む方法を示しています。これにより、図10に示す対話型のWhat-If分析が可能になります。


図10: このAPEXフォームでは、ユーザーがWhat-Ifシナリオ分析を実行できます。プロパティの属性(平方フィートなど)のいずれかを変更すると、APEXはMLモデルをコールして、そのプロパティの改訂された市場値を生成して表示します。


図11: APEXの動的アクションは、このカスタムPL/SQLコードをダッシュボード・ボタンにリンクします。このボタンをクリックすると、MLモデルをコールするこのコード・スニペットの実行がトリガーされ、改訂されたプロパティの新しい市場価値が推定されます。




マップ


APEXのより強力な機能の1つは、マッピング機能です。単純な緯度/経度座標、Oracle DatabaseのネイティブSDO_GEOMETRY、またはGeoJSONデータのいずれを使用する場合でも、APEXのマップ機能を使用すると、ヒートマップを簡単に作成でき、図12ではプロパティの緯度/経度座標を使用して、Brooklyn全体の市場価値をヒートマップします。


図12: このAPEXヒートマップでは、MLモデルを使用して、各プロパティの市場価格を緯度および経度の関数として推定します。APEXの動的アクションにより、このダッシュボードもインタラクティブになり、上記のスライダを使用して、ユーザーはBrooklyn市場の値が時間の経過とともにどのように進化するかを確認できます。




モデル再トレーニング


また、APEXとOracle Databaseを組み合わせることで、MLモデルのトレーニング・サンプルに存在する可能性のある誤ったレコードを特定し、除外することができます。図5は、現在のMLモデルが、SALE_PRICE < $450Kを持つ非常にローエンド・プロパティおよびSALE_PRICE > $1.1Mを持つハイエンド・プロパティに対して不適切に実行されることを示しています。ポイントは、多くの場合、トレーニング・サンプルから外れ値レコードをフィルタし、よりパフォーマンスの高いトレーニング・データを使用してモデルを再トレーニングすることをお薦めします。この可能性を図13に示します。この図では、スライダと対話型散布図を使用して、APEXユーザーが不要な低およびハイエンドのプロパティをドロップできます。これらはすべて、バックエンドのカスタムPL/SQLを介してトレーニング・サンプルをフィルタするAPEX動的アクションによって有効になります。


図13: APEXフロントエンドの調整可能なスライダにより、ユーザーはバックエンドでトレーニング・レコードのエッジトリミングを動的に実行できます。




メイン結果


APEXは、Oracle Databaseのデータと機能(機械学習など)を、ユーザーのニーズに合わせて調整されたダッシュボードを介してビジネス・ユーザーに公開するのに適した強力なローコード・アプリケーション開発ツールです。このウォークスルーが示すように、APEXをOMLと組み合せて使用すると、影響力のある結果が得られます。OMLは、ここで使用してデータベース・データを準備し、OMLのAutoML UIを使用して、プッシュ・ボタンで簡単にMLモデルをトレーニングし、そのモデルの予測をAPEXのポイント・アンド・クリック・インタフェースを介して実行可能にしました。



可能な次のステップ


モチベーションの強いリーダーは、Oracle Cloud Infrastructure (OCI)テナンシで上記を再構築することも推奨されます。Oracleクラウド内でADWインスタンスを起動し、Brooklynプロパティ・データをADW表にロードし、OML AutoML UIを使用してMLモデルをトレーニングおよびデプロイした後、APEXを使用してそれらのモデルの予測を視覚化できます。この演習のOMLノートブックおよびAPEXアプリケーションも、このコード・リポジトリにアーカイブされます。


このブログ投稿に記載されているトピックの詳細については、次のリソースを参照してください。

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

OCIのカスタム・ルート表を使用した詳細なルーティング制御 (2025/02/27)