2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
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.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