Oracle Machine Learning AutoMLを使った機械学習

Autonomous Data Warehouse触ってみるの続きで今回は「Oracle Machine Learning AutoML」を使ってみたいと思います。
今回機械学習するデータはKaggleのチュートリアルで有名なタイタニックのデータを利用します。

前提条件

  • Autonomous Data Warehouseが構築されていること
  • タイタニックのデータを入手済みであること

タイタニックのデータをADWにアップロードする

SQL Developer Webの【データベースアクション】にアクセスし、【データ・ロード】をクリックします。
f:id:kyamisama:20220201150846j:plain

【データのロード】と【ローカル・ファイル】を選択し、【次】へ進みます

f:id:kyamisama:20220201151803j:plain

タイタニックのデータをドラッグ&ドロップでアップロードします

f:id:kyamisama:20220201151810j:plain

アップロード後、【鉛筆マーク】をクリックするとCSVデータを確認することができる

f:id:kyamisama:20220201152237j:plain

f:id:kyamisama:20220201153128p:plain

今回は【Servived】をVARCHAR2にデータ型を変更し、【閉じる】へ

f:id:kyamisama:20220201155743j:plain

その後データに問題なければ【開始ボタン】を押しデータを流し込む

f:id:kyamisama:20220201155827j:plain

【実行】をクリック

f:id:kyamisama:20220201160041j:plain

問題なくデータを取り込めたことを確認する

f:id:kyamisama:20220201160121j:plain

同じ要領でtest.csvもアップロードする

f:id:kyamisama:20220201160318j:plain

Oracle Machine Learning AutoML UIでモデル作成とデプロイ

OCI管理画面に戻り、【サービス・コンソール】をクリックする

f:id:kyamisama:20220201160643j:plain

左タブの【開発】から【Oracle Machine Learning ユーザー・インタフェース】へ

f:id:kyamisama:20220201160946j:plain

ログインユーザを求められた際は下記手順でユーザを作成する

すでにユーザを作成済みであればそのユーザでログインする
kyamisama.hatenablog.com

【AutoML】をクリック

f:id:kyamisama:20220201165025j:plain

【作成】をクリック

f:id:kyamisama:20220201165148j:plain

【名前】、【コメント】を入力後【データ・ソース】の虫眼鏡マークをクリックする

f:id:kyamisama:20220201165338j:plain

【TRAIN】を選択します

f:id:kyamisama:20220201170231j:plain

【学習】を[SURVIVED]、【ケースID】を[PASSENGERID]、【学習タイプ】を[分類]にします

f:id:kyamisama:20220202101603j:plain

画面右上の【開始】ボタンより【より速い結果】を選択します

f:id:kyamisama:20220202101916j:plain

学習中の画面

f:id:kyamisama:20220202102146j:plain

学習完了

f:id:kyamisama:20220202102907j:plain

【リーダー・ボード】を見ることでどのモデルの結果が良かったかが分かる

今回はSVMの精度が良かったとわかる
f:id:kyamisama:20220202103059j:plain

モデル名をクリックするこで詳細な結果が表示される

予測に最も影響したパラメータ
f:id:kyamisama:20220202103419j:plain
混同行列の結果
f:id:kyamisama:20220202103427j:plain

モデルのデプロイをします

対象のモデル名を選択し、【デプロイ】を実行します
f:id:kyamisama:20220202103657j:plain

デプロイの実行

【名前】、【URI】、【バージョン】、【ネームスペース】を記入し【共有】にチェックを入れる
f:id:kyamisama:20220202104028j:plain

デプロイの完了

f:id:kyamisama:20220202104258j:plain

モデル画面に移行

f:id:kyamisama:20220202104429j:plain

モデルのデプロイ

【デプロイメント】タブをクリックすると、先ほどデプロイしたモデルが表示されます
f:id:kyamisama:20220202104634j:plain

モデル名をクリックするとモデルのメタデータを見ることが出来る
{
  "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名をクリックします
f:id:kyamisama:20220202105551j:plain
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にアクセスする

f:id:kyamisama:20220202115618j:plain

作成したモデルをクリック

f:id:kyamisama:20220202115803j:plain

精度の高いアルゴリズムを選択しノートブックを起動します

f:id:kyamisama:20220202115957j:plain

ノートブック起動完了

f:id:kyamisama:20220202123759j:plain

【ノートブック】へアクセスします

f:id:kyamisama:20220202124045j:plain

生成したノートブックをクリックします

f:id:kyamisama:20220202124251j:plain

ノートブックが起動し実行していく

f:id:kyamisama:20220202125730j:plain

予測の評価指標をみる

f:id:kyamisama:20220202130307j:plain