TOP>製品/サービス>カテゴリから探す>ディシジョンオートメーション>Progress Corticon>【Corticon Tech コラム】

Progress Corticon

【Corticon Tech コラム】

No.32 ルールベースAI Corticonから機械学習 DataRobotの予測モデルを実行し、ディシジョンインテリジェンスを実現してみた。(2022年9月2日)

ルールベースAI Corticonから機械学習 DataRobotの予測モデルを実行し、ディシジョンインテリジェンスを実現してみた。

はじめに

本記事では、ルールベースAI「Corticon」(※1)のルールから、機械学習AI「DataRobot」(※2)の予測モデルを実行する方法を検証してみました。

※1 ルールベースAI「Corticon 」とは
※2 機械学習AI「DataRobot 」とは


検証する理由

ルールベースと機械学習はどちらもAIを実現するための技術であり、どちらか片方のみを利用してもAIシステムは構築できます。
しかし、ルールベースと機械学習を組み合わせ、お互いの得意部分を活かしつつ苦手な部分を補うことで、より柔軟で高精度な意思決定支援システムを構築できる場合があります。この裏付けとして、世界中のデータアナリスト・データサイエンティストが集まるKaggleの最近のコンペティションでも、ルールベースと機械学習をうまく組み合わせたディシジョンインテリジェンス がトップの成績をとった事例があります。

メリット デメリット
機械学習 学習データがあればルールはわからなくても実装可能。
かつては処理が難しかった自然言語や画像の判別も実装が可能。
学習データがなければモデルは実装できない。
モデル内でどのようなルールでデータが処理されているか把握し難く、人間がそれを修正することも難しい。
ルールベース 学習データがなくてもルールがわかっていれば実装可能。
明示的な既知のルールを実装するため人間にも内容がわかりやすく変更もしやすい。
暗黙的な未知のルールは実装できない。
特徴量の個数が極端に多いデータや特徴量の意味合いが人間には把握できないデータ(自然言語・画像などが代表的)のルールは実装できない。

例:ローン申込み審査の処理の場合。

このような組み合わせのイメージです。

イメージ1

他のルールベースと機械学習を組み合わせ例として、機械学習の予測モデル作成時に必要なデータの加工や絞り込み部分をルールベースで補ったり、ルールベースでは実現困難な画像処理や自然言語処理部分を機械学習で補うなど、様々な利用方法が考えられます。


機械学習「DataRobot」の予測モデルの呼び出し方

DataRobotには機械学習による予測モデルの実行方法が複数用意されています。本記事ではDataRobot内で既に予測モデルが作成されてデプロイされていること(※)を前提に、Corticonなどの他システムとの連携に便利なREST API (v1.0)で予測モデルを実行してみます。

※ DataRobotでの予測モデルの作成方法やデプロイ方法に関しましては、本記事では割愛させていただきます。

イメージ2

上記のDataRobotデプロイ画面の予測タブからもAPIの実行方法を確認することができますが、予測実行APIにアクセスするための仕様をまとめると以下になります。


アクセス先のURL

https://[DR_URL]/predApi/v1.0/deployments/[MODEL_ID]/predictions
[DR_URL]と[MODEL_ID]に関してはDataRobotのサイトで確認することが可能です。


HTTPヘッダに追加するパラメーター

  
Authorization: Bearer [DR認証コード]
DataRobot-Key: [DR認証キー]
Content-Type: application/json; charset=UTF-8
  

[DR認証コード]と[DR認証キー]に関してはDataRobotのサイトで確認することが可能です。


リクエストJSON


リクエストでPOSTするJSONは以下のような構造です。文字コードはUTF-8です。


[
  {"特徴量A": "値1", "特徴量B": "値2", ・・・・},
  {"特徴量A": "値3", "特徴量B": "値4", ・・・・},
  { 次の予測させたいデータ行 ・・・・}, ・・・・
]


レスポンスJSON

レスポンスデータに含まれるJSONは以下のような構造です。

  
{"data": [
{
  "rowId": 行番号,
  "prediction": 予測結果,
  "predictionValues": [
    {"label":"予測ターゲット名","value":予測結果}
  ],
  "deploymentApprovalStatus": "APPROVED"
},
{ 次の予測結果行 ・・・・ }, ・・・・
]}
  

注意点

もし画像データをPOSTする必要がある場合は画像バイナリデータをBase64エンコードで文字列化してJSONにします。例えば以下のような形式です。

  
"画像データ特徴量": "/9j/4AAQSkZJRg---中略---oooA//2Q==", 
  

また、レスポンスJSONの内容はDataRobot側のデプロイ設定や予測モデルの種類によって変化します。上記のレスポンス例は連続値を予測する回帰モデルのデフォルト設定時のJSONです。


Windowsでのcurlコマンド例

