はじめに
データ戦略室データサイエンスグループのせみです。2022年4月に中途入社して半年経ちました。前職は分析専門会社で分析を行いましたが、事業会社で働くことは初めてです。今回は、入社半年でやったことと事業会社でデータサイエンティストとして働いた感想について話したいと思います。
入社半年でやったこと
入社して初めて担当したのはSA360を用いた運用型広告の最適化のプロジェクト(以下「SA360プロジェクト」という)です。分析設計、データの前処理からモデル作成、本番運用まで、AIプロジェクトで必要な一連のタスクを全部やってきました。
SA360プロジェクトで実現したいこと
まず、SA360自体の詳細とSA360プロジェクトで実現したいことについて紹介したいと思います。
SA360(Search Ad 360)はGoogle社が提供している、有償の広告最適化ツールです。検索連動型広告において細かく最適化運用をする際に使われることが多いです。現在、レバレジーズの一部のサービスではリスティング広告に出稿する時に、SA360を使っています。 SA360プロジェクトの目的はレバレジーズの保有しているデータの傾向を広告運用に反映させ、費用対効果(ROAS)を高めることです。レバレジーズが保有しているデータを利用して機械学習でスコアを予測して、予測されたスコアをSA360に返して、google側は広告配信の最適化を行ってくれます。
SA360プロジェクトで作ったモデル
今回はGA360(Googleアナリティクス360)とレバレジーズが保有しているデータを利用して、LightGBMでモデルを作成しました。モデルを作成した時に、自分が頑張ったところを話したいと思います。
①不均衡データの対策
今回、利用しているデータは結構偏っているので、不均衡データの対策が必要でした。対策として、downsampling、SMOTE、downsampling+重み付け、downsampling+baggingを試してみましたが、downsampling+baggingの精度が最も良かったので、downsampling+baggingでモデルを作成しました。
➁広告に関するドメイン知識のキャッチアップ
SA360プロジェクトの目的はリスティング広告の広告配信最適化なので、リスティング広告に関する情報を特徴量としてモデルに入れたいと思いました。自分はリスティング広告に関する知識が全然なかったので、広告運用チームの方にリスティング広告に関する知識を教えてもらいました。そのおかげで、広告のキャンペーン、検索キーワード、表示位置などを特徴量としてモデルに入れてみました。検索キーワードを入れたら、精度が若干改善できました。
➂DS(データサイエンティスト)以外の方との交流
自分がモデル精度を改善した時に、最初にカテゴリ変数の加工(Label EncodingやTarget Encoding)やコロナ影響の考慮など色々試しましたが、精度が全然改善できませんでした。定例会でこの状況を話したら、広告運用チームの方とエンジニアチームの方から様々なアドバイスをもらいました。広告運用チームから現場に関する情報をたくさん教えてもらって、エンジニアチームの方からデータがどのように発生されて、どのようにデータベースに貯めているか教えてもらいました。教えてもらった情報からモデル改善のアイデアが生まれて、DS以外の方との交流の大事さを改めて感じました。
SA360に予測結果を返す
モデルを作成した後に、予測結果をSA360に返す必要があります。予測結果を毎日SA360に返すので、SA360に予測結果を返すことを自動化する必要があります。そこでSA360APIの出番となります。
SA360APIには予測結果をアップロードしたり、コンバージョンに関するデータをダウンロードしたりとさまざまな活用法があります。SA360 APIの詳細の使い方について、 Search Ads 360 APIから参照できます。
SA360プロジェクトの本番運用
今回、SageMaker上で本番運用しました。全体的なイメージは以下の図のようです。毎日、BigQueryからデータを取得して、データを加工して、学習済みのモデルで予測して、予測結果をSA360に返しています。また、毎回抽出したデータ、加工後のデータ、予測結果をログとして、BigQueryに貯めています。
自分が推論時のソースコードを書きましたが、データエンジニアの方がSageMaker上にのせてくれました。SageMaker上の載せ方について、データエンジニアの方が今後ブログで公開する予定なので、その際はぜひご覧ください!
レバレジーズで半年働いた感想
レバレジーズに入社してからもう半年経ちました。この半年、事業会社でデータサイエンティストとして働いた感想を話したいと思います。
仕事が辛かったが、結構楽しかった
以前の会社で分析を行ったら、クライアントに報告するだけで終わります。本番運用・保守のタスクが全然なかったんです。自分の分析結果がどう使われるか分からなくて残念だなぁと思ったものの、その代わりに、自分の分析結果が利用されて悪い影響を与えたらどうしようという心配もあまりなかったんです。レバレジーズでモデルを作成したら、本番運用・保守までのタスクもやる必要があります。自分のモデルが運用されて、広告運用チームの方に結構悪い影響を与えたらどうしようと心配していました。そのため、良いモデルを作成するために、本当に頑張っていました。自分が作成したものに対して、ずっと責任を持たないといけません。でも、本番運用までのタスクをやり切れたのは最高でした。モデル精度の心配、リリースの期限など色々なプレッシャーがあって、辛かったなあ〜と感じましたが、本番運用された時に、結構やりがいを感じました。また、データエンジニアと一緒に開発して、エンジニアの仕事のやり方も勉強できて、楽しかったと思います。
分析の自由度が高い
レバレジーズで分析を行った時に、分析の自由度が高いと思っています。前職ではクライアントの意思を優先的に分析を行いましたが、レバレジーズでは、タスクの期限までに、自分の思いついたアイデアをすべて試すことができます。自分の思いついたアイデアを試すことは本当に楽しかったです。
おわりに
入社して初めて担当した仕事はSA360を用いた運用型広告の最適化でよかったと思います。データ加工からモデル作成、本番運用までのタスクが全部やれて、本当にいい経験でした。