2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
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.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略