正規化データ上でSQLのみを用いてツリーを成長させる(JoinBoost: Grow Trees Over Normalized Data Using Only SQL)

田中専務

拓海先生、お忙しいところ失礼します。最近、部下から「データベース上で機械学習を直接やる論文」があると聞きまして、うちの工場データに応用できないかと考えています。要するに、データを外に出さずにモデルを作れるという理解でいいですか?

AIメンター拓海

素晴らしい着眼点ですね!大丈夫、田中専務。おっしゃるとおり、論文はデータを移動させずにデータベース(DBMS)の中だけで決定木系のモデルを育てられるという話です。しかもその手段が純粋にSQLだけで動くのがポイントなんです。これならガバナンスと速度の両方が期待できますよ。

田中専務

ただ、うちはいまだにテーブルを分けて保存している正規化(normalized)されたDBです。従来はそれを一つにまとめてから機械学習に回すと聞きましたが、まとめると何が困るんでしょうか。

AIメンター拓海

いい質問ですよ。分けられたテーブルをまとめて(denormalize)一つの大きな表にすると、まずデータコピーによる作業負荷が増えます。次にセキュリティや統制の問題、さらにサイズが大きくなり処理が遅くなる。JoinBoostはこの「まとめ作業」をせず、結合(join)を駆使してSQLだけで木(ツリーモデル)を育てられる方法です。要点は、移動を減らして速く、かつ安全にできる点です。

田中専務

これって要するに、外部の機械学習専用ツールを使わずに、うちの既存データベースのままでモデルを作って、結果もデータベース側で管理できるということですか?

AIメンター拓海

田中専務

それは魅力的ですね。ただ、実務的には速度とコストの両方を気にします。SQLだけでやると本当に速いのですか。既存のLightGBMやXGBoostに勝てるという話をどう評価すれば良いですか。

AIメンター拓海

素晴らしい着眼点ですね!要点を3つにまとめます。1) JoinBoostはDBMSの結合最適化やカラム指向処理を活かすため、特に特徴量が多い場合やジョイングラフが複雑な場合に有利です。2) 実験ではランダムフォレストで約3倍、勾配ブースティングで若干速いという結果が示されています。3) ただしDBMSの種類や設定、データ分布によって差が出るため、PoCで評価することが重要です。大丈夫、評価手順も一緒に整えられますよ。

田中専務

なるほど。技術的には「Residual(残差)」の扱いが鍵だと聞きましたが、それが何か初心者にわかるように説明してもらえますか。現場のデータ加工は増えますか。

AIメンター拓海

素晴らしい着眼点ですね!残差とは「モデルが予測できなかった差」のことです。JoinBoostはこの残差をDB内で更新しながら学習を進める工夫をしており、残差の更新コストを下げるために列(カラム)を追加してDBの投影(projection)で処理する方法を取ります。現場での追加のデータ加工は最小限に抑えられ、むしろETL(抽出・変換・読み込み)の負担を下げられる可能性がありますよ。

田中専務

実運用での注意点はありますか。例えば複数のテーブルが複雑に結合される場合の設計や、既存DBを傷つけない運用面の懸念です。

AIメンター拓海

いい質問ですよ。設計上のポイントも3つでお答えします。1) ジョイングラフが複雑な場合はClustered Predicate Tree(CPT)という手法で結合を局所化し、負荷を分散できます。2) DBに新しい列を追加して残差を保存する際は、権限やバックアップ方針を事前に整理すること。3) DBの種類(カラム型か行型か)で最適化方法が変わるため、PoCで性能差を測ることが必須です。大丈夫、一緒に手順を作れば実務で運用できますよ。

田中専務

わかりました。最後にまとめさせてください。私の理解では、この論文は「データを動かさず既存DB上でSQLだけで決定木系の学習を行い、性能とガバナンスを両立させる方法を示した」ということで合っていますか。これで社内の初期検討を進めたいと思います。

AIメンター拓海

素晴らしい着眼点ですね!その理解で完全に合っています。ポイントは、移動を減らしDBの機能を活かすことでコストとリスクを下げられること、残差更新などの工夫で性能差を縮めていること、そしてPoCでDBごとの挙動を確かめることです。大丈夫、一緒にPoCの計画を作れますよ。

AIBRプレミアム

関連する記事

AI Business Reviewをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む