Oracle Machine Learning AutoMLを使った機械学習
Autonomous Data Warehouse触ってみるの続きで今回は「Oracle Machine Learning AutoML」を使ってみたいと思います。
今回機械学習するデータはKaggleのチュートリアルで有名なタイタニックのデータを利用します。
前提条件
- Autonomous Data Warehouseが構築されていること
- タイタニックのデータを入手済みであること
タイタニックのデータをADWにアップロードする
SQL Developer Webの【データベースアクション】にアクセスし、【データ・ロード】をクリックします。
【データのロード】と【ローカル・ファイル】を選択し、【次】へ進みます
タイタニックのデータをドラッグ&ドロップでアップロードします
アップロード後、【鉛筆マーク】をクリックするとCSVデータを確認することができる
↓
今回は【Servived】をVARCHAR2にデータ型を変更し、【閉じる】へ
その後データに問題なければ【開始ボタン】を押しデータを流し込む
【実行】をクリック
問題なくデータを取り込めたことを確認する
同じ要領でtest.csvもアップロードする
Oracle Machine Learning AutoML UIでモデル作成とデプロイ
OCI管理画面に戻り、【サービス・コンソール】をクリックする
左タブの【開発】から【Oracle Machine Learning ユーザー・インタフェース】へ
ログインユーザを求められた際は下記手順でユーザを作成する
すでにユーザを作成済みであればそのユーザでログインする
kyamisama.hatenablog.com
【AutoML】をクリック
【作成】をクリック
【名前】、【コメント】を入力後【データ・ソース】の虫眼鏡マークをクリックする
【TRAIN】を選択します
【学習】を[SURVIVED]、【ケースID】を[PASSENGERID]、【学習タイプ】を[分類]にします
画面右上の【開始】ボタンより【より速い結果】を選択します
学習中の画面
学習完了
【リーダー・ボード】を見ることでどのモデルの結果が良かったかが分かる
今回はSVMの精度が良かったとわかる
モデル名をクリックするこで詳細な結果が表示される
予測に最も影響したパラメータ
混同行列の結果
モデルのデプロイをします
対象のモデル名を選択し、【デプロイ】を実行します
デプロイの実行
【名前】、【URI】、【バージョン】、【ネームスペース】を記入し【共有】にチェックを入れる
デプロイの完了
モデル画面に移行
モデルのデプロイ
【デプロイメント】タブをクリックすると、先ほどデプロイしたモデルが表示されます
モデル名をクリックするとモデルのメタデータを見ることが出来る
{ "miningFunction": "CLASSIFICATION", "algorithm": "SUPPORT_VECTOR_MACHINES", "attributes": [ { "name": "AGE", "attributeType": "NUMERICAL" }, { "name": "CABIN", "attributeType": "CATEGORICAL" }, { "name": "EMBARKED", "attributeType": "CATEGORICAL" }, { "name": "FARE", "attributeType": "NUMERICAL" }, { "name": "NAME", "attributeType": "CATEGORICAL" }, { "name": "PARCH", "attributeType": "NUMERICAL" }, { "name": "PCLASS", "attributeType": "NUMERICAL" }, { "name": "SEX", "attributeType": "CATEGORICAL" }, { "name": "SIBSP", "attributeType": "NUMERICAL" }, { "name": "TICKET", "attributeType": "CATEGORICAL" } ], "output": { "name": "SURVIVED", "attributeType": "CATEGORICAL" }, "labels": [ "0", "1" ], "modelName": "SVM_Titnic" }
URIの確認
UTI名をクリックします
URI情報を見ることが出来ます。
"url"と"paths"はメモしておいてください。後ほど使います。
【***.***.***.***】はマスクしています。
{ "openapi": "3.0.1", "info": { "title": "SVM_Titnic", "version": "1" }, "servers": [ { "url": "https://***.***.***.***/omlmod/v1/deployment" } ], "security": [ { "BearerAuth": [] } ], "paths": { "/SVM_Titnic/score": { "post": { "operationId": "scoreModel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SVM_Titnic_INPUT_TYPE" } } }, "required": true }, "responses": { "200": { "description": "Successfully scored model SVM_Titnic.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SVM_Titnic_OUTPUT_TYPE" } } } }, "400": { "description": "Bad request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Unauthorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Problem connecting to db, executing query or other unexpected error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } }, "components": { "schemas": { "SVM_Titnic_INPUT_TYPE": { "properties": { "inputRecords": { "type": "array", "items": { "$ref": "#/components/schemas/Attributes" } }, "topN": { "type": "integer", "format": "int32" }, "topNdetails": { "type": "integer", "format": "int32" } } }, "Attributes": { "properties": { "AGE": { "type": "number", "format": "double" }, "CABIN": { "type": "string" }, "EMBARKED": { "type": "string" }, "FARE": { "type": "number", "format": "double" }, "NAME": { "type": "string" }, "PARCH": { "type": "number", "format": "double" }, "PCLASS": { "type": "number", "format": "double" }, "SEX": { "type": "string" }, "SIBSP": { "type": "number", "format": "double" }, "TICKET": { "type": "string" } } }, "SVM_Titnic_OUTPUT_TYPE": { "properties": { "scoringResults": { "type": "array", "items": { "$ref": "#/components/schemas/ScoringResults" } } } }, "ScoringResults": { "properties": { "classifications": { "type": "array", "items": { "$ref": "#/components/schemas/LabelProb" } }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/Detail" } } } }, "LabelProb": { "properties": { "label": { "type": "string" }, "probability": { "type": "number", "format": "double" } } }, "Detail": { "properties": { "columnName": { "type": "string" }, "weight": { "type": "number", "format": "double" } } }, "Error": { "required": [ "code", "message" ], "properties": { "code": { "type": "string" }, "message": { "type": "string" } } } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } } }
ノートブックを使ってデータを予測してみる
AutoMLにアクセスする
作成したモデルをクリック
精度の高いアルゴリズムを選択しノートブックを起動します
ノートブック起動完了
【ノートブック】へアクセスします
生成したノートブックをクリックします
ノートブックが起動し実行していく
予測の評価指標をみる