Corticonや他のシステムとDataRobotの連携を試す際は、まず事前にOSに付属しているcurlやwgetコマンドなどで上記設定のリクエストを実行し、DataRobotで正しく予測が実行できるかどうか確認します。Windowsのコマンドプロンプトの場合、以下のコマンドで確認できます。

  
curl "https://[DR_URL]/predApi/v1.0/deployments/[MODEL_ID]/predictions" -H "Content-Type: application/json; charset=UTF-8" -H "Authorization: Bearer DR認証コード文字列" -H "DataRobot-Key: DR認証キー文字列" -X POST -d @C:\リクエスト保存先パス\Request.json -o C:\レスポンス保存先パス\Response.json
  

ルールベース「Corticon」側の実装と動作確認

Corticonの標準機能だけではルール内部データをリクエストJSONに変換して上記のHTTP仕様でPOSTしたり、DataRobotから返ってきたレスポンスJSONをルール内部データとして取り込むことはできません。
このような場合は、Corticonではルール内で任意のJavaプログラムを実行できる拡張機能を利用します。
本記事ではサンプルとして、Corticonの拡張機能の一種であるサービスコールアウトを実装しました。JavaのプログラムのソースとビルドしたJARファイル(※)は以下です。

※ Javaソースの内容やビルド方法に関しましては、本記事では割愛させていただきます。詳細はCorticonの製品マニュアル等でご確認ください。

イメージ3

サービスコールアウトのJARファイルは、Corticonのルールプロジェクトの右クリックメニューの「プロパティ」「Corticon Extensions」で追加設定を行うことで、ルールフローの編集画面から利用することができます。

イメージ4

イメージ5

このサービスコールアウトを使用するには、Corticonの語彙(ecore)に最低限以下のエンティティ、属性、関連性が必要です。

イメージ6

上記エンティティの各データや関連性はルールへの入力値として与えることが可能ですし、ルール内で動的に作成・変更しても問題ありません。またルールの実装で必要な他のエンティティや属性があれば任意で追加することが可能です。

サービスコールアウトを実行する最低限の語彙(ecore)、ルールフロー(erf)およびルールテスト(ert)を作成したサンプルのルールプロジェクトは以下になります。

このサンプルでは、DataRobotのデモとしてよく利用されている東京23区の賃貸物件の適切な賃料を予測するモデルを実行します。そのため、語彙の「dr_input」エンティティにはこの賃貸料の予測に必要な各属性を作成しています。

イメージ7

DataRobotの予測モデルの特徴量名とCorticonの「dr_input」内の属性名が異なるものに関しては「dr_mapping」エンティティで名前変換の設定をします。また、画像ファイルへのパスが入力される属性は同じく「dr_mapping」エンティティのimage_flgでtrueを設定します。

イメージ8

ルールテスト(ert)を実行すると、DataRobotの予測結果は「dr_input」の子エンティティ「dr_output」として返ってきます。

イメージ9

上記テスト画面上で黒塗りしているDataRobotの接続情報部分はサンプル内のルールテスト(ert)ファイルからが取り除いておりますので、実際に動作させるには正しい情報をあらためて入力する必要があります。
また画像ファイルへのパスがルールテスト(ert)の入力データとして入っておりますが、指定されている画像ファイル実体に関しては本記事では準備しておりませんので、もし実際に動作させる場合は画像ファイルも適宜準備する必要があります。

なお、本記事のサンプルプロジェクトのルールフロー(erf)では、作成したサービスコールアウトだけを実行するようにしていますが、他のルールを追加することも可能です。本記事の冒頭にあるような前処理・後処理をCorticonで実装するには、サービスコールアウト(予測モデル実行)の前後にルールを追加し、動的に予測モデルへの入出力を操作することで実現できます。


まとめ

DataRobotではデプロイされた予測モデルを他システムから実行するための便利なREST APIがあらかじめ用意されているため、Corticonなどの様々なプログラム言語や製品から比較的容易に予測モデルを呼び出すことが可能です。
Corticonでも本記事のような拡張機能を実装することで、ルール内から機械学習の予測モデルを実行し結果を利用することができます。
このように、ルールベースAI「Corticon」と機械学習「DataRobot」を組み合わせたディシジョンインテリジェンスソリューションで、より柔軟で高精度の意思決定システムを実現できる場合がありますので、ぜひご検討ください。

まとめ


著者紹介

DX推進技術本部 データ活用技術統括部 AI技術部 主任

以前は、Linux系のプログラマ兼SEとして、受託請負開発などに従事していた。
また、IT系雑誌や書籍の記事執筆などにも携わった経験をもつ。
現在は、DataRobot社が開催しているAIアカデミーを卒業し、CFDS(カスタマーフェイシングデータサイエンティスト)兼BRMSエキスパートとして、技術サポート、研修などを行う。

「Corticon Tech コラム」記事一覧


お求めの情報は見つかりましたでしょうか。

資料請求/お問い合わせはこちら(専門の担当者が確認し、ご対応します。)

お客様の状況に合わせて詳しい情報をお届けできます。お気軽にご相談ください。

ページの先頭へ戻る