2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Hivemallを使ってSQLで機械学習(全1記事)
リンクをコピー
記事をブックマーク
馬場はるか氏:ブレインパッドの馬場と申します。今日は、Hivemallという機械学習のライブラリについて、実際に使っている経験を踏まえて紹介します。よろしくお願いします。
先に今日「お話しすること」と、「お話ししないこと」を伝えます。今日は2点に絞って、お話しします。まず「そもそもHivemallとは何か?、どうやって使うのか?」というお話が一つ。次に「Hivemallを使うと何がうれしいのか(メリットか)?」ということをお話しします。
ですので、今日はアルゴリズムや実装の詳細については触れません。Hivemallの使い方に関しては、公式のドキュメントやGitHubの実装例を参照してもらえればと思います。それ以外だと開発者の方が書かれているQiitaやブログなどがおすすめです。
ちょっとだけ自己紹介させていただきます。私はブレインパッドという会社でデータサイエンティストをしています。ブレインパッドの人間ではありますが、普段はクライアントである企業のオフィスに常駐していて、ここ(ブレインバッドの本社)にはいないので、今日は若干アウェイな感じがします。
学生のときは物理学をやっていて、専門は天体物理学でした。天体物理学に興味ある方は懇親会で声かけてください。
今の仕事は、クライアントである企業のオウンドメディアで会員データやアンケートデータの分析をして、データをマーケティングにどうやって活かしていくかというところの支援をしています。
ということで、ここから本題に入ります。今日紹介するHivemallは、名前の中にHiveが入っています。
ご存じでない方もおられると思うので少しだけ解説しますと、そもそもHadoopという、ビッグデータを扱うための並列分散処理ができるミドルウェアがあります。そのHadoop上でDBMS(データベース管理システム)の機能を提供しているのがHiveです。そしてそのHiveで使うことができる、SQLのように書けるデータ操作言語のことをHiveQLと呼びます。
ではHivemallは何かということですが、先ほど紹介したHiveQLクエリを使って機械学習の一連の処理、学習やバリデーション、予測などをすべて実行することが可能なライブラリです。Hivemallの開発元は、Treasure Dataという会社です。
ライブラリの中身自体は、SQLで書けると言いつつ、Javaで実装されています。ちなみに、Hivemallのロゴはすごくかわいいなと思います。
(スライドを指して)釈迦に説法ではありますが、普通SQLはこんな感じで書きます。
参照したいテーブル名「order」というのがあって、SELECTで欲しいカラム名を打つと、こんな感じで結果が返ってきます。
「このSQLを使ってじゃあどうやって機械学習をするんだろう?」と疑問に思われるかもしれません。実は最近、HivemallにXGBoostが実装されました。それを例にちょっとだけクエリ自体を見てもらおうと思いますが、学習はこんな感じで行われます。
(スライドを指して)ちょっと字の色が見づらくて申し訳ないですけど、FROMのところに書いてあるテーブル名は学習用のデータマートになります。学習用データマートはHivemall用に少し加工が必要なので、使う前に別に整備しておく必要があります。
その学習用データマートに対してHivemallの中では、このSELECTの後ろにある「train_xgboost」という関数として機械学習ライブラリが使えるようになっており、このような書き方をするとxgboostのモデルを作成できてしまいます。引数もいろいろ指定できるようになっています。
実際にできるモデルは、このような感じでテーブルに保存されます。私たちが見ても「なんのこっちゃ?」なのですが、このテーブルをさらに参照することで予測できます。
このFROMには、先ほどのモデルが入っているテーブル名を入れます。SELECTでは「xgboost_predict」をまた呼んで、引数の中にいろいろ指定することで、いろいろな条件で予測可能です。
まとめると、おおまかには「学習」「バリデーション」「予測」といった感じで、それぞれクエリで実行していくイメージになります。モデルや予測結果はすべてテーブルで管理できるので、例えば予測するときは、モデルのテーブルと予測したいデータマートのテーブルをLEFT JOINなどで結合し、そこに対して先ほどのxgboostの予測用クエリを叩く感じになります。
ここまでHivemallの説明をしてきましたが、「どういうときに有効なの?」とか「別にHivemallじゃなくても普通のPythonでもいいじゃん?」と思う方もいるかもしれません。最後に、Hivemallがどのようにうれしいのかをお話します。
(スライドを指して)機械学習をビジネスに活用するといった文脈や、機械学習システムを組み込む場合に、こういったシステム構成の図を見かけることがあります。
少し(運用面も絡めた)MLOps的な話になりますが、機械学習を使う場合は、基盤システムやデータベースから外にデータを出して、そこで分析用の環境を用意し、その中で機械学習して、またデータベースなどに結果を戻すようなことが行われると思います。
このような場合に高いハードルとなるのが、外に分析用の環境を用意することです。まず、環境を用意するリソースがそもそも必要です。データを外に(書き)出すので、加工や転送部分の実装も必要になります。運用していく上では、その加工や転送の箇所でエラーが起こりやすくなります。
実際、加工や転送のところで、障害というほどの規模ではないにせよエラーが出ることは多く、その原因としては、データベース側に何かしらの変更が生じたというようなことが多かったりします。
そのような場合にHivemallが非常に便利です。データベースの中でHiveが使える場合は分析用の環境が不要になり、この中だけで一連の機械学習のフローを完結させられます。
そうすると、先ほど述べたようなデータ連携を省略できるので、運用を考慮した上でも比較的気軽に機械学習システムを組みやすいと思います。
とくに(これは宣伝でではありませんが)、このデータベースのところにTreasure Dataが入っている場合は、特別な環境構築も必要なくこの中でHivemallのクエリやコマンドが打てるようになるので、かなり便利に使える状態になっていると思います。
最後にまとめになります。HivemallというSQLで書ける機械学習ライブラリを紹介しました。データ転送のプロセスがいらないので、手軽に機械学習システムができると思っています。
(今回は)触れませんでしたが、使えるアルゴリズムも比較的多岐にわたっているので、そこまで不便に感じることもなく使えると思います。
データサイエンティストが関わっているような会社は、大きい企業やデータ活用に注力しようとしている企業だと思います。そのような企業であれば、多くの場合はHiveやTreasure Dataが使えると思うので、今日はHivemallという言葉をぜひ覚えて帰っていただければうれしいです。お時間ありがとうございました。
(会場拍手)
関連タグ:
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05