SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド

データベース内で機械学習!? なぜ求められるのか、そしてどのように実装されるのか

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド 第12回

  • このエントリーをはてなブックマークに追加

 この連載では、開発者の皆様がシステム・アーキテクチャやアプリケーション・コードをより洗練させるのに役立つデータベース・マネジメント・システム(DBMS)の基本を振り返り、実装に合った技術の組み合わせを解説します。今回は、近年増えている、データベース内で機械学習処理を行う実装に焦点をあて、なぜデータベース内に機械学習が実装されるのか、そしてどのように実装されているのかを紹介します。

  • このエントリーをはてなブックマークに追加

はじめに

 この連載は、第1回に紹介したDBMSの3階層構造における「アーキテクチャと実装」についての技術の紹介から始まり、中間の階層である「データ・モデルとデータ型」についてお伝えしてきました。データ・モデルとデータ型に関しては、JSONをDBMSで扱う方法やグラフデータモデルとグラフDBMS、解釈や取り回しに癖がある空間データについて取り上げました。

 今回は、データの活用方法の1つである機械学習/AIとデータベースの関わりに焦点を当てていきたいと思います。

 なお、本連載で例として挙げるデータベースはオラクルが提供しているものが多いですが、オラクル製品を使っていない方にも参考にしていただけるように解説します。

対象読者

 この連載では以下の読者を想定しています。

  • データ資産を活用する、新しいアプリケーションの構想や設計を担われる方
  • データ基盤の運用を担われている方や、今後検討される方
  • 新たに開発するアプリケーションの、最適なデータベースをお探しの方
  • 目的別データベースから、価値ある情報を素早く引き出す検討をされている方

機械学習の現在

 様々なデータが大量に蓄積され、ビッグデータという言葉が流布する以前から、統計解析やデータマイニング、予測分析と呼ばれる機械学習的な機能を持つアプリケーションはデータを活用する手段として認知されていました。しかしながら、ビックデータという潮流を経て、ここ最近では、データの種類や量が大きく膨らみ、また別な側面ではデータの信頼度が少し低いデータを有効活用するために機械学習やAIといったデータ活用技術自体の重要性が高まっているように見えます。

 もちろん深層学習等の手法そのものの進歩やナレッジの蓄積、データサイエンスに従事する人員の育成等もこれらの技術の躍進に重要な要素でありますが、本連載の性質上、データベースという観点でこの機械学習との関わりに主眼を置いてみると、近年、データベース内で機械学習処理を行う実装やそのプランを発表するものが増えてきています。

 アプリケーションと呼んでも差し支えない層である機械学習がどうしてデータベース内に実装されることになっているのか、その実装はどうなっているのかをこれから述べていきたいと思います。

機械学習の5つのプロセス

 データベースと機械学習の関係を整理するために、まず機械学習のプロセスについて簡単に触れておきます。機械学習とは何かというようなことは、既に多くの書籍やサイトで解説されているかと思いますので、そちらを参照頂くこととして、ここでは簡単のために「データから機械的にルールやパターンを抽出し、予測等を行う」ものとしておきます。

 つまり、目的のためにデータを集め、学習に適した形に変換準備し、学習を行い、その学習結果を評価し、利用に足ると判断できれば、システム化等の適用に入るといった流れになります。機械学習によるデータの活用では多くの場合、以下のプロセスに沿って処理が行われています。

1. データ収集

 対象とする課題と解決方法に適した元データを探し、収集する。

  • 課題:追加契約率を上げる。
  • 解決方法:追加契約の可能性を判定し見込みの高い顧客への売り込みを強化する。
  • データ:顧客マスタ(顧客の各種属性データ)、契約状況データ、契約受注データ

2. データ準備(変換)

 元のデータを解決方法において必要とされる特徴を機械学習アルゴリズムに応じた形に変換、準備をする。

 追加契約をした顧客とそうでない顧客を仕分けるため、過去の受注履歴データから追加受注が発生したかどうかを確認し、顧客ごとに追加契約フラグ(0/1)を立てる。そのデータに顧客の属性を結合する。顧客の年齢を10代ごとに階層化し、年収も5段階程度で階層化、その他の数値型のデータに関してはminmax正規化で0-1の範囲の値として設定し、1か月以内の新規顧客は追加契約の可能性が少ないためデータから除外する。

3. 学習

 データをアルゴリズムに適用し、学習させることでモデルを生成する(トレーニング/モデル構築/フィッティングとも)。

 データセットの75%を取り出し、学習用として、追加契約の有無を目的変数として、サポートベクタマシンの非線形カーネルでパラメータは C=1,γ=1.5 で分類モデルを作成する。

4. 評価

 学習結果が期待された効果を満たすものであるかを評価する。

 モデル作成に使わなかった残りの25%のデータを取り出し、モデルを適用し、分類の正答率を確認する。いったん85%以上の正答率を目標として、よさそうであれば、4分割でクロスバリデーションを実施し再度チェックする。正答率が満たない場合、モデルのチューニングやデータの追加などを検討する。

5. 適用(業務システムへの適用)

 評価結果が十分なものである場合、学習結果を業務に適用することで業務システムの一部に組み込んでいく。

 作成された予測モデルを新規顧客に適用し得られた結果を、営業支援系のシステム、新規顧客の中で追加契約の可能性が高い顧客のリストを生成、担当営業には画面上に表示される仕組みを作る。

 ここでプロセスとして記すと5段階でシンプルなものですが、実際には評価の段階で思うような結果が得られないことも少なくありません。その場合、1~4のプロセスを何度も繰り返すこととなります。

 さらに、このようなプロセスの話ではデータの所在、処理する場所といった観点が見えにくくなっていることもありますので、以下のような図にしてみます。

図1 元々の機械学習プロセスとデータベースの領分
図1 元々の機械学習プロセスとデータベースの領分

 このような形にすると、1~4を繰り返すということは、そのままデータ管理システムと分析システム間でのデータの移動が都度発生することがよくわかるかと思います。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
データベースと機械学習プロセスの関係

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド連載記事一覧

もっと読む

この記事の著者

中井 亮矢(日本オラクル株式会社)(ナカイ リョウヤ)

 日本オラクル株式会社でOracle Databaseを担当するエンジニア。主に地理空間機能、グラフ機能、機械学習機能を中心とするデータ活用や性能チューニングの領域で、製造業、小売業、公共・公益などの様々な問題解決およびコンサルティングに従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18352 2023/10/03 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング